Implementation notes: amd64, hydra8, crypto_hash/blake2b

Computer: hydra8
Microarchitecture: amd64; Ivy Bridge+AES (306a9)
Architecture: amd64
CPU ID: GenuineIntel-000306a9-bfebfbff
SUPERCOP version: 20240716
Operation: crypto_hash
Primitive: blake2b
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
53993973 0 016352 860 896T:moon/avx/64clang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
53993981 0 016573 804 960T:moon/avx/64gcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
54054034 0 015373 804 960T:moon/avx/64gcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
54103973 0 018328 860 896T:moon/avx/64clang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
54103953 0 016856 860 896T:moon/avx/64clang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
54113971 0 014322 852 896T:moon/avx/64clang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
54144017 0 014924 796 960T:moon/avx/64gcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
54173973 0 014680 860 896T:moon/avx/64clang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
54763960 0 013864 780 928T:moon/avx/64gcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
566211616 0 022328 892 896T:avxiccclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
576011616 0 022997 820 960T:avxiccgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
577511616 0 025960 892 896T:avxiccclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
582511616 0 021954 884 896T:avxiccclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
590711616 0 024520 892 896T:avxiccclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
590711616 0 024261 820 960T:avxiccgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
592411616 0 024016 892 896T:avxiccclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
593111616 0 022580 812 960T:avxiccgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
593811616 0 021544 796 928T:avxiccgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
665313125 0 027432 860 896T:xmmclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
674213125 0 025488 860 896T:xmmclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
677713125 0 023800 860 896T:xmmclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
678013008 0 023672 860 896T:ymmclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
681612912 0 023210 852 896T:ymmclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
683413026 0 023322 852 896T:xmmclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
684113008 0 025360 860 896T:ymmclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
684113008 0 027304 860 896T:ymmclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
743815442 0 026096 860 896T:regsclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
745115442 0 029728 860 896T:regsclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
749015442 0 027784 860 896T:regsclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
749315437 0 025722 852 896T:regsclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
759312223 0 024068 812 960T:regsgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
760511554 0 021895 788 928T:regsgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
761412218 0 025348 812 960T:regsgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
761516638 0 029504 860 896T:xmmclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
767613601 0 026448 860 896T:regsclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
807412263 0 023667 804 960T:regsgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716

Test failure


error 111

Number of similar (implementation,compiler) pairs: 18, namely:
ImplementationCompiler
T:moon/avx2/64clang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/avx2/64clang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/avx2/64clang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/avx2/64clang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/avx2/64clang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/avx2/64gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:moon/avx2/64gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:moon/avx2/64gcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:moon/avx2/64gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:moon/xop/64clang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/xop/64clang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/xop/64clang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/xop/64clang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/xop/64clang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/xop/64gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:moon/xop/64gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:moon/xop/64gcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:moon/xop/64gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)

Compiler output


blake2b.c: blake2b.c:100:14: error: '__builtin_ia32_pblendd256' needs target feature avx2
blake2b.c:              _mm256_blend_epi32(_mm256_castsi128_si256(_mm_cvtsi64_si128(ctr)),
blake2b.c:              ^
blake2b.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/avx2intrin.h:750:13: note: expanded from macro '_mm256_blend_epi32'
blake2b.c:   ((__m256i)__builtin_ia32_pblendd256((__v8si)(__m256i)(V1), \
blake2b.c:             ^
blake2b.c: blake2b.c:96:12: error: always_inline function '_mm256_xor_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_1_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     ymm3 = _mm256_xor_si256
blake2b.c:            ^
blake2b.c: blake2b.c:109:5: error: always_inline function '_mm256_add_epi64' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_1_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     ROUNDS(in);
blake2b.c:     ^
blake2b.c: ./blake2b-round.h:105:5: note: expanded from macro 'ROUNDS'
blake2b.c:     ROUND( 0 ); \
blake2b.c:     ^
blake2b.c: ./blake2b-round.h:74:3: note: expanded from macro 'ROUND'
blake2b.c:   G1(ymm0,ymm1,ymm2,ymm3,b0); \
blake2b.c:   ^
blake2b.c: ./blake2b-round.h:40:27: note: expanded from macro 'G1'
blake2b.c:   row1 = _mm256_add_epi64(_mm256_add_epi64(row1, b0), row2); \
blake2b.c:                           ^
blake2b.c: blake2b.c:109:5: error: always_inline function '_mm256_add_epi64' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_1_timingleaks' that is compiled without support for 'avx2'
blake2b.c: ./blake2b-round.h:105:5: note: expanded from macro 'ROUNDS'
blake2b.c:     ROUND( 0 ); \
blake2b.c:     ^
blake2b.c: ...

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

Compiler output


blake2b.c: blake2b.c:37:23: error: always_inline function '_mm256_setr_epi8' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_1_timingleaks' that is compiled without support for 'avx'
blake2b.c:   const __m256i r16 = _mm256_setr_epi8( 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9,
blake2b.c:                       ^
blake2b.c: blake2b.c:37:23: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:39:23: error: always_inline function '_mm256_setr_epi8' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_1_timingleaks' that is compiled without support for 'avx'
blake2b.c:   const __m256i r24 = _mm256_setr_epi8( 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10,
blake2b.c:                       ^
blake2b.c: blake2b.c:39:23: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:56:10: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_1_timingleaks' that is compiled without support for 'avx'
blake2b.c:   ymm0 = _mm256_set_epi64x(0xA54FF53A5F1D36F1ULL, 0x3C6EF372FE94F82BULL, 0xBB67AE8584CAA73BULL, 0x6A09E667F3BCC908ULL ^ 0x0000000001010040ULL);
blake2b.c:          ^
blake2b.c: blake2b.c:56:10: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:57:10: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_1_timingleaks' that is compiled without support for 'avx'
blake2b.c:   ymm1 = _mm256_set_epi64x(0x5BE0CD19137E2179ULL, 0x1F83D9ABFB41BD6BULL, 0x9B05688C2B3E6C1FULL, 0x510E527FADE682D1ULL);
blake2b.c:          ^
blake2b.c: blake2b.c:57:10: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:95:12: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_1_timingleaks' that is compiled without support for 'avx'
blake2b.c:     ymm2 = _mm256_set_epi64x(0xA54FF53A5F1D36F1ULL, 0x3C6EF372FE94F82BULL, 0xBB67AE8584CAA73BULL, 0x6a09e667f3bcc908ULL);
blake2b.c:            ^
blake2b.c: blake2b.c:95:12: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:98:14: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_1_timingleaks' that is compiled without support for 'avx'
blake2b.c:              _mm256_set_epi64x(0x5BE0CD19137E2179ULL, 0x1F83D9ABFB41BD6BULL, 0x9B05688C2B3E6C1FULL, 0x510E527FADE682D1ULL),
blake2b.c:              ^
blake2b.c: blake2b.c:98:14: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:100:14: error: '__builtin_ia32_pblendd256' needs target feature avx2
blake2b.c: ...

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

Compiler output


blake2b.c: In file included from blake2b.c:14:
blake2b.c: blake2.h:89:5: error: size of array element is not a multiple of its alignment
blake2b.c:    89 |     blake2s_state S[8][1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:90:5: error: size of array element is not a multiple of its alignment
blake2b.c:    90 |     blake2s_state R[1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:97:5: error: size of array element is not a multiple of its alignment
blake2b.c:    97 |     blake2b_state S[4][1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:98:5: error: size of array element is not a multiple of its alignment
blake2b.c:    98 |     blake2b_state R[1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:134:14: warning: 'blake2' defined but not used [-Wunused-function]
blake2b.c:   134 |   static int blake2( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )
blake2b.c:       |              ^~~~~~

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

Compiler output


blake2b.c: blake2b.c:64:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     const __m256i m0 = _mm256_broadcastsi128_si256(LOADU128( in + 00 ));
blake2b.c:                        ^
blake2b.c: blake2b.c:65:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     const __m256i m1 = _mm256_broadcastsi128_si256(LOADU128( in + 16 ));
blake2b.c:                        ^
blake2b.c: blake2b.c:66:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     const __m256i m2 = _mm256_broadcastsi128_si256(LOADU128( in + 32 ));
blake2b.c:                        ^
blake2b.c: blake2b.c:67:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     const __m256i m3 = _mm256_broadcastsi128_si256(LOADU128( in + 48 ));
blake2b.c:                        ^
blake2b.c: blake2b.c:68:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     const __m256i m4 = _mm256_broadcastsi128_si256(LOADU128( in + 64 ));
blake2b.c:                        ^
blake2b.c: blake2b.c:69:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     const __m256i m5 = _mm256_broadcastsi128_si256(LOADU128( in + 80 ));
blake2b.c:                        ^
blake2b.c: blake2b.c:70:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     const __m256i m6 = _mm256_broadcastsi128_si256(LOADU128( in + 96 ));
blake2b.c:                        ^
blake2b.c: blake2b.c:71:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     const __m256i m7 = _mm256_broadcastsi128_si256(LOADU128( in + 112 ));
blake2b.c:                        ^
blake2b.c: blake2b.c:101:14: error: '__builtin_ia32_pblendd256' needs target feature avx2
blake2b.c: ...

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

Compiler output


blake2b.c: blake2b.c:38:23: error: always_inline function '_mm256_setr_epi8' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx'
blake2b.c:   const __m256i r16 = _mm256_setr_epi8( 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9,
blake2b.c:                       ^
blake2b.c: blake2b.c:38:23: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:40:23: error: always_inline function '_mm256_setr_epi8' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx'
blake2b.c:   const __m256i r24 = _mm256_setr_epi8( 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10,
blake2b.c:                       ^
blake2b.c: blake2b.c:40:23: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:57:10: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx'
blake2b.c:   ymm0 = _mm256_set_epi64x(0xA54FF53A5F1D36F1ULL, 0x3C6EF372FE94F82BULL, 0xBB67AE8584CAA73BULL, 0x6A09E667F3BCC908ULL ^ 0x0000000001010040ULL);
blake2b.c:          ^
blake2b.c: blake2b.c:57:10: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:58:10: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx'
blake2b.c:   ymm1 = _mm256_set_epi64x(0x5BE0CD19137E2179ULL, 0x1F83D9ABFB41BD6BULL, 0x9B05688C2B3E6C1FULL, 0x510E527FADE682D1ULL);
blake2b.c:          ^
blake2b.c: blake2b.c:58:10: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:64:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     const __m256i m0 = _mm256_broadcastsi128_si256(LOADU128( in + 00 ));
blake2b.c:                        ^
blake2b.c: blake2b.c:64:24: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:65:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     const __m256i m1 = _mm256_broadcastsi128_si256(LOADU128( in + 16 ));
blake2b.c:                        ^
blake2b.c: blake2b.c:65:24: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:66:24: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_2_timingleaks' that is compiled without support for 'avx2'
blake2b.c: ...

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

Compiler output


blake2b.c: In file included from blake2b.c:15:
blake2b.c: blake2.h:89:5: error: size of array element is not a multiple of its alignment
blake2b.c:    89 |     blake2s_state S[8][1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:90:5: error: size of array element is not a multiple of its alignment
blake2b.c:    90 |     blake2s_state R[1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:97:5: error: size of array element is not a multiple of its alignment
blake2b.c:    97 |     blake2b_state S[4][1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:98:5: error: size of array element is not a multiple of its alignment
blake2b.c:    98 |     blake2b_state R[1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:134:14: warning: 'blake2' defined but not used [-Wunused-function]
blake2b.c:   134 |   static int blake2( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )
blake2b.c:       |              ^~~~~~

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

Compiler output


blake2b.c: blake2b.c:101:14: error: '__builtin_ia32_pblendd256' needs target feature avx2
blake2b.c:              _mm256_blend_epi32(_mm256_castsi128_si256(_mm_cvtsi64_si128(ctr)),
blake2b.c:              ^
blake2b.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/avx2intrin.h:750:13: note: expanded from macro '_mm256_blend_epi32'
blake2b.c:   ((__m256i)__builtin_ia32_pblendd256((__v8si)(__m256i)(V1), \
blake2b.c:             ^
blake2b.c: blake2b.c:97:12: error: always_inline function '_mm256_xor_si256' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_3_timingleaks' that is compiled without support for 'avx2'
blake2b.c:     ymm3 = _mm256_xor_si256
blake2b.c:            ^
blake2b.c: blake2b.c:110:5: error: '__builtin_ia32_gatherd_q256' needs target feature avx2
blake2b.c:     ROUNDS(in);
blake2b.c:     ^
blake2b.c: ./blake2b-round.h:100:23: note: expanded from macro 'ROUNDS'
blake2b.c:   #define ROUNDS(msg) GATHER_ROUND(msg)
blake2b.c:                       ^
blake2b.c: ./blake2b-round.h:87:10: note: expanded from macro 'GATHER_ROUND'
blake2b.c:     b0 = _mm256_i32gather_epi64((void *)msg, LOAD128(&indices[16*i +  0]), 8); \
blake2b.c:          ^
blake2b.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/avx2intrin.h:1128:13: note: expanded from macro '_mm256_i32gather_epi64'
blake2b.c:   ((__m256i)__builtin_ia32_gatherd_q256((__v4di)_mm256_undefined_si256(), \
blake2b.c:             ^
blake2b.c: blake2b.c:110:5: error: always_inline function '_mm256_add_epi64' requires target feature 'avx2', but would be inlined into function 'crypto_hash_blake2b_avx2_3_timingleaks' that is compiled without support for 'avx2'
blake2b.c: ./blake2b-round.h:100:23: note: expanded from macro 'ROUNDS'
blake2b.c:   #define ROUNDS(msg) GATHER_ROUND(msg)
blake2b.c:                       ^
blake2b.c: ...

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

Compiler output


blake2b.c: blake2b.c:38:23: error: always_inline function '_mm256_setr_epi8' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_3_timingleaks' that is compiled without support for 'avx'
blake2b.c:   const __m256i r16 = _mm256_setr_epi8( 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9,
blake2b.c:                       ^
blake2b.c: blake2b.c:38:23: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:40:23: error: always_inline function '_mm256_setr_epi8' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_3_timingleaks' that is compiled without support for 'avx'
blake2b.c:   const __m256i r24 = _mm256_setr_epi8( 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10,
blake2b.c:                       ^
blake2b.c: blake2b.c:40:23: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:57:10: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_3_timingleaks' that is compiled without support for 'avx'
blake2b.c:   ymm0 = _mm256_set_epi64x(0xA54FF53A5F1D36F1ULL, 0x3C6EF372FE94F82BULL, 0xBB67AE8584CAA73BULL, 0x6A09E667F3BCC908ULL ^ 0x0000000001010040ULL);
blake2b.c:          ^
blake2b.c: blake2b.c:57:10: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:58:10: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_3_timingleaks' that is compiled without support for 'avx'
blake2b.c:   ymm1 = _mm256_set_epi64x(0x5BE0CD19137E2179ULL, 0x1F83D9ABFB41BD6BULL, 0x9B05688C2B3E6C1FULL, 0x510E527FADE682D1ULL);
blake2b.c:          ^
blake2b.c: blake2b.c:58:10: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:96:12: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_3_timingleaks' that is compiled without support for 'avx'
blake2b.c:     ymm2 = _mm256_set_epi64x(0xA54FF53A5F1D36F1ULL, 0x3C6EF372FE94F82BULL, 0xBB67AE8584CAA73BULL, 0x6a09e667f3bcc908ULL);
blake2b.c:            ^
blake2b.c: blake2b.c:96:12: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:99:14: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'crypto_hash_blake2b_avx2_3_timingleaks' that is compiled without support for 'avx'
blake2b.c:              _mm256_set_epi64x(0x5BE0CD19137E2179ULL, 0x1F83D9ABFB41BD6BULL, 0x9B05688C2B3E6C1FULL, 0x510E527FADE682D1ULL),
blake2b.c:              ^
blake2b.c: blake2b.c:99:14: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
blake2b.c: blake2b.c:101:14: error: '__builtin_ia32_pblendd256' needs target feature avx2
blake2b.c: ...

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

Compiler output


try.c: /usr/bin/ld: libcrypto_hash_blake2b.a(blake2b.o): warning: relocation in read-only section `.eh_frame'
try.c: /usr/bin/ld: warning: creating DT_TEXTREL in a PIE
try.c: /usr/bin/ld: libcrypto_hash_blake2b.a(blake2b.o): warning: relocation in read-only section `.eh_frame'
try.c: /usr/bin/ld: warning: creating DT_TEXTREL in a PIE
measure.c: /usr/bin/ld: libcrypto_hash_blake2b.a(blake2b.o): warning: relocation in read-only section `.eh_frame'
measure.c: /usr/bin/ld: warning: creating DT_TEXTREL in a PIE

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

Compiler output


blake2b-ref.c: blake2b-ref.c:68:19: warning: unused function 'blake2b_clear_lastblock' [-Wunused-function]
blake2b-ref.c: static inline int blake2b_clear_lastblock( blake2b_state *S )
blake2b-ref.c:                   ^
blake2b-ref.c: blake2b-ref.c:86:19: warning: unused function 'blake2b_param_set_digest_length' [-Wunused-function]
blake2b-ref.c: static inline int blake2b_param_set_digest_length( blake2b_param *P, const uint8_t digest_length )
blake2b-ref.c:                   ^
blake2b-ref.c: blake2b-ref.c:92:19: warning: unused function 'blake2b_param_set_fanout' [-Wunused-function]
blake2b-ref.c: static inline int blake2b_param_set_fanout( blake2b_param *P, const uint8_t fanout )
blake2b-ref.c:                   ^
blake2b-ref.c: blake2b-ref.c:98:19: warning: unused function 'blake2b_param_set_max_depth' [-Wunused-function]
blake2b-ref.c: static inline int blake2b_param_set_max_depth( blake2b_param *P, const uint8_t depth )
blake2b-ref.c:                   ^
blake2b-ref.c: blake2b-ref.c:104:19: warning: unused function 'blake2b_param_set_leaf_length' [-Wunused-function]
blake2b-ref.c: static inline int blake2b_param_set_leaf_length( blake2b_param *P, const uint32_t leaf_length )
blake2b-ref.c:                   ^
blake2b-ref.c: blake2b-ref.c:110:19: warning: unused function 'blake2b_param_set_node_offset' [-Wunused-function]
blake2b-ref.c: static inline int blake2b_param_set_node_offset( blake2b_param *P, const uint64_t node_offset )
blake2b-ref.c:                   ^
blake2b-ref.c: blake2b-ref.c:116:19: warning: unused function 'blake2b_param_set_node_depth' [-Wunused-function]
blake2b-ref.c: static inline int blake2b_param_set_node_depth( blake2b_param *P, const uint8_t node_depth )
blake2b-ref.c:                   ^
blake2b-ref.c: blake2b-ref.c:122:19: warning: unused function 'blake2b_param_set_inner_length' [-Wunused-function]
blake2b-ref.c: static inline int blake2b_param_set_inner_length( blake2b_param *P, const uint8_t inner_length )
blake2b-ref.c:                   ^
blake2b-ref.c: blake2b-ref.c:128:19: warning: unused function 'blake2b_param_set_salt' [-Wunused-function]
blake2b-ref.c: ...

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

Compiler output


blake2b-ref.c: In file included from blake2b-ref.c:19:
blake2b-ref.c: blake2.h:101:5: error: size of array element is not a multiple of its alignment
blake2b-ref.c:   101 |     blake2s_state S[8][1];
blake2b-ref.c:       |     ^~~~~~~~~~~~~
blake2b-ref.c: blake2.h:102:5: error: size of array element is not a multiple of its alignment
blake2b-ref.c:   102 |     blake2s_state R[1];
blake2b-ref.c:       |     ^~~~~~~~~~~~~
blake2b-ref.c: blake2.h:109:5: error: size of array element is not a multiple of its alignment
blake2b-ref.c:   109 |     blake2b_state S[4][1];
blake2b-ref.c:       |     ^~~~~~~~~~~~~
blake2b-ref.c: blake2.h:110:5: error: size of array element is not a multiple of its alignment
blake2b-ref.c:   110 |     blake2b_state R[1];
blake2b-ref.c:       |     ^~~~~~~~~~~~~
blake2b-ref.c: blake2b-ref.c: In function 'blake2b':
blake2b-ref.c: blake2b-ref.c:342:3: error: size of array element is not a multiple of its alignment
blake2b-ref.c:   342 |   blake2b_state S[1];
blake2b-ref.c:       |   ^~~~~~~~~~~~~

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

Compiler output


blake2b.c: In file included from blake2b.c:5:
blake2b.c: blake2.h:89:5: error: size of array element is not a multiple of its alignment
blake2b.c:    89 |     blake2s_state S[8][1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:90:5: error: size of array element is not a multiple of its alignment
blake2b.c:    90 |     blake2s_state R[1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:97:5: error: size of array element is not a multiple of its alignment
blake2b.c:    97 |     blake2b_state S[4][1];
blake2b.c:       |     ^~~~~~~~~~~~~
blake2b.c: blake2.h:98:5: error: size of array element is not a multiple of its alignment
blake2b.c:    98 |     blake2b_state R[1];
blake2b.c:       |     ^~~~~~~~~~~~~

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

Compiler output


blake2b.c: blake2b.c:15:2: error: "This code requires at least AVX."
blake2b.c: #error "This code requires at least AVX."
blake2b.c:  ^
blake2b.c: 1 error generated.

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

Namespace violations


blake2b.o _blake2b_blocks_avx T
blake2b.o blake2b_blocks_avx T

Number of similar (implementation,compiler) pairs: 9, namely:
ImplementationCompiler
T:moon/avx/64clang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/avx/64clang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/avx/64clang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/avx/64clang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/avx/64clang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:moon/avx/64gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:moon/avx/64gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:moon/avx/64gcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:moon/avx/64gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)