Implementation notes: amd64, speed2supercop, crypto_sign/luov8117404

Computer: speed2supercop
Microarchitecture: amd64; Haswell+AES (306c3)
Architecture: amd64
CPU ID: GenuineIntel-000306c3-1fc9cbf5
SUPERCOP version: 20240625
Operation: crypto_sign
Primitive: luov8117404
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
3864610059770 0 090163 832 1600T:avx2clang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
3875208036131 32768 066720 33560 1632T:avx2gcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
3877719266514 0 097187 832 1600T:avx2clang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
3884647251310 0 079994 816 1632T:avx2clang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
3884889654201 0 081075 832 1568T:avx2clang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
3891364021499 32768 050160 33560 1632T:avx2gcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
3923230020493 32768 048864 33560 1632T:avx2gcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
3992461615059 32768 042400 33552 1600T:avx2gcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
72677708558054 0 056786 832 1600T:portableclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
72749996556218 0 054482 832 1600T:portableclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
73758452558944 0 055751 784 1632T:portablegcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
75870296551964 0 048474 832 1568T:portableclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
76187608557357 0 054706 832 1568T:portableclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
78889592550049 0 048009 816 1632T:portableclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
79099520553637 0 050631 784 1632T:portablegcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
86056948552237 0 049135 784 1632T:portablegcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
91671636547949 0 044839 776 1600T:portablegcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
820168196415097 36 0173754 832 1568T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
835317576415224 36 0174858 832 1600T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
836024216415570 36 0175562 832 1600T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
886697480415872 36 0174423 784 1632T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
889792104411909 36 0171239 784 1632T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
902675892410653 36 0170023 784 1632T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
906432304409155 36 0169649 816 1632T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
938271136408332 36 0167887 776 1600T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625
963278420411144 36 0170170 832 1568T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070820240625

Compiler output


keccakrng.c: keccakrng.c:71:24: warning: unused function 'rotl' [-Wunused-function]
keccakrng.c: static inline uint64_t rotl(const uint64_t x, int k) {
keccakrng.c:                        ^
keccakrng.c: 1 warning generated.

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:avx2clang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:avx2clang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:avx2clang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:avx2clang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))

Compiler output


LUOV.c: LUOV.c:110:17: error: '__builtin_ia32_permti256' needs target feature avx2
LUOV.c:                         __m256i rr = _mm256_permute2x128_si256(_mm256_loadu_si256((__m256i *)&r),_mm256_setzero_si256(),0);
LUOV.c:                                      ^
LUOV.c: /usr/lib/llvm-16/lib/clang/16/include/avx2intrin.h:821:13: note: expanded from macro '_mm256_permute2x128_si256'
LUOV.c:   ((__m256i)__builtin_ia32_permti256((__m256i)(V1), (__m256i)(V2), (int)(M)))
LUOV.c:             ^
LUOV.c: LUOV.c:110:43: error: always_inline function '_mm256_loadu_si256' requires target feature 'avx', but would be inlined into function 'calculateQ2' that is compiled without support for 'avx'
LUOV.c:                         __m256i rr = _mm256_permute2x128_si256(_mm256_loadu_si256((__m256i *)&r),_mm256_setzero_si256(),0);
LUOV.c:                                                                ^
LUOV.c: LUOV.c:110:43: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
LUOV.c: LUOV.c:110:77: error: always_inline function '_mm256_setzero_si256' requires target feature 'avx', but would be inlined into function 'calculateQ2' that is compiled without support for 'avx'
LUOV.c:                         __m256i rr = _mm256_permute2x128_si256(_mm256_loadu_si256((__m256i *)&r),_mm256_setzero_si256(),0);
LUOV.c:                                                                                                  ^
LUOV.c: LUOV.c:110:77: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
LUOV.c: LUOV.c:115:20: error: always_inline function '_mm256_set1_epi8' requires target feature 'avx', but would be inlined into function 'calculateQ2' that is compiled without support for 'avx'
LUOV.c:                                 __m256i tttt = _mm256_set1_epi8(t[k/8]);
LUOV.c:                                                ^
LUOV.c: LUOV.c:115:20: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
LUOV.c: LUOV.c:117:54: error: always_inline function '_mm256_setzero_si256' requires target feature 'avx', but would be inlined into function 'calculateQ2' that is compiled without support for 'avx'
LUOV.c:                                 __m256i t1t2 = _mm256_cmpeq_epi8(tttt & masks[0],_mm256_setzero_si256());
LUOV.c:                                                                                  ^
LUOV.c: LUOV.c:117:54: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
LUOV.c: LUOV.c:117:20: error: always_inline function '_mm256_cmpeq_epi8' requires target feature 'avx2', but would be inlined into function 'calculateQ2' that is compiled without support for 'avx2'
LUOV.c:                                 __m256i t1t2 = _mm256_cmpeq_epi8(tttt & masks[0],_mm256_setzero_si256());
LUOV.c:                                                ^
LUOV.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_16.0.6_(27+b1))

Compiler output


LUOV.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/13/include/immintrin.h:43,
LUOV.c:                  from LUOV.h:7,
LUOV.c:                  from LUOV.c:1:
LUOV.c: In function '_mm256_loadu_si256',
LUOV.c:     inlined from 'calculateQ2' at LUOV.c:142:17:
LUOV.c: /usr/lib/gcc/x86_64-linux-gnu/13/include/avxintrin.h:929:10: warning: array subscript '__m256i_u[0]' is partly outside array bounds of '__m128i[1]' [-Warray-bounds=]
LUOV.c:   929 |   return *__P;
LUOV.c:       |          ^~~~
LUOV.c: LUOV.c: In function 'calculateQ2':
LUOV.c: LUOV.c:141:38: note: object 'r' of size 16
LUOV.c:   141 |                         bitcontainer r = TempMat[j][i];
LUOV.c:       |                                      ^
LUOV.c: In function '_mm256_loadu_si256',
LUOV.c:     inlined from 'calculateQ2' at LUOV.c:110:17:
LUOV.c: /usr/lib/gcc/x86_64-linux-gnu/13/include/avxintrin.h:929:10: warning: array subscript '__m256i_u[0]' is partly outside array bounds of '__m128i[1]' [-Warray-bounds=]
LUOV.c:   929 |   return *__P;
LUOV.c:       |          ^~~~
LUOV.c: LUOV.c: In function 'calculateQ2':
LUOV.c: LUOV.c:109:38: note: object 'r' of size 16
LUOV.c:   109 |                         bitcontainer r = Q1[col++];
LUOV.c:       |                                      ^
LUOV.c: In function '_mm256_loadu_si256',
LUOV.c:     inlined from 'TransformQ1' at LUOV.c:280:17:
LUOV.c: /usr/lib/gcc/x86_64-linux-gnu/13/include/avxintrin.h:929:10: warning: array subscript '__m256i_u[0]' is partly outside array bounds of '__m128i[1]' [-Warray-bounds=]
LUOV.c:   929 |   return *__P;
LUOV.c: ...

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

Compiler output


F64Field.c: F64Field.c: In function 'f64addInPlace':
F64Field.c: F64Field.c:43:11: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
F64Field.c:    43 |         *((uint64_t *) a->coef) ^= *((uint64_t *) b->coef);
F64Field.c:       |          ~^~~~~~~~~~~~~~~~~~~~~
F64Field.c: F64Field.c:43:38: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
F64Field.c:    43 |         *((uint64_t *) a->coef) ^= *((uint64_t *) b->coef);
F64Field.c:       |                                     ~^~~~~~~~~~~~~~~~~~~~~
F80Field.c: F80Field.c: In function 'f80addInPlace':
F80Field.c: F80Field.c:55:11: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
F80Field.c:    55 |         *((uint64_t *) a->coef) ^= *((uint64_t *) b->coef);
F80Field.c:       |          ~^~~~~~~~~~~~~~~~~~~~~
F80Field.c: F80Field.c:55:38: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
F80Field.c:    55 |         *((uint64_t *) a->coef) ^= *((uint64_t *) b->coef);
F80Field.c:       |                                     ~^~~~~~~~~~~~~~~~~~~~~

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