Implementation notes: amd64, wolfdale, crypto_kem/ntruhps2048509

Computer: wolfdale
Microarchitecture: amd64; Core 2 45nm (1067a)
Architecture: amd64
CPU ID: GenuineIntel-0001067a-bfebfbff
SUPERCOP version: 20240107
Operation: crypto_kem
Primitive: ntruhps2048509
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
170754530289 0 0122856 820 1720T:compactclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010720240107
171774530289 0 0128864 820 1720compactclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010720240107
172854443797 0 0143136 820 1720compactclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010720240107
175941643797 0 0137192 820 1720T:compactclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010720240107
200224739631 0 0132792 820 1720T:compactclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010720240107
201035439631 0 0138800 820 1720compactclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010720240107
54005686146 0 096694 812 1720T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122820231212
540737926246 0 0119824 820 1720T:refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122820231212
540980216456 0 0109168 820 1720T:refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122820231212
54303306146 0 0102702 812 1720refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122820231212
543595526246 0 0125768 820 1720refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122820231212
544867716456 0 0115176 820 1720refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122820231212
555737024880 0 0118200 820 1720T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122820231212
559954524880 0 0124144 820 1720refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122820231212
57077774743 0 095398 812 1720T:compactclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010720240107
57450514743 0 0101406 812 1720compactclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010720240107
65244326927 0 098134 812 1720T:refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122820231212
65538326927 0 0104158 812 1720refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023122820231212
68311745808 0 097166 812 1720T:compactclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010720240107
68681445808 0 0103190 812 1720compactclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024010720240107

Compiler output

Implementation: avx2
Security model: constbranchindex
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
poly_r2_inv.c: poly_r2_inv.c:19:14: error: always_inline function '_pext_u64' requires target feature 'bmi2', but would be inlined into function 'crypto_kem_ntruhps2048509_avx2_constbranchindex_poly_R2_tobytes' that is compiled without support for 'bmi2'
poly_r2_inv.c: out[i] = _pext_u64(coeff_pointer[2*i], 0x1000100010001);
poly_r2_inv.c: ^
poly_r2_inv.c: poly_r2_inv.c:20:15: error: always_inline function '_pext_u64' requires target feature 'bmi2', but would be inlined into function 'crypto_kem_ntruhps2048509_avx2_constbranchindex_poly_R2_tobytes' that is compiled without support for 'bmi2'
poly_r2_inv.c: out[i] |= _pext_u64(coeff_pointer[2*i+1], 0x1000100010001) << 4;
poly_r2_inv.c: ^
poly_r2_inv.c: poly_r2_inv.c:22:12: error: always_inline function '_pext_u64' requires target feature 'bmi2', but would be inlined into function 'crypto_kem_ntruhps2048509_avx2_constbranchindex_poly_R2_tobytes' that is compiled without support for 'bmi2'
poly_r2_inv.c: out[i] = _pext_u64(coeff_pointer[2*63], 0x1000100010001);
poly_r2_inv.c: ^
poly_r2_inv.c: poly_r2_inv.c:23:13: error: always_inline function '_pext_u64' requires target feature 'bmi2', but would be inlined into function 'crypto_kem_ntruhps2048509_avx2_constbranchindex_poly_R2_tobytes' that is compiled without support for 'bmi2'
poly_r2_inv.c: out[i] |= _pext_u64(coeff_pointer[2*63+1], 0x1) << 4;
poly_r2_inv.c: ^
poly_r2_inv.c: 4 errors generated.

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

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
poly_r2_inv.c: poly_r2_inv.c:19:14: error: always_inline function '_pext_u64' requires target feature 'bmi2', but would be inlined into function 'crypto_kem_ntruhps2048509_avx2_timingleaks_poly_R2_tobytes' that is compiled without support for 'bmi2'
poly_r2_inv.c: out[i] = _pext_u64(coeff_pointer[2*i], 0x1000100010001);
poly_r2_inv.c: ^
poly_r2_inv.c: poly_r2_inv.c:20:15: error: always_inline function '_pext_u64' requires target feature 'bmi2', but would be inlined into function 'crypto_kem_ntruhps2048509_avx2_timingleaks_poly_R2_tobytes' that is compiled without support for 'bmi2'
poly_r2_inv.c: out[i] |= _pext_u64(coeff_pointer[2*i+1], 0x1000100010001) << 4;
poly_r2_inv.c: ^
poly_r2_inv.c: poly_r2_inv.c:22:12: error: always_inline function '_pext_u64' requires target feature 'bmi2', but would be inlined into function 'crypto_kem_ntruhps2048509_avx2_timingleaks_poly_R2_tobytes' that is compiled without support for 'bmi2'
poly_r2_inv.c: out[i] = _pext_u64(coeff_pointer[2*63], 0x1000100010001);
poly_r2_inv.c: ^
poly_r2_inv.c: poly_r2_inv.c:23:13: error: always_inline function '_pext_u64' requires target feature 'bmi2', but would be inlined into function 'crypto_kem_ntruhps2048509_avx2_timingleaks_poly_R2_tobytes' that is compiled without support for 'bmi2'
poly_r2_inv.c: out[i] |= _pext_u64(coeff_pointer[2*63+1], 0x1) << 4;
poly_r2_inv.c: ^
poly_r2_inv.c: 4 errors generated.

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: avx2
Security model: constbranchindex
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
poly_r2_inv.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:109,
poly_r2_inv.c: from poly_r2_inv.c:1:
poly_r2_inv.c: poly_r2_inv.c: In function 'crypto_kem_ntruhps2048509_avx2_constbranchindex_poly_R2_tobytes':
poly_r2_inv.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/bmi2intrin.h:76:1: error: inlining failed in call to 'always_inline' '_pext_u64': target specific option mismatch
poly_r2_inv.c: 76 | _pext_u64 (unsigned long long __X, unsigned long long __Y)
poly_r2_inv.c: | ^~~~~~~~~
poly_r2_inv.c: poly_r2_inv.c:20:15: note: called from here
poly_r2_inv.c: 20 | out[i] |= _pext_u64(coeff_pointer[2*i+1], 0x1000100010001) << 4;
poly_r2_inv.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
poly_r2_inv.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:109,
poly_r2_inv.c: from poly_r2_inv.c:1:
poly_r2_inv.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/bmi2intrin.h:76:1: error: inlining failed in call to 'always_inline' '_pext_u64': target specific option mismatch
poly_r2_inv.c: 76 | _pext_u64 (unsigned long long __X, unsigned long long __Y)
poly_r2_inv.c: | ^~~~~~~~~
poly_r2_inv.c: poly_r2_inv.c:19:14: note: called from here
poly_r2_inv.c: 19 | out[i] = _pext_u64(coeff_pointer[2*i], 0x1000100010001);
poly_r2_inv.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
poly_r2_inv.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:109,
poly_r2_inv.c: from poly_r2_inv.c:1:
poly_r2_inv.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/bmi2intrin.h:76:1: error: inlining failed in call to 'always_inline' '_pext_u64': target specific option mismatch
poly_r2_inv.c: 76 | _pext_u64 (unsigned long long __X, unsigned long long __Y)
poly_r2_inv.c: | ^~~~~~~~~
poly_r2_inv.c: poly_r2_inv.c:23:13: note: called from here
poly_r2_inv.c: 23 | out[i] |= _pext_u64(coeff_pointer[2*63+1], 0x1) << 4;
poly_r2_inv.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
poly_r2_inv.c: ...

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

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
poly_r2_inv.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:109,
poly_r2_inv.c: from poly_r2_inv.c:1:
poly_r2_inv.c: poly_r2_inv.c: In function 'crypto_kem_ntruhps2048509_avx2_timingleaks_poly_R2_tobytes':
poly_r2_inv.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/bmi2intrin.h:76:1: error: inlining failed in call to 'always_inline' '_pext_u64': target specific option mismatch
poly_r2_inv.c: 76 | _pext_u64 (unsigned long long __X, unsigned long long __Y)
poly_r2_inv.c: | ^~~~~~~~~
poly_r2_inv.c: poly_r2_inv.c:20:15: note: called from here
poly_r2_inv.c: 20 | out[i] |= _pext_u64(coeff_pointer[2*i+1], 0x1000100010001) << 4;
poly_r2_inv.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
poly_r2_inv.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:109,
poly_r2_inv.c: from poly_r2_inv.c:1:
poly_r2_inv.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/bmi2intrin.h:76:1: error: inlining failed in call to 'always_inline' '_pext_u64': target specific option mismatch
poly_r2_inv.c: 76 | _pext_u64 (unsigned long long __X, unsigned long long __Y)
poly_r2_inv.c: | ^~~~~~~~~
poly_r2_inv.c: poly_r2_inv.c:19:14: note: called from here
poly_r2_inv.c: 19 | out[i] = _pext_u64(coeff_pointer[2*i], 0x1000100010001);
poly_r2_inv.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
poly_r2_inv.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:109,
poly_r2_inv.c: from poly_r2_inv.c:1:
poly_r2_inv.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/bmi2intrin.h:76:1: error: inlining failed in call to 'always_inline' '_pext_u64': target specific option mismatch
poly_r2_inv.c: 76 | _pext_u64 (unsigned long long __X, unsigned long long __Y)
poly_r2_inv.c: | ^~~~~~~~~
poly_r2_inv.c: poly_r2_inv.c:23:13: note: called from here
poly_r2_inv.c: 23 | out[i] |= _pext_u64(coeff_pointer[2*63+1], 0x1) << 4;
poly_r2_inv.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
poly_r2_inv.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: compact
Security model: constbranchindex
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: /usr/bin/ld: /home/supercop/benchmarking/supercop-20240107/supercop-data/wolfdale/amd64/lib/libsupercop.a(crypto_core_keccakf160064bits_optimized1600AsmX86_64_constbranchindex-KeccakP-1600-x86-64-gas.o): relocation R_X86_64_32S against `.text' can not be used when making a PIE object; recompile with -fPIE
try.c: collect2: error: ld returned 1 exit status

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

Compiler output

Implementation: ref
Security model: constbranchindex
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: /usr/bin/ld: /home/supercop/benchmarking/supercop-20231212/supercop-data/wolfdale/amd64/lib/libsupercop.a(crypto_core_keccakf160064bits_optimized1600AsmX86_64_constbranchindex-KeccakP-1600-x86-64-gas.o): relocation R_X86_64_32S against `.text' can not be used when making a PIE object; recompile with -fPIE
try.c: collect2: error: ld returned 1 exit status

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