Implementation notes: amd64, bolero, crypto_kem/saberx4

Computer: bolero
Microarchitecture: amd64; Broadwell+AES (406f1)
Architecture: amd64
CPU ID: GenuineIntel-000406f1-1fc9cbf5
SUPERCOP version: 20240107
Operation: crypto_kem
Primitive: saberx4

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x0): multiple definition of `int45_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x140): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x20): multiple definition of `inv3_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0xe0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x40): multiple definition of `inv9_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x100): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x60): multiple definition of `int0_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x180): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x80): multiple definition of `int30_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x160): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0xa0): multiple definition of `inv15_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x120): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0xc0): multiple definition of `avx_epi64_01'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x1a0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0xe0): multiple definition of `avx_epi64_03'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x1c0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x100): multiple definition of `avx_epi64_07'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x1e0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x120): multiple definition of `avx_epi64_0f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x200): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x140): multiple definition of `avx_epi64_1f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x220): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x160): multiple definition of `avx_epi64_3f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x240): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x180): multiple definition of `avx_epi64_7f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x260): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x1a0): multiple definition of `avx_epi64_ff'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x280): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x1c0): multiple definition of `avx_epi32_01'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x2a0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x1e0): multiple definition of `avx_epi32_03'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x2c0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x200): multiple definition of `avx_epi32_07'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x2e0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x220): multiple definition of `avx_epi32_0f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x300): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x240): multiple definition of `avx_epi32_1f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x320): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x260): multiple definition of `avx_epi32_3f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x340): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x280): multiple definition of `avx_epi32_7f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x360): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x2a0): multiple definition of `avx_epi32_ff'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x380): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x2c0): multiple definition of `mask'; libcrypto_kem_saberx4.a(kem.o):(.bss+0xc0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x360): multiple definition of `clock_mul'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x368): multiple definition of `clock_matrix'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x8): first defined here
try.c: ...

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
SABER_indcpa.c: In file included from SABER_indcpa.c:8:
SABER_indcpa.c: In file included from ././polymul/toom-cook_4way.c:6:
SABER_indcpa.c: ././polymul/scm_avx.c:40:13: warning: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI [-Wpsabi]
SABER_indcpa.c: c_avx[0] = mul_add(a0, b0, c_avx[0]);
SABER_indcpa.c: ^
SABER_indcpa.c: ././polymul/scm_avx.c:43:9: error: always_inline function '_mm256_mullo_epi16' requires target feature 'avx2', but would be inlined into function 'schoolbook_avx_new3_acc' that is compiled without support for 'avx2'
SABER_indcpa.c: temp = _mm256_mullo_epi16 (a0, b1);
SABER_indcpa.c: ^
SABER_indcpa.c: ././polymul/scm_avx.c:43:9: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
SABER_indcpa.c: ././polymul/scm_avx.c:44:7: warning: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI [-Wpsabi]
SABER_indcpa.c: temp=mul_add(a1, b0, temp);
SABER_indcpa.c: ^
SABER_indcpa.c: ././polymul/scm_avx.c:45:13: error: always_inline function '_mm256_add_epi16' requires target feature 'avx2', but would be inlined into function 'schoolbook_avx_new3_acc' that is compiled without support for 'avx2'
SABER_indcpa.c: c_avx[1] = _mm256_add_epi16(temp, c_avx[1]);
SABER_indcpa.c: ^
SABER_indcpa.c: ././polymul/scm_avx.c:45:13: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
SABER_indcpa.c: ././polymul/scm_avx.c:48:9: error: always_inline function '_mm256_mullo_epi16' requires target feature 'avx2', but would be inlined into function 'schoolbook_avx_new3_acc' that is compiled without support for 'avx2'
SABER_indcpa.c: temp = _mm256_mullo_epi16 (a0, b2);
SABER_indcpa.c: ^
SABER_indcpa.c: ././polymul/scm_avx.c:48:9: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
SABER_indcpa.c: ././polymul/scm_avx.c:49:9: warning: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI [-Wpsabi]
SABER_indcpa.c: temp = mul_add(a1, b1, temp);
SABER_indcpa.c: ^
SABER_indcpa.c: ././polymul/scm_avx.c:50:7: warning: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI [-Wpsabi]
SABER_indcpa.c: temp=mul_add(a2, b0, temp);
SABER_indcpa.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
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x2c0): multiple definition of `int45_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x240): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x320): multiple definition of `inv3_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x2a0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x300): multiple definition of `inv9_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x280): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x280): multiple definition of `int0_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x200): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x2a0): multiple definition of `int30_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x220): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x2e0): multiple definition of `inv15_avx'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x260): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x260): multiple definition of `avx_epi64_01'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x1e0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x240): multiple definition of `avx_epi64_03'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x1c0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x220): multiple definition of `avx_epi64_07'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x1a0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x200): multiple definition of `avx_epi64_0f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x180): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x1e0): multiple definition of `avx_epi64_1f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x160): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x1c0): multiple definition of `avx_epi64_3f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x140): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x1a0): multiple definition of `avx_epi64_7f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x120): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x180): multiple definition of `avx_epi64_ff'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x100): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x160): multiple definition of `avx_epi32_01'; libcrypto_kem_saberx4.a(kem.o):(.bss+0xe0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x140): multiple definition of `avx_epi32_03'; libcrypto_kem_saberx4.a(kem.o):(.bss+0xc0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x120): multiple definition of `avx_epi32_07'; libcrypto_kem_saberx4.a(kem.o):(.bss+0xa0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x100): multiple definition of `avx_epi32_0f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x80): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0xe0): multiple definition of `avx_epi32_1f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x60): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0xc0): multiple definition of `avx_epi32_3f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x40): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0xa0): multiple definition of `avx_epi32_7f'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x20): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x80): multiple definition of `avx_epi32_ff'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x340): multiple definition of `mask'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x2c0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x360): multiple definition of `clock2'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x2e0): first defined here
try.c: /usr/bin/ld: libcrypto_kem_saberx4.a(SABER_indcpa.o):(.bss+0x368): multiple definition of `clock1'; libcrypto_kem_saberx4.a(kem.o):(.bss+0x2e8): first defined here
try.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