Implementation notes: amd64, cherry, crypto_kem/ntskem1264

Computer: cherry
Microarchitecture: amd64; Silvermont (406c4)
Architecture: amd64
CPU ID: GenuineIntel-000406c4-bfebfbff
SUPERCOP version: 20240107
Operation: crypto_kem
Primitive: ntskem1264
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
134583578698 6228 1695818 7092 1720T:sse2clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
138386291328 6228 16109538 7076 1784T:sse2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
143049977055 6228 1693432 7084 1720T:sse2clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
143982962040 6228 1678586 7076 1784T:sse2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
145688098534 6228 16118754 7092 1720T:optclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
1463567103777 6228 16122498 7092 1720T:sse2clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
148311063638 6228 1679240 7084 1720T:sse2clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
151098163800 6228 1680786 7076 1784T:sse2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
156743954608 6228 1670097 7068 1752T:sse2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
157390284490 6228 16104314 7076 1784T:optgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
1585282128976 6228 16147186 7092 1720T:sse2clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
162550355174 6228 1673338 7076 1784T:optgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
164249756912 6228 1675594 7076 1784T:optgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
1737252121580 6228 16141330 7092 1720T:optclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
185032377047 6228 1695594 7092 1720T:optclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
191264858834 6228 1675912 7084 1720T:optclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
201910449150 6228 1666081 7068 1752T:optgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
223580872214 6228 1690192 7084 1720T:optclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
1420873533379 76 1652162 932 1720T:refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
1432928635598 76 1656042 932 1720T:refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
1587778641366 76 1661386 932 1720T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
1643234148659 76 1668450 900 1784T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
1682700121800 76 1638904 924 1720T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
1804618726154 76 1644834 900 1784T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
1845504724057 76 1641976 924 1720T:refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122320231212
1901789123439 76 1641554 900 1784T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212
1982409319084 76 1635953 892 1752T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023122320231212

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