Implementation notes: amd64, margaux, crypto_kem/ntruhps2048509

Computer: margaux
Architecture: amd64
CPU ID: GenuineIntel-000006fb-bfebfbff
SUPERCOP version: 20210604
Operation: crypto_kem
Primitive: ntruhps2048509
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
51465796188 0 081293 812 1712T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
51891966188 0 088581 812 1712refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
540678116759 0 093783 820 1712T:refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
541560426239 0 0104599 820 1712T:refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
541988116759 0 093783 820 1712T:refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
544119216759 0 0101071 820 1712refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
544863826239 0 0111887 820 1712refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
546135616759 0 0101071 820 1712refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
553826526855 0 0105047 820 1712T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
557150426855 0 0112335 820 1712refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021051120210423
566714116825 0 095682 828 1744T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
569341616825 0 0102970 828 1744refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
56985477254 0 084032 820 1744T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
57310847254 0 091320 820 1744refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
65192506481 0 081872 812 1712T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
65516906481 0 089160 812 1712refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
67415787185 0 083528 820 1744T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423
67595667185 0 090816 820 1744refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021051120210423

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/7/include/immintrin.h:83:0,
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/7/include/bmi2intrin.h:76:1: error: inlining failed in call to always_inline '_pext_u64': target specific option mismatch
poly_r2_inv.c: _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: 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/7/include/immintrin.h:83:0,
poly_r2_inv.c: from poly_r2_inv.c:1:
poly_r2_inv.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/bmi2intrin.h:76:1: error: inlining failed in call to always_inline '_pext_u64': target specific option mismatch
poly_r2_inv.c: _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: 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/7/include/immintrin.h:83:0,
poly_r2_inv.c: from poly_r2_inv.c:1:
poly_r2_inv.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/bmi2intrin.h:76:1: error: inlining failed in call to always_inline '_pext_u64': target specific option mismatch
poly_r2_inv.c: _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: 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/7/include/immintrin.h:83:0,
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/7/include/bmi2intrin.h:76:1: error: inlining failed in call to always_inline '_pext_u64': target specific option mismatch
poly_r2_inv.c: _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: 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/7/include/immintrin.h:83:0,
poly_r2_inv.c: from poly_r2_inv.c:1:
poly_r2_inv.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/bmi2intrin.h:76:1: error: inlining failed in call to always_inline '_pext_u64': target specific option mismatch
poly_r2_inv.c: _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: 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/7/include/immintrin.h:83:0,
poly_r2_inv.c: from poly_r2_inv.c:1:
poly_r2_inv.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/bmi2intrin.h:76:1: error: inlining failed in call to always_inline '_pext_u64': target specific option mismatch
poly_r2_inv.c: _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: 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