Implementation notes: amd64, saber214, crypto_kem/titaniumccatoy

Computer: saber214
Architecture: amd64
CPU ID: AuthenticAMD-00600f20-178bfbff
SUPERCOP version: 20210423
Operation: crypto_kem
Primitive: titaniumccatoy
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
435896581277 0 0191455 828 1800T:optgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021013020210114
455135966512 0 0176030 828 1752T:optclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021013020210114
468778174768 0 0185270 828 1752T:optclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021013020210114
469261147777 0 0156758 828 1752T:optclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021013020210114
469577247777 0 0156758 828 1752T:optclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021013020210114
477726635988 0 0144159 828 1800T:optgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021013020210114
478447833437 0 0140036 820 1752T:optclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021013020210114
502024835677 0 0143703 828 1800T:optgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021013020210114
29091816160326 0 0169870 828 1752T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021013020210114
293760640102201 0 0212806 828 1752T:refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021013020210114
29492556536347 0 0145382 828 1752T:refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021013020210114
29499585536347 0 0145382 828 1752T:refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021013020210114
30272609625525 0 0131972 820 1752T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021013020210114
33493170924646 0 0132703 828 1800T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021013020210114
34266286149616 0 0159791 828 1800T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021013020210114
40257219424878 0 0132767 828 1800T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021013020210114

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
encrypt.c: encrypt.c:70:8: error: always_inline function '_mm256_mul_epu32' requires target feature 'avx2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'avx2'
encrypt.c: t = _mm256_mul_epu32(u, v);
encrypt.c: ^
encrypt.c: encrypt.c:85:8: error: always_inline function '_mm256_add_epi64' requires target feature 'avx2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'avx2'
encrypt.c: t = _mm256_add_epi64(u, v);
encrypt.c: ^
encrypt.c: encrypt.c:86:9: error: always_inline function '_mm256_mul_epu32' requires target feature 'avx2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'avx2'
encrypt.c: t1 = _mm256_mul_epu32(t, V_B4Q_B4Q_B4Q_B4Q);
encrypt.c: ^
encrypt.c: encrypt.c:87:9: error: always_inline function '_mm256_srli_epi64' requires target feature 'avx2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'avx2'
encrypt.c: t1 = _mm256_srli_epi64(t1, BARRETT_BITSHIFT_4Q);
encrypt.c: ^
encrypt.c: encrypt.c:88:9: error: always_inline function '_mm256_mul_epu32' requires target feature 'avx2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'avx2'
encrypt.c: t1 = _mm256_mul_epu32(t1, V_Q_Q_Q_Q);
encrypt.c: ^
encrypt.c: encrypt.c:89:8: error: always_inline function '_mm256_sub_epi64' requires target feature 'avx2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'avx2'
encrypt.c: t = _mm256_sub_epi64(t, t1);
encrypt.c: ^
encrypt.c: 6 errors generated.

Number of similar (compiler,implementation) pairs: 4, 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

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
encrypt.c: encrypt.c:68:8: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'sse4.2'
encrypt.c: u = _mm256_loadu_si256((__m256i *)(a[i] + j));
encrypt.c: ^
encrypt.c: encrypt.c:69:8: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'sse4.2'
encrypt.c: v = _mm256_loadu_si256((__m256i *)(s + j));
encrypt.c: ^
encrypt.c: encrypt.c:70:8: error: always_inline function '_mm256_mul_epu32' requires target feature 'avx2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'avx2'
encrypt.c: t = _mm256_mul_epu32(u, v);
encrypt.c: ^
encrypt.c: encrypt.c:71:4: error: always_inline function '_mm256_storeu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'sse4.2'
encrypt.c: _mm256_storeu_si256((__m256i *)(a[i] + j), t);
encrypt.c: ^
encrypt.c: encrypt.c:83:8: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'sse4.2'
encrypt.c: u = _mm256_loadu_si256((__m256i *)(a[i] + j));
encrypt.c: ^
encrypt.c: encrypt.c:84:8: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'sse4.2'
encrypt.c: v = _mm256_loadu_si256((__m256i *)(e[i] + j));
encrypt.c: ^
encrypt.c: encrypt.c:85:8: error: always_inline function '_mm256_add_epi64' requires target feature 'avx2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'avx2'
encrypt.c: t = _mm256_add_epi64(u, v);
encrypt.c: ^
encrypt.c: encrypt.c:86:9: error: always_inline function '_mm256_mul_epu32' requires target feature 'avx2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'avx2'
encrypt.c: t1 = _mm256_mul_epu32(t, V_B4Q_B4Q_B4Q_B4Q);
encrypt.c: ^
encrypt.c: encrypt.c:87:9: error: always_inline function '_mm256_srli_epi64' requires target feature 'avx2', but would be inlined into function 'crypto_encrypt_keypair' that is compiled without support for 'avx2'
encrypt.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
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
encrypt.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
encrypt.c: from /usr/lib/gcc/x86_64-linux-gnu/7/include/x86intrin.h:48,
encrypt.c: from encrypt.c:18:
encrypt.c: encrypt.c: In function 'crypto_encrypt_keypair':
encrypt.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avx2intrin.h:567:1: error: inlining failed in call to always_inline '_mm256_mul_epu32': target specific option mismatch
encrypt.c: _mm256_mul_epu32 (__m256i __A, __m256i __B)
encrypt.c: ^~~~~~~~~~~~~~~~
encrypt.c: encrypt.c:70:6: note: called from here
encrypt.c: t = _mm256_mul_epu32(u, v);
encrypt.c: ~~^~~~~~~~~~~~~~~~~~~~~~~~
encrypt.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
encrypt.c: from /usr/lib/gcc/x86_64-linux-gnu/7/include/x86intrin.h:48,
encrypt.c: from encrypt.c:18:
encrypt.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avx2intrin.h:567:1: error: inlining failed in call to always_inline '_mm256_mul_epu32': target specific option mismatch
encrypt.c: _mm256_mul_epu32 (__m256i __A, __m256i __B)
encrypt.c: ^~~~~~~~~~~~~~~~
encrypt.c: encrypt.c:70:6: note: called from here
encrypt.c: t = _mm256_mul_epu32(u, v);
encrypt.c: ~~^~~~~~~~~~~~~~~~~~~~~~~~
encrypt.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
encrypt.c: from /usr/lib/gcc/x86_64-linux-gnu/7/include/x86intrin.h:48,
encrypt.c: from encrypt.c:18:
encrypt.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avx2intrin.h:822:1: error: inlining failed in call to always_inline '_mm256_sub_epi64': target specific option mismatch
encrypt.c: _mm256_sub_epi64 (__m256i __A, __m256i __B)
encrypt.c: ^~~~~~~~~~~~~~~~
encrypt.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:opt
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_kem_titaniumccatoy.a(encrypt.o): In function `crypto_encrypt_keypair':
try.c: encrypt.c:(.text+0x...): undefined reference to `barrett_4q2'
try.c: encrypt.c:(.text+0x...): undefined reference to `barrett_4q'
try.c: crypto_kem_titaniumccatoy.a(encrypt.o): In function `crypto_encrypt':
try.c: encrypt.c:(.text+0x...): undefined reference to `barrett_4q2'
try.c: encrypt.c:(.text+0x...): undefined reference to `barrett_4q2'
try.c: crypto_kem_titaniumccatoy.a(encrypt.o): In function `crypto_encrypt_open':
try.c: encrypt.c:(.text+0x...): undefined reference to `barrett_4q2'
try.c: crypto_kem_titaniumccatoy.a(fastrandombytes.o): In function `fastrandombytes':
try.c: fastrandombytes.c:(.text+0x...): undefined reference to `load_32'
try.c: fastrandombytes.c:(.text+0x...): undefined reference to `store_32'
try.c: crypto_kem_titaniumccatoy.a(ntt.o): In function `ntt_butterfly_768_1280':
try.c: ntt.c:(.text+0x...): undefined reference to `barrett_8q'
try.c: crypto_kem_titaniumccatoy.a(ntt.o): In function `ntt_butterfly_1280_512':
try.c: ntt.c:(.text+0x...): undefined reference to `barrett_16q'
try.c: crypto_kem_titaniumccatoy.a(ntt.o): In function `ntt_butterfly_768_1024':
try.c: ntt.c:(.text+0x...): undefined reference to `barrett_8q'
try.c: crypto_kem_titaniumccatoy.a(ntt.o): In function `ntt_butterfly_1024_1024_inv':
try.c: ntt.c:(.text+0x...): undefined reference to `barrett_8q'
try.c: crypto_kem_titaniumccatoy.a(ntt.o): In function `ntt_butterfly_512_512_inv':
try.c: ntt.c:(.text+0x...): undefined reference to `barrett_4q'
try.c: ntt.c:(.text+0x...): undefined reference to `barrett_4q'
try.c: crypto_kem_titaniumccatoy.a(ntt.o): In function `ntt_butterfly_512_256':
try.c: ntt.c:(.text+0x...): undefined reference to `barrett_4q'
try.c: crypto_kem_titaniumccatoy.a(ntt.o): In function `ntt_butterfly_1024_1280':
try.c: ...

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

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_kem_titaniumccatoy.a(fastrandombytes.o): In function `fastrandombytes':
try.c: fastrandombytes.c:(.text+0x...): undefined reference to `load_32'
try.c: fastrandombytes.c:(.text+0x...): undefined reference to `store_32'
try.c: crypto_kem_titaniumccatoy.a(sampler.o): In function `sampler_zq':
try.c: sampler.c:(.text+0x...): undefined reference to `load_24'
try.c: collect2: error: ld returned 1 exit status

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

Namespace violations

Implementation: T:opt
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
encrypt.o crypto_encrypt T
encrypt.o crypto_encrypt_keypair T
encrypt.o crypto_encrypt_open T
fastrandombytes.o fastrandombytes T
fastrandombytes.o fastrandombytes_setseed T
fastrandombytes.o iv C
fastrandombytes.o key C
ntt.o intt_1024_1024_inv T
ntt.o intt_1280_256 T
ntt.o intt_1280_512 T
ntt.o intt_512_256 T
ntt.o ntt_1024_1280 T
ntt.o ntt_256_1024 T
ntt.o ntt_512_512_inv T
ntt.o ntt_768_1024 T
ntt.o ntt_768_1280 T
pack.o poly_decode T
pack.o poly_decode_c2 T
pack.o poly_encode T
pack.o poly_encode_c2 T
sampler.o sampler_binomial T
sampler.o sampler_zb T
sampler.o sampler_zq T

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

Namespace violations

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
encrypt.o crypto_encrypt T
encrypt.o crypto_encrypt_keypair T
encrypt.o crypto_encrypt_open T
fastrandombytes.o fastrandombytes T
fastrandombytes.o fastrandombytes_setseed T
fastrandombytes.o iv C
fastrandombytes.o key C
ntt.o intt_1024_1024_inv T
ntt.o intt_1280_1280 T
ntt.o intt_512_512 T
ntt.o ntt_1024_1024 T
ntt.o ntt_512_512_inv T
pack.o poly_decode T
pack.o poly_decode_c2 T
pack.o poly_encode T
pack.o poly_encode_c2 T
product.o mp T
product.o product T
sampler.o sampler_binomial T
sampler.o sampler_zb T
sampler.o sampler_zq T

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