Implementation notes: amd64, jasper3, crypto_sign/rainbow1b

Computer: jasper3
Microarchitecture: amd64; Tremont (906c0)
Architecture: amd64
CPU ID: GenuineIntel-000906c0-20-bfebfbff
SUPERCOP version: 20240625
Operation: crypto_sign
Primitive: rainbow1b
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
368510288741 0 1049652107444 916 1051384T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
368651988741 0 1049652107460 916 1051384T:portableclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
371984895153 0 1049652116164 916 1051384T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
372422895153 0 1049652116180 916 1051384T:portableclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
910718846758 0 104965267420 916 1051384T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
917430846758 0 104965267436 916 1051384T:portableclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
9610119148702 0 1049700168964 892 1051480T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
9661691148702 0 1049700168964 892 1051480T:portablegcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1003804819080 0 104965237074 908 1051384T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1004186519080 0 104965237090 908 1051384T:portableclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1022173729360 0 104970048076 892 1051480T:portablegcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1022586929360 0 104970048076 892 1051480T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1073845922729 0 104970041828 892 1051480T:portablegcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1073914622729 0 104970041828 892 1051480T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1128713713612 0 104965232402 908 1051384T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1131858013612 0 104965232418 908 1051384T:portableclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
131401449649 0 104970027405 892 1051480T:portablegcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
131405329649 0 104970027373 892 1051480T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625

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: 5, 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:avx2clang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)

Compiler output


blas.c: In file included from blas.h:17,
blas.c:                  from blas.c:1:
blas.c: blas_avx2.h: In function '_gf31v_u8_to_u16_avx2':
blas.c: blas_avx2.h:17:1: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
blas.c:    17 | __m256i _gf31v_u8_to_u16_avx2( __m128i a ) {
blas.c:       | ^~~~~~~
rainbow.c: In file included from blas.h:17,
rainbow.c:                  from rainbow.h:7,
rainbow.c:                  from rainbow.c:4:
rainbow.c: blas_avx2.h: In function '_gf31v_u8_to_u16_avx2':
rainbow.c: blas_avx2.h:17:1: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
rainbow.c:    17 | __m256i _gf31v_u8_to_u16_avx2( __m128i a ) {
rainbow.c:       | ^~~~~~~
rainbow.c: blas_avx2.h: In function '_gf31v_reduce_u16_avx2':
rainbow.c: blas_avx2.h:110:9: note: the ABI for passing parameters with 32-byte alignment has changed in GCC 4.6
rainbow.c:   110 | __m256i _gf31v_reduce_u16_avx2( __m256i a ){
rainbow.c:       |         ^~~~~~~~~~~~~~~~~~~~~~
rainbow.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:51,
rainbow.c:                  from blas_avx2.h:8,
rainbow.c:                  from blas.h:17,
rainbow.c:                  from rainbow.h:7,
rainbow.c:                  from rainbow.c:4:
rainbow.c: blas_avx2.h: In function '_gf31v_u8_to_u16_avx2':
rainbow.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/avxintrin.h:768:1: error: inlining failed in call to 'always_inline' '_mm256_insertf128_si256': target specific option mismatch
rainbow.c:   768 | _mm256_insertf128_si256 (__m256i __X, __m128i __Y, const int __O)
rainbow.c:       | ^~~~~~~~~~~~~~~~~~~~~~~
rainbow.c: In file included from blas.h:17,
rainbow.c:                  from rainbow.h:7,
rainbow.c:                  from rainbow.c:4:
rainbow.c: blas_avx2.h:22:9: note: called from here
rainbow.c:    22 |  return _mm256_insertf128_si256 ( _mm256_castsi128_si256(a0) , a1 , 1 );
rainbow.c: ...

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
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)