Implementation notes: amd64, trident, crypto_kem/ntskem1264

Computer: trident
Microarchitecture: amd64; Core 2 65nm (6fb)
Architecture: amd64
CPU ID: GenuineIntel-000006fb-bfebfbff
SUPERCOP version: 20240107
Operation: crypto_kem
Primitive: ntskem1264
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
903331128892 6228 16147306 7092 1720T:sse2clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
908803128976 6228 16147226 7092 1720T:sse2clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
94146083222 6228 16100650 7092 1720T:sse2clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
99145164795 6228 1680360 7084 1720T:sse2clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
1204942120685 6228 16140602 7092 1720T:optclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
121156880363 6228 1699290 7092 1720T:optclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
121362077223 6228 1693544 7084 1720T:sse2clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
121741487448 6228 16107210 7076 1784T:optgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024010420231212
1220267121580 6228 16141306 7092 1720T:optclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
125507055851 6228 1674690 7076 1784T:optgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024010420231212
125784458871 6228 1675968 7084 1720T:optclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
132410754056 6228 1672274 7076 1784T:optgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024010420231212
145008072127 6228 1690032 7084 1720T:optclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
170385249559 6228 1666401 7068 1752T:optgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024010420231212
989066047588 76 1667322 900 1784T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024010420231212
1027069841023 76 1661250 932 1720T:refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
1032794935234 76 1654378 932 1720T:refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
1062655924778 76 1643562 900 1784T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024010420231212
1068619223807 76 1641688 924 1720T:refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
1087480641366 76 1661362 932 1720T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
1123049822195 76 1640338 900 1784T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024010420231212
1149298321828 76 1638960 924 1720T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010420231212
1161971019173 76 1636057 892 1752T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024010420231212

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
bitslice_fft_256.c: bitslice_fft_256.c:87:25: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'bitslice_butterflies12_256' that is compiled without support for 'avx'
bitslice_fft_256.c: out[i][b] = _mm256_set_epi64x(-((in[0][b] >> reversal[4*i+3]) & 1),
bitslice_fft_256.c: ^
bitslice_fft_256.c: bitslice_fft_256.c:87:25: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
bitslice_fft_256.c: bitslice_fft_256.c:99:22: error: '__builtin_ia32_pshufd256' needs target feature avx2
bitslice_fft_256.c: vb = _mm256_shuffle_epi32(tmp[b], _MM_SHUFFLE(3, 2, 3, 2));
bitslice_fft_256.c: ^
bitslice_fft_256.c: /usr/lib/llvm-11/lib/clang/11.0.1/include/avx2intrin.h:470:12: note: expanded from macro '_mm256_shuffle_epi32'
bitslice_fft_256.c: (__m256i)__builtin_ia32_pshufd256((__v8si)(__m256i)(a), (int)(imm))
bitslice_fft_256.c: ^
bitslice_fft_256.c: bitslice_fft_256.c:100:22: error: '__builtin_ia32_pslldqi256_byteshift' needs target feature avx2
bitslice_fft_256.c: va = _mm256_slli_si256(out[k][b], 8);
bitslice_fft_256.c: ^
bitslice_fft_256.c: /usr/lib/llvm-11/lib/clang/11.0.1/include/avx2intrin.h:497:12: note: expanded from macro '_mm256_slli_si256'
bitslice_fft_256.c: (__m256i)__builtin_ia32_pslldqi256_byteshift((__v4di)(__m256i)(a), (int)(imm))
bitslice_fft_256.c: ^
bitslice_fft_256.c: bitslice_fft_256.c:101:22: error: always_inline function '_mm256_xor_si256' requires target feature 'avx2', but would be inlined into function 'bitslice_butterflies12_256' that is compiled without support for 'avx2'
bitslice_fft_256.c: vb = _mm256_xor_si256(va, vb);
bitslice_fft_256.c: ^
bitslice_fft_256.c: bitslice_fft_256.c:101:22: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
bitslice_fft_256.c: bitslice_fft_256.c:102:29: error: always_inline function '_mm256_xor_si256' requires target feature 'avx2', but would be inlined into function 'bitslice_butterflies12_256' that is compiled without support for 'avx2'
bitslice_fft_256.c: out[k][b] = _mm256_xor_si256(out[k][b], vb);
bitslice_fft_256.c: ^
bitslice_fft_256.c: bitslice_fft_256.c:102:29: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
bitslice_fft_256.c: bitslice_fft_256.c:112:22: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'bitslice_butterflies12_256' that is compiled without support for 'avx'
bitslice_fft_256.c: ...

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

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
bitslice_fft_256.c: bitslice_fft_256.c: In function 'bitslice_butterflies12_256':
bitslice_fft_256.c: bitslice_fft_256.c:87:23: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
bitslice_fft_256.c: 87 | out[i][b] = _mm256_set_epi64x(-((in[0][b] >> reversal[4*i+3]) & 1),
bitslice_fft_256.c: | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitslice_fft_256.c: 88 | -((in[0][b] >> reversal[4*i+2]) & 1),
bitslice_fft_256.c: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitslice_fft_256.c: 89 | -((in[0][b] >> reversal[4*i+1]) & 1),
bitslice_fft_256.c: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitslice_fft_256.c: 90 | -((in[0][b] >> reversal[4*i+0]) & 1));
bitslice_fft_256.c: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitslice_fft_256.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:51,
bitslice_fft_256.c: from bitslice_fft_256.h:21,
bitslice_fft_256.c: from bitslice_fft_256.c:18:
bitslice_fft_256.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/avxintrin.h:1296:1: error: inlining failed in call to 'always_inline' '_mm256_set_epi64x': target specific option mismatch
bitslice_fft_256.c: 1296 | _mm256_set_epi64x (long long __A, long long __B, long long __C,
bitslice_fft_256.c: | ^~~~~~~~~~~~~~~~~
bitslice_fft_256.c: bitslice_fft_256.c:87:25: note: called from here
bitslice_fft_256.c: 87 | out[i][b] = _mm256_set_epi64x(-((in[0][b] >> reversal[4*i+3]) & 1),
bitslice_fft_256.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitslice_fft_256.c: 88 | -((in[0][b] >> reversal[4*i+2]) & 1),
bitslice_fft_256.c: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitslice_fft_256.c: 89 | -((in[0][b] >> reversal[4*i+1]) & 1),
bitslice_fft_256.c: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitslice_fft_256.c: 90 | -((in[0][b] >> reversal[4*i+0]) & 1));
bitslice_fft_256.c: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitslice_fft_256.c: ...

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

Compiler output

Implementation: T:sse2
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
nts_kem.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:37,
nts_kem.c: from ff.h:18,
nts_kem.c: from nts_kem.c:18:
nts_kem.c: nts_kem.c: In function 'create_matrix_G':
nts_kem.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/smmintrin.h:454:1: error: inlining failed in call to 'always_inline' '_mm_extract_epi64': target specific option mismatch
nts_kem.c: 454 | _mm_extract_epi64 (__m128i __X, const int __N)
nts_kem.c: | ^~~~~~~~~~~~~~~~~
nts_kem.c: nts_kem.c:859:22: note: called from here
nts_kem.c: 859 | v[i >> 6] |= (((_mm_extract_epi64(vh[l >> 7][j], 1) & (1ULL << (l & 63))) >> (l & 63)) << (i & 63));
nts_kem.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nts_kem.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:37,
nts_kem.c: from ff.h:18,
nts_kem.c: from nts_kem.c:18:
nts_kem.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/smmintrin.h:454:1: error: inlining failed in call to 'always_inline' '_mm_extract_epi64': target specific option mismatch
nts_kem.c: 454 | _mm_extract_epi64 (__m128i __X, const int __N)
nts_kem.c: | ^~~~~~~~~~~~~~~~~
nts_kem.c: nts_kem.c:862:22: note: called from here
nts_kem.c: 862 | v[i >> 6] |= (((_mm_extract_epi64(vh[l >> 7][j], 0) & (1ULL << (l & 63))) >> (l & 63)) << (i & 63));
nts_kem.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nts_kem.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:37,
nts_kem.c: from ff.h:18,
nts_kem.c: from nts_kem.c:18:
nts_kem.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/smmintrin.h:454:1: error: inlining failed in call to 'always_inline' '_mm_extract_epi64': target specific option mismatch
nts_kem.c: 454 | _mm_extract_epi64 (__m128i __X, const int __N)
nts_kem.c: | ^~~~~~~~~~~~~~~~~
nts_kem.c: ...

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