Implementation notes: amd64, saber214, crypto_kem/lotus128

Computer: saber214
Microarchitecture: amd64; Bulldozer (600f20)
Architecture: amd64
CPU ID: AuthenticAMD-00600f20-1789c3f5
SUPERCOP version: 20240625
Operation: crypto_kem
Primitive: lotus128
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
85972541008 0 859580 856 1632T:optgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
140279130336 0 848868 856 1632T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
225097346900 0 865635 880 1568T:optclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
227178535683 0 853291 880 1568T:optclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
233751248542 0 868523 880 1568T:optclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
259201323192 0 840707 880 1568T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
266567528920 0 848843 880 1568T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
270339131032 0 849675 880 1568T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
437050712153 0 828085 872 1568T:optclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
681452113973 0 830387 880 1568T:optclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
68150348369 0 824277 872 1568T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
68394839500 0 825811 880 1568T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
725173313114 0 830292 856 1632T:optgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
72673249789 0 826900 856 1632T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
726836411328 0 828236 856 1632T:optgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
75715438980 0 825804 856 1632T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
94030218359 0 823980 848 1600T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625
946665710614 0 826308 848 1600T:optgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070520240625

Compiler output


lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:169:14: error: always_inline function '_mm256_mullo_epi16' requires target feature 'avx2', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx2'
lwe-arithmetics_avx2.c:       b[0] = _mm256_mullo_epi16(b[0], a);
lwe-arithmetics_avx2.c:              ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:170:14: error: always_inline function '_mm256_mullo_epi16' requires target feature 'avx2', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx2'
lwe-arithmetics_avx2.c:       b[1] = _mm256_mullo_epi16(b[1], a);
lwe-arithmetics_avx2.c:              ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:171:14: error: always_inline function '_mm256_mullo_epi16' requires target feature 'avx2', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx2'
lwe-arithmetics_avx2.c:       b[2] = _mm256_mullo_epi16(b[2], a);
lwe-arithmetics_avx2.c:              ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:172:14: error: always_inline function '_mm256_mullo_epi16' requires target feature 'avx2', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx2'
lwe-arithmetics_avx2.c:       b[3] = _mm256_mullo_epi16(b[3], a);
lwe-arithmetics_avx2.c:              ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:173:14: error: always_inline function '_mm256_sub_epi16' requires target feature 'avx2', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx2'
lwe-arithmetics_avx2.c:       c[0] = _mm256_sub_epi16(c[0], b[0]);
lwe-arithmetics_avx2.c:              ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:174:14: error: always_inline function '_mm256_sub_epi16' requires target feature 'avx2', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx2'
lwe-arithmetics_avx2.c:       c[1] = _mm256_sub_epi16(c[1], b[1]);
lwe-arithmetics_avx2.c:              ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:175:14: error: always_inline function '_mm256_sub_epi16' requires target feature 'avx2', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx2'
lwe-arithmetics_avx2.c:       c[2] = _mm256_sub_epi16(c[2], b[2]);
lwe-arithmetics_avx2.c:              ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:176:14: error: always_inline function '_mm256_sub_epi16' requires target feature 'avx2', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx2'
lwe-arithmetics_avx2.c:       c[3] = _mm256_sub_epi16(c[3], b[3]);
lwe-arithmetics_avx2.c:              ^
lwe-arithmetics_avx2.c: 8 errors generated.

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:avx2clang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:avx2clang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:avx2clang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:avx2clang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)

Compiler output


lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:158:12: error: always_inline function '_mm256_setzero_si256' requires target feature 'avx', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx'
lwe-arithmetics_avx2.c:     c[0] = _mm256_setzero_si256();
lwe-arithmetics_avx2.c:            ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:158:12: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:159:12: error: always_inline function '_mm256_setzero_si256' requires target feature 'avx', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx'
lwe-arithmetics_avx2.c:     c[1] = _mm256_setzero_si256();
lwe-arithmetics_avx2.c:            ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:159:12: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:160:12: error: always_inline function '_mm256_setzero_si256' requires target feature 'avx', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx'
lwe-arithmetics_avx2.c:     c[2] = _mm256_setzero_si256();
lwe-arithmetics_avx2.c:            ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:160:12: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:161:12: error: always_inline function '_mm256_setzero_si256' requires target feature 'avx', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx'
lwe-arithmetics_avx2.c:     c[3] = _mm256_setzero_si256();
lwe-arithmetics_avx2.c:            ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:161:12: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:164:11: error: always_inline function '_mm256_set1_epi16' requires target feature 'avx', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx'
lwe-arithmetics_avx2.c:       a = _mm256_set1_epi16(A[j]);
lwe-arithmetics_avx2.c:           ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:164:11: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:165:14: error: always_inline function '_mm256_loadu_si256' requires target feature 'avx', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx'
lwe-arithmetics_avx2.c:       b[0] = _mm256_loadu_si256((__m256i*)(p));
lwe-arithmetics_avx2.c:              ^
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:165:14: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:166:14: error: always_inline function '_mm256_loadu_si256' requires target feature 'avx', but would be inlined into function 'submat_negmul' that is compiled without support for 'avx'
lwe-arithmetics_avx2.c: ...

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

Compiler output


lwe-arithmetics_avx2.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:47,
lwe-arithmetics_avx2.c:                  from lwe-arithmetics_avx2.c:10:
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c: In function 'submat_negmul':
lwe-arithmetics_avx2.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/avx2intrin.h:808:1: error: inlining failed in call to 'always_inline' '_mm256_sub_epi16': target specific option mismatch
lwe-arithmetics_avx2.c:   808 | _mm256_sub_epi16 (__m256i __A, __m256i __B)
lwe-arithmetics_avx2.c:       | ^~~~~~~~~~~~~~~~
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:176:14: note: called from here
lwe-arithmetics_avx2.c:   176 |       c[3] = _mm256_sub_epi16(c[3], b[3]);
lwe-arithmetics_avx2.c:       |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
lwe-arithmetics_avx2.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:47,
lwe-arithmetics_avx2.c:                  from lwe-arithmetics_avx2.c:10:
lwe-arithmetics_avx2.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/avx2intrin.h:808:1: error: inlining failed in call to 'always_inline' '_mm256_sub_epi16': target specific option mismatch
lwe-arithmetics_avx2.c:   808 | _mm256_sub_epi16 (__m256i __A, __m256i __B)
lwe-arithmetics_avx2.c:       | ^~~~~~~~~~~~~~~~
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:175:14: note: called from here
lwe-arithmetics_avx2.c:   175 |       c[2] = _mm256_sub_epi16(c[2], b[2]);
lwe-arithmetics_avx2.c:       |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
lwe-arithmetics_avx2.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:47,
lwe-arithmetics_avx2.c:                  from lwe-arithmetics_avx2.c:10:
lwe-arithmetics_avx2.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/avx2intrin.h:808:1: error: inlining failed in call to 'always_inline' '_mm256_sub_epi16': target specific option mismatch
lwe-arithmetics_avx2.c:   808 | _mm256_sub_epi16 (__m256i __A, __m256i __B)
lwe-arithmetics_avx2.c:       | ^~~~~~~~~~~~~~~~
lwe-arithmetics_avx2.c: lwe-arithmetics_avx2.c:174:14: note: called from here
lwe-arithmetics_avx2.c:   174 |       c[1] = _mm256_sub_epi16(c[1], b[1]);
lwe-arithmetics_avx2.c:       |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
lwe-arithmetics_avx2.c: ...

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:avx2gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:avx2gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:avx2gcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:avx2gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)