Implementation notes: amd64, panther, crypto_sign/rainbow3b

Computer: panther
Microarchitecture: amd64; Tiger Lake (806c1)
Architecture: amd64
CPU ID: GenuineIntel-000806c1-00-bfebfbff
SUPERCOP version: 20240808
Operation: crypto_sign
Primitive: rainbow3b
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
100685265773 0 104968487817 932 1051448T:avx2clang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
101983459655 0 104968481785 932 1051448T:avx2clang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
310471364269 0 104973287052 892 1051512T:avx2gcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
311657527801 0 104968446639 924 1051416T:avx2clang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
318296824361 0 104973245012 892 1051512T:avx2gcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
322902015087 0 104968435327 924 1051416T:avx2clang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
336544221850 0 104973242084 892 1051512T:avx2gcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
337217911252 0 104973230613 892 1051512T:avx2gcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
657807879761 0 1049652100689 932 1051448T:portableclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
658578679761 0 1049652100689 932 1051448T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
664832489144 0 1049652110089 932 1051448T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
665742389144 0 1049652110089 932 1051448T:portableclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
2060974043969 0 104965266321 932 1051416T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
20624026112637 0 1049700135420 892 1051512T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
20624535112637 0 1049700135420 892 1051512T:portablegcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
2062910943969 0 104965266321 932 1051416T:portableclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
2314820829854 0 104970050076 892 1051512T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
2315538229854 0 104970050076 892 1051512T:portablegcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
2357543933289 0 104970053924 892 1051512T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
2357885233289 0 104970053924 892 1051512T:portablegcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
2363885933824 0 104965251391 924 1051416T:portableclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
2364004433824 0 104965251391 924 1051416T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
239912699904 0 104970029237 892 1051512T:portablegcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
239940869904 0 104970029237 892 1051512T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
2585861413480 0 104965233807 924 1051416T:portableclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716
2586183113480 0 104965233807 924 1051416T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071920240716

Compiler output


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:17:
rainbow.c: ./blas_avx2.h:265:39: error: always_inline function '_mm256_setzero_si256' requires target feature 'avx', but would be inlined into function 'gf31mat_prod_avx2' that is compiled without support for 'avx'
rainbow.c:         for(unsigned i=0;i<n_ymm;i++) r[i] = _mm256_setzero_si256();
rainbow.c:                                              ^
rainbow.c: ./blas_avx2.h:265:39: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
rainbow.c: ./blas_avx2.h:270:16: error: always_inline function '_mm256_set1_epi16' requires target feature 'avx', but would be inlined into function 'gf31mat_prod_avx2' that is compiled without support for 'avx'
rainbow.c:                 __m256i bi = _mm256_set1_epi16( b_u16[i] );
rainbow.c:                              ^
rainbow.c: ./blas_avx2.h:270:16: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
rainbow.c: ./blas_avx2.h:273:18: error: always_inline function '_mm256_loadu_si256' requires target feature 'avx', but would be inlined into function 'gf31mat_prod_avx2' that is compiled without support for 'avx'
rainbow.c:                         __m256i tmp = _mm256_loadu_si256( (__m256i*)(mat+j*32) );
rainbow.c:                                       ^
rainbow.c: ./blas_avx2.h:273:18: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
rainbow.c: ./blas_avx2.h:274:36: error: always_inline function '_mm256_maddubs_epi16' requires target feature 'avx2', but would be inlined into function 'gf31mat_prod_avx2' that is compiled without support for 'avx2'
rainbow.c:                         r[j] = _mm256_add_epi16( r[j] , _mm256_maddubs_epi16( tmp , bi ) );
rainbow.c:                                                         ^
rainbow.c: ./blas_avx2.h:274:36: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
rainbow.c: ./blas_avx2.h:274:11: error: always_inline function '_mm256_add_epi16' requires target feature 'avx2', but would be inlined into function 'gf31mat_prod_avx2' that is compiled without support for 'avx2'
rainbow.c:                         r[j] = _mm256_add_epi16( r[j] , _mm256_maddubs_epi16( tmp , bi ) );
rainbow.c:                                ^
rainbow.c: ./blas_avx2.h:274:11: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
rainbow.c: ./blas_avx2.h:282:10: warning: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI [-Wpsabi]
rainbow.c:                 r[j] = _gf31v_reduce_u16_avx2( r[j] );
rainbow.c: ...

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:avx2clang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)

Compiler output


rainbow.c: In file included from blas.h:17,
rainbow.c:                  from rainbow.h:7,
rainbow.c:                  from rainbow.c:4:
rainbow.c: rainbow.c: In function 'rainbow_central_map':
rainbow.c: blas_avx2.h:287:10: warning: 'r[3]' is used uninitialized in this function [-Wuninitialized]
rainbow.c:   287 |   r[j] = _mm256_packs_epi16( r[j*2] , r[j*2+1] );
rainbow.c:       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow.c: rainbow.c: In function 'rainbow_pubmap_seckey':
rainbow.c: blas_avx2.h:287:10: warning: 'r[9]' is used uninitialized in this function [-Wuninitialized]
rainbow.c:   287 |   r[j] = _mm256_packs_epi16( r[j*2] , r[j*2+1] );
rainbow.c:       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow.c: blas_avx2.h:287:10: warning: 'r[5]' is used uninitialized in this function [-Wuninitialized]
rainbow.c:   287 |   r[j] = _mm256_packs_epi16( r[j*2] , r[j*2+1] );
rainbow.c:       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow.c: rainbow.c: In function 'rainbow_secmap':
rainbow.c: blas_avx2.h:287:10: warning: 'r[5]' is used uninitialized in this function [-Wuninitialized]
rainbow.c:   287 |   r[j] = _mm256_packs_epi16( r[j*2] , r[j*2+1] );
rainbow.c:       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:avx2gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)

Namespace violations


blas.o __zero_32 B
gf31_convert.o gf31_from_digest T
gf31_convert.o gf31_quick_pack T
gf31_convert.o gf31_quick_unpack T
gf31_convert.o gf31_sanity_check T
gf31_table.o gf31_inv_tab R
gf31_table.o gf31_inv_tab2 R
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_central_map T
rainbow.o rainbow_genkey T
rainbow.o rainbow_genkey_debug T
rainbow.o rainbow_ivs_central_map T
rainbow.o rainbow_pubmap_seckey T
rainbow.o rainbow_secmap T
rainbow.o rainbow_sign T
rainbow.o rainbow_verify T

Number of similar (implementation,compiler) pairs: 8, namely:
ImplementationCompiler
T:avx2clang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:avx2clang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:avx2clang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:avx2clang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:avx2gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:avx2gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:avx2gcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:avx2gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)

Namespace violations


gf31_convert.o gf31_from_digest T
gf31_convert.o gf31_quick_pack T
gf31_convert.o gf31_quick_unpack T
gf31_convert.o gf31_sanity_check T
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_central_map T
rainbow.o rainbow_genkey T
rainbow.o rainbow_genkey_debug T
rainbow.o rainbow_ivs_central_map T
rainbow.o rainbow_pubmap_seckey T
rainbow.o rainbow_secmap T
rainbow.o rainbow_sign T
rainbow.o rainbow_verify T

Number of similar (implementation,compiler) pairs: 18, namely:
ImplementationCompiler
T:portableclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:portableclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:portableclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:portableclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:portableclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:portablegcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:portablegcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:portablegcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:portablegcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:refclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:refclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:refclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:refclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:refclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:refgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)