Implementation notes: amd64, latour, crypto_sign/rainbow3c

Computer: latour
Architecture: amd64
CPU ID: GenuineIntel-000006fb-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_sign
Primitive: rainbow3c
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1853034357545 0 104864476634 848 1050296T:portablegcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020090220200826
1874563254042 0 104864472777 856 1050296T:portablegcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020090220200826
2031019231591 0 104861251396 896 1050200T:portableclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020090220200826
2031641129231 0 104861248052 896 1050200T:portableclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020090220200826
2031977731335 0 104861251012 896 1050200T:portableclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020090220200826
2041780517447 0 104861235122 888 1050200T:portableclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020090220200826
2044451729231 0 104861248052 896 1050200T:portableclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020090220200826
25418070142721 0 1048612160628 896 1050200T:refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020090220200826
25430877143255 0 1048612162100 896 1050200T:refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020090220200826
25576596142721 0 1048612160628 896 1050200T:refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020090220200826
26740530152197 0 1048612170868 896 1050200T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020090220200826

Test failure

Implementation: T:portable
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE
error 111

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

Test failure

Implementation: T:portable
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
error 142
Alarm clock

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:portable
clang -march=native -Os -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
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
rainbow.c: In file included from rainbow.c:4:
rainbow.c: In file included from ./rainbow.h:7:
rainbow.c: In file included from ./blas.h:21:
rainbow.c: ./blas_avx2.h:200:19: error: always_inline function '_mm256_load_si256' requires target feature 'xsave', but would be inlined into function 'gf256mat_prod_multab_avx2' that is compiled without support for 'xsave'
rainbow.c: __m256i mask_f = _mm256_load_si256((__m256i const *) __mask_low);
rainbow.c: ^
rainbow.c: ./blas_avx2.h:204:39: error: always_inline function '_mm256_setzero_si256' requires target feature 'xsave', but would be inlined into function 'gf256mat_prod_multab_avx2' that is compiled without support for 'xsave'
rainbow.c: for(unsigned i=0;i<n_ymm;i++) r[i] = _mm256_setzero_si256();
rainbow.c: ^
rainbow.c: ./blas_avx2.h:207:16: error: always_inline function '_mm256_load_si256' requires target feature 'xsave', but would be inlined into function 'gf256mat_prod_multab_avx2' that is compiled without support for 'xsave'
rainbow.c: __m256i mt = _mm256_load_si256( (__m256i*)( multab + i*32) );
rainbow.c: ^
rainbow.c: ./blas_avx2.h:208:16: error: '__builtin_ia32_permti256' needs target feature avx2
rainbow.c: __m256i ml = _mm256_permute2x128_si256(mt,mt,0x00 );
rainbow.c: ^
rainbow.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/avx2intrin.h:882:12: note: expanded from macro '_mm256_permute2x128_si256'
rainbow.c: (__m256i)__builtin_ia32_permti256((__m256i)(V1), (__m256i)(V2), (M)); })
rainbow.c: ^
rainbow.c: In file included from rainbow.c:4:
rainbow.c: In file included from ./rainbow.h:7:
rainbow.c: In file included from ./blas.h:21:
rainbow.c: ./blas_avx2.h:209:16: error: '__builtin_ia32_permti256' needs target feature avx2
rainbow.c: __m256i mh = _mm256_permute2x128_si256(mt,mt,0x11 );
rainbow.c: ^
rainbow.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/avx2intrin.h:882:12: note: expanded from macro '_mm256_permute2x128_si256'
rainbow.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
rainbow.c: In file included from rainbow.c:4:
rainbow.c: In file included from ./rainbow.h:7:
rainbow.c: In file included from ./blas.h:21:
rainbow.c: In file included from ./blas_avx2.h:13:
rainbow.c: ./blas_sse.h:661:24: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function '_gf256mat_gauss_elim_sse' that is compiled without support for 'ssse3'
rainbow.c: __m128i madd_mask = _mm_shuffle_epi8( is_madd , _mm_set1_epi8(i_r) );
rainbow.c: ^
rainbow.c: In file included from rainbow.c:4:
rainbow.c: In file included from ./rainbow.h:7:
rainbow.c: In file included from ./blas.h:21:
rainbow.c: In file included from ./blas_avx2.h:11:
rainbow.c: In file included from ./gf16_avx2.h:8:
rainbow.c: ./gf16_sse.h:78:9: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'tbl_gf16_squ_x8' that is compiled without support for 'ssse3'
rainbow.c: return _mm_shuffle_epi8(tab_l,a);
rainbow.c: ^
rainbow.c: ./gf16_sse.h:118:15: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'tbl_gf16_mul' that is compiled without support for 'ssse3'
rainbow.c: __m128i la = _mm_shuffle_epi8(log_16,a);
rainbow.c: ^
rainbow.c: ./gf16_sse.h:119:15: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'tbl_gf16_mul' that is compiled without support for 'ssse3'
rainbow.c: __m128i lb = _mm_shuffle_epi8(log_16,b);
rainbow.c: ^
rainbow.c: ./gf16_sse.h:122:15: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'tbl_gf16_mul' that is compiled without support for 'ssse3'
rainbow.c: __m128i r0 = _mm_shuffle_epi8(exp_16, _mm_sub_epi8(la_lb, mask_f&_mm_cmpgt_epi8(la_lb,mask_f) ) );
rainbow.c: ^
rainbow.c: ./gf16_sse.h:85:9: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'tbl_gf16_inv' that is compiled without support for 'ssse3'
rainbow.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
blas.c: In file included from blas_avx2.h:11:0,
blas.c: from blas.h:21,
blas.c: from blas.c:1:
blas.c: gf16_avx2.h: In function 'tbl32_gf4_x2':
blas.c: gf16_avx2.h:25:1: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
blas.c: {
blas.c: ^
rainbow.c: In file included from blas_avx2.h:11:0,
rainbow.c: from blas.h:21,
rainbow.c: from rainbow.h:7,
rainbow.c: from rainbow.c:4:
rainbow.c: gf16_avx2.h: In function 'tbl32_gf4_x2':
rainbow.c: gf16_avx2.h:25:1: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
rainbow.c: {
rainbow.c: ^
rainbow.c: gf16_avx2.h: In function 'tbl32_gf16_log':
rainbow.c: gf16_avx2.h:70:23: note: The ABI for passing parameters with 32-byte alignment has changed in GCC 4.6
rainbow.c: static inline __m256i tbl32_gf16_log( __m256i a )
rainbow.c: ^
rainbow.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/immintrin.h:43:0,
rainbow.c: from blas_avx2.h:6,
rainbow.c: from blas.h:21,
rainbow.c: from rainbow.h:7,
rainbow.c: from rainbow.c:4:
rainbow.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/avx2intrin.h:588:1: error: inlining failed in call to always_inline '_mm256_shuffle_epi8': target specific option mismatch
rainbow.c: _mm256_shuffle_epi8 (__m256i __X, __m256i __Y)
rainbow.c: ^
rainbow.c: In file included from blas_avx2.h:11:0,
rainbow.c: from blas.h:21,
rainbow.c: from rainbow.h:7,
rainbow.c: from rainbow.c:4:
rainbow.c: gf16_avx2.h:73:9: error: called from here
rainbow.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

Namespace violations

Implementation: T:portable
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
hash_utils.o sha2_chain T
hash_utils.o sha2_chain_byte T
hash_utils.o sha2_chain_file T
hash_utils.o sha2_chain_msg T
hash_utils.o sha2_file T
prng_utils.o prng_bytes T
prng_utils.o prng_dump T
prng_utils.o prng_dump_set T
prng_utils.o prng_expand_buffer T
prng_utils.o userrand_bytes T
prng_utils.o userrand_dump_generated T
prng_utils.o userrand_source_file T
rainbow.o rainbow_genkey T
rainbow.o rainbow_secmap T
rainbow.o rainbow_sign T
rainbow.o rainbow_verify T

Number of similar (compiler,implementation) pairs: 11, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:portable
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:portable
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:portable
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:portable
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:portable
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:portable
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE T:portable
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 -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ref