Implementation notes: amd64, margaux, crypto_kem/mceliece460896

Computer: margaux
Architecture: amd64
CPU ID: GenuineIntel-000006fb-bfebfbff
SUPERCOP version: 20210604
Operation: crypto_kem
Primitive: mceliece460896
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
2978325111214 0 0206190 876 1712T:vecclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
3021189110909 0 0206094 876 1712T:vecclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
319606079717 0 0173494 876 1712T:vecclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
323138979717 0 0173494 876 1712T:vecclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
333444054630 0 0146404 868 1712T:vecclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
355441252545 0 0144840 884 1712T:vecgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
355547268132 0 0161384 892 1744T:vecgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
373668666896 0 0160464 892 1744T:vecgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
27770000731985 0 0127166 876 1712T:refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
27779332132945 0 0127934 876 1712T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
27814316426829 0 0120630 876 1712T:refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
27816703326829 0 0120630 876 1712T:refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
30991016260621 0 0156306 900 1744T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
32821128612393 0 0104284 868 1712T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
36449880612035 0 0104296 884 1712T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
37199966715132 0 0108344 892 1744T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
37213072915153 0 0108720 892 1744T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423

Test failure

Implementation: T:vec
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE
error 111

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:vec

Compiler output

Implementation: T:avx
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
bm.c: bm.c:136:30: error: always_inline function '_mm256_extract_epi64' requires target feature 'xsave', but would be inlined into function 'get_coefs' that is compiled without support for 'xsave'
bm.c: out[ (4*0 + k)*16 + i ] = (vec256_extract(buf[i], 0) >> (k*16)) & GFMASK;
bm.c: ^
bm.c: ./vec256.h:41:41: note: expanded from macro 'vec256_extract'
bm.c: #define vec256_extract(a,i) ((uint64_t) _mm256_extract_epi64((vec256) (a),(i)))
bm.c: ^
bm.c: bm.c:137:30: error: always_inline function '_mm256_extract_epi64' requires target feature 'xsave', but would be inlined into function 'get_coefs' that is compiled without support for 'xsave'
bm.c: out[ (4*1 + k)*16 + i ] = (vec256_extract(buf[i], 1) >> (k*16)) & GFMASK;
bm.c: ^
bm.c: ./vec256.h:41:41: note: expanded from macro 'vec256_extract'
bm.c: #define vec256_extract(a,i) ((uint64_t) _mm256_extract_epi64((vec256) (a),(i)))
bm.c: ^
bm.c: bm.c:138:30: error: always_inline function '_mm256_extract_epi64' requires target feature 'xsave', but would be inlined into function 'get_coefs' that is compiled without support for 'xsave'
bm.c: out[ (4*2 + k)*16 + i ] = (vec256_extract(buf[i], 2) >> (k*16)) & GFMASK;
bm.c: ^
bm.c: ./vec256.h:41:41: note: expanded from macro 'vec256_extract'
bm.c: #define vec256_extract(a,i) ((uint64_t) _mm256_extract_epi64((vec256) (a),(i)))
bm.c: ^
bm.c: bm.c:139:30: error: always_inline function '_mm256_extract_epi64' requires target feature 'xsave', but would be inlined into function 'get_coefs' that is compiled without support for 'xsave'
bm.c: out[ (4*3 + k)*16 + i ] = (vec256_extract(buf[i], 3) >> (k*16)) & GFMASK;
bm.c: ^
bm.c: ./vec256.h:41:41: note: expanded from macro 'vec256_extract'
bm.c: #define vec256_extract(a,i) ((uint64_t) _mm256_extract_epi64((vec256) (a),(i)))
bm.c: ^
bm.c: ./vec256.h:32:10: error: always_inline function '_mm256_setzero_si256' requires target feature 'xsave', but would be inlined into function 'vec256_setzero' that is compiled without support for 'xsave'
bm.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx

Compiler output

Implementation: T:avx
Security model: timingleaks
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
bm.c: bm.c:136:30: error: always_inline function '_mm256_extract_epi64' requires target feature 'sse4.2', but would be inlined into function 'get_coefs' that is compiled without support for 'sse4.2'
bm.c: out[ (4*0 + k)*16 + i ] = (vec256_extract(buf[i], 0) >> (k*16)) & GFMASK;
bm.c: ^
bm.c: ./vec256.h:41:41: note: expanded from macro 'vec256_extract'
bm.c: #define vec256_extract(a,i) ((uint64_t) _mm256_extract_epi64((vec256) (a),(i)))
bm.c: ^
bm.c: bm.c:137:30: error: always_inline function '_mm256_extract_epi64' requires target feature 'sse4.2', but would be inlined into function 'get_coefs' that is compiled without support for 'sse4.2'
bm.c: out[ (4*1 + k)*16 + i ] = (vec256_extract(buf[i], 1) >> (k*16)) & GFMASK;
bm.c: ^
bm.c: ./vec256.h:41:41: note: expanded from macro 'vec256_extract'
bm.c: #define vec256_extract(a,i) ((uint64_t) _mm256_extract_epi64((vec256) (a),(i)))
bm.c: ^
bm.c: bm.c:138:30: error: always_inline function '_mm256_extract_epi64' requires target feature 'sse4.2', but would be inlined into function 'get_coefs' that is compiled without support for 'sse4.2'
bm.c: out[ (4*2 + k)*16 + i ] = (vec256_extract(buf[i], 2) >> (k*16)) & GFMASK;
bm.c: ^
bm.c: ./vec256.h:41:41: note: expanded from macro 'vec256_extract'
bm.c: #define vec256_extract(a,i) ((uint64_t) _mm256_extract_epi64((vec256) (a),(i)))
bm.c: ^
bm.c: bm.c:139:30: error: always_inline function '_mm256_extract_epi64' requires target feature 'sse4.2', but would be inlined into function 'get_coefs' that is compiled without support for 'sse4.2'
bm.c: out[ (4*3 + k)*16 + i ] = (vec256_extract(buf[i], 3) >> (k*16)) & GFMASK;
bm.c: ^
bm.c: ./vec256.h:41:41: note: expanded from macro 'vec256_extract'
bm.c: #define vec256_extract(a,i) ((uint64_t) _mm256_extract_epi64((vec256) (a),(i)))
bm.c: ^
bm.c: ./vec256.h:32:10: error: always_inline function '_mm256_setzero_si256' requires target feature 'sse4.2', but would be inlined into function 'vec256_setzero' that is compiled without support for 'sse4.2'
bm.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx

Compiler output

Implementation: T:avx
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
benes.c: In file included from transpose.h:12:0,
benes.c: from benes.c:8:
benes.c: vec256.h: In function 'vec256_set1_16b':
benes.c: vec256.h:21:1: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
benes.c: {
benes.c: ^
bm.c: In file included from bm.h:11:0,
bm.c: from bm.c:10:
bm.c: vec256.h: In function 'vec256_set1_16b':
bm.c: vec256.h:21:1: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
bm.c: {
bm.c: ^
bm.c: vec256.h: In function 'vec256_and':
bm.c: vec256.h:48:22: note: The ABI for passing parameters with 32-byte alignment has changed in GCC 4.6
bm.c: static inline vec256 vec256_and(vec256 a, vec256 b)
bm.c: ^~~~~~~~~~
bm.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:41:0,
bm.c: from vec256.h:16,
bm.c: from bm.h:11,
bm.c: from bm.c:10:
bm.c: vec256.h: In function 'vec256_set1_16b':
bm.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avxintrin.h:1326:1: error: inlining failed in call to always_inline '_mm256_set1_epi16': target specific option mismatch
bm.c: _mm256_set1_epi16 (short __A)
bm.c: ^~~~~~~~~~~~~~~~~
bm.c: In file included from bm.h:11:0,
bm.c: from bm.c:10:
bm.c: vec256.h:22:9: note: called from here
bm.c: return _mm256_set1_epi16(a);
bm.c: ^~~~~~~~~~~~~~~~~~~~

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

Compiler output

Implementation: T:sse
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
decrypt.c: In file included from decrypt.c:8:
decrypt.c: In file included from ./fft_tr.h:10:
decrypt.c: ./vec128.h:40:9: error: always_inline function '_mm_testz_si128' requires target feature 'sse4.1', but would be inlined into function 'vec128_testz' that is compiled without support for 'sse4.1'
decrypt.c: return _mm_testz_si128(a, a);
decrypt.c: ^
decrypt.c: 1 error generated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:sse
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:sse
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:sse
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:sse

Compiler output

Implementation: T:sse
Security model: timingleaks
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
decrypt.c: In file included from decrypt.c:8:
decrypt.c: In file included from ./fft_tr.h:10:
decrypt.c: ./vec128.h:40:9: error: always_inline function '_mm_testz_si128' requires target feature 'ssse3', but would be inlined into function 'vec128_testz' that is compiled without support for 'ssse3'
decrypt.c: return _mm_testz_si128(a, a);
decrypt.c: ^
decrypt.c: 1 error generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:sse

Compiler output

Implementation: T:sse
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
bm.c: In file included from vec128.h:17:0,
bm.c: from bm.h:11,
bm.c: from bm.c:10:
bm.c: bm.c: In function 'get_coefs':
bm.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/smmintrin.h:454:1: error: inlining failed in call to always_inline '_mm_extract_epi64': target specific option mismatch
bm.c: _mm_extract_epi64 (__m128i __X, const int __N)
bm.c: ^~~~~~~~~~~~~~~~~
bm.c: In file included from bm.h:11:0,
bm.c: from bm.c:10:
bm.c: vec128.h:36:42: note: called from here
bm.c: #define vec128_extract(a, i) ((uint64_t) _mm_extract_epi64((vec128) (a), (i)))
bm.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bm.c: bm.c:133:30: note: in expansion of macro 'vec128_extract'
bm.c: out[ (4*1 + k)*16 + i ] = (vec128_extract(buf[i], 1) >> (k*16)) & GFMASK;
bm.c: ^~~~~~~~~~~~~~
bm.c: In file included from vec128.h:17:0,
bm.c: from bm.h:11,
bm.c: from bm.c:10:
bm.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/smmintrin.h:454:1: error: inlining failed in call to always_inline '_mm_extract_epi64': target specific option mismatch
bm.c: _mm_extract_epi64 (__m128i __X, const int __N)
bm.c: ^~~~~~~~~~~~~~~~~
bm.c: In file included from bm.h:11:0,
bm.c: from bm.c:10:
bm.c: vec128.h:36:42: note: called from here
bm.c: #define vec128_extract(a, i) ((uint64_t) _mm_extract_epi64((vec128) (a), (i)))
bm.c: ...

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