Implementation notes: amd64, waldorf, crypto_scalarmult/kummer

Computer: waldorf
Architecture: amd64
CPU ID: GenuineIntel-000106e5-bfebfbff
SUPERCOP version: 20160715
Operation: crypto_scalarmult
Primitive: kummer
TimeImplementationCompilerBenchmark dateSUPERCOP version
2220192ref5gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
2261180ref5gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
2263856ref5ugcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
2269796ref5clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
2303024ref5uclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
2314268ref5ugcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
2437932ref5gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
2491588ref5gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
2524452ref5ugcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
2707700ref5ugcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715

Test failure

Implementation: crypto_scalarmult/kummer/avx
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
error 111

Number of similar (compiler,implementation) pairs: 10, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx avx2
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv avx avx2
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv avx avx2
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv avx avx2
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv avx avx2

Compiler output

Implementation: crypto_scalarmult/kummer/avx2int
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
smult.c: In file included from smult.c:3:
smult.c: ./gfe4x.h:7:9: error: unknown type name '__m256i'
smult.c: typedef __m256i vec;
smult.c: ^
smult.c: smult.c:6:38: warning: excess elements in scalar initializer
smult.c: static const vec mask25 = {0x1ffffff,0x1ffffff,0x1ffffff,0x1ffffff};
smult.c: ^~~~~~~~~
smult.c: smult.c:7:38: warning: excess elements in scalar initializer
smult.c: static const vec mask26 = {0x3ffffff,0x3ffffff,0x3ffffff,0x3ffffff};
smult.c: ^~~~~~~~~
smult.c: smult.c:36:8: warning: implicit declaration of function '_mm256_mul_epi32' is invalid in C99 [-Wimplicit-function-declaration]
smult.c: t0 = _mm256_mul_epi32(a->gt;v[0],*b);
smult.c: ^
smult.c: smult.c:38:10: warning: implicit declaration of function '_mm256_add_epi64' is invalid in C99 [-Wimplicit-function-declaration]
smult.c: t1 = _mm256_add_epi64(t1,_mm256_srli_epi64(t0,26)); t0 &= mask26;
smult.c: ^
smult.c: smult.c:38:30: warning: implicit declaration of function '_mm256_srli_epi64' is invalid in C99 [-Wimplicit-function-declaration]
smult.c: t1 = _mm256_add_epi64(t1,_mm256_srli_epi64(t0,26)); t0 &= mask26;
smult.c: ^
smult.c: smult.c:68:12: warning: implicit declaration of function '_mm256_mul_epu32' is invalid in C99 [-Wimplicit-function-declaration]
smult.c: a0b0 = _mm256_mul_epu32(a0,b0);
smult.c: ^
smult.c: smult.c:304:3: warning: excess elements in scalar initializer
smult.c: init(0xffffffc+1,0xffffffc+1,0xffffffc+2,0xffffffc+2,0xffffffc+2,0xffffffc+2,0xffffffc+1,0xffffffc+1)
smult.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
smult.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx2int

Compiler output

Implementation: crypto_scalarmult/kummer/avx2int
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
smult.c: smult.c: In function 'gfe4x_mulconst':
smult.c: smult.c:36:6: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
smult.c: t0 = _mm256_mul_epi32(a->gt;v[0],*b);
smult.c: ^
smult.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0,
smult.c: from gfe4x.h:5,
smult.c: from smult.c:3:
smult.c: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avx2intrin.h:527:1: error: inlining failed in call to always_inline '_mm256_mul_epi32': target specific option mismatch
smult.c: _mm256_mul_epi32 (__m256i __X, __m256i __Y)
smult.c: ^
smult.c: smult.c:36:6: error: called from here
smult.c: t0 = _mm256_mul_epi32(a->gt;v[0],*b);
smult.c: ^
smult.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0,
smult.c: from gfe4x.h:5,
smult.c: from smult.c:3:
smult.c: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avx2intrin.h:527:1: error: inlining failed in call to always_inline '_mm256_mul_epi32': target specific option mismatch
smult.c: _mm256_mul_epi32 (__m256i __X, __m256i __Y)
smult.c: ^
smult.c: smult.c:37:6: error: called from here
smult.c: t1 = _mm256_mul_epi32(a->gt;v[1],*b);
smult.c: ^
smult.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0,
smult.c: from gfe4x.h:5,
smult.c: from smult.c:3:
smult.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv avx2int
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv avx2int
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv avx2int
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv avx2int