Implementation notes: amd64, wintermute, crypto_hash/groestl512

Computer: wintermute
Architecture: amd64
CPU ID: GenuineIntel-000306c3-bfebfbff
SUPERCOP version: 20140505
Operation: crypto_hash
Primitive: groestl512
TimeImplementationCompilerBenchmark dateSUPERCOP version
54832core2duoclang -O32014050820140505
56540vperm-intrclang -O3 -mavx2014050820140505
56812vperm-intrclang -O3 -mavx22014050820140505
56972core2duoclang -O3 -mavx22014050820140505
57128core2duoclang -O3 -mavx2014050820140505
89680sphlib-adaptedclang -O3 -mavx22014050820140505
89888sphlib-smallclang -O3 -mavx22014050820140505
90108sphlib-adaptedclang -O32014050820140505
90152sphlib-smallclang -O32014050820140505
90256sphlib-adaptedclang -O3 -mavx2014050820140505
90672sphlib-smallclang -O3 -mavx2014050820140505
91420sphlibclang -O3 -mavx22014050820140505
91884sphlibclang -O32014050820140505
92152sphlibclang -O3 -mavx2014050820140505
95976sphlibcc2014050820140505
99172sphlib-adaptedcc2014050820140505
104180mmxclang -O32014050820140505
105708mmxclang -O3 -mavx22014050820140505
106148mmxclang -O3 -mavx2014050820140505
136900opt32clang -O3 -mavx2014050820140505
137992opt32clang -O3 -mavx22014050820140505
138344opt32clang -O32014050820140505
292508opt32cc2014050820140505
293856sphlib-smallcc2014050820140505
41646432bit-bytesliced-c-smallclang -O3 -mavx22014050820140505
41722032bit-bytesliced-c-smallclang -O3 -mavx2014050820140505
45783232bit-bytesliced-c-smallclang -O32014050820140505
618548mmxcc2014050820140505
250314432bit-bytesliced-c-smallcc2014050820140505

Compiler output

Implementation: crypto_hash/groestl512/vperm
Compiler: cc
hash.c: In file included from hash.c:19:
hash.c: ./groestl-asm-vperm.h:1196:3: error: invalid operand for instruction
hash.c: VPERM_Transform_RoundConst();
hash.c: ^
hash.c: ./groestl-asm-vperm.h:1173:3: note: expanded from macro 'VPERM_Transform_RoundConst'
hash.c: VPERM_Transform_RoundConst_CNT2(0, 1);\
hash.c: ^
hash.c: ./groestl-asm-vperm.h:1158:8: note: expanded from macro 'VPERM_Transform_RoundConst_CNT2'
hash.c: asm ("movaps xmm0, [ROUND_CONST_P+"tostr(i)"*16]");\
hash.c: ^
hash.c: gt;:1:15: note: instantiated into assembly here
hash.c: movaps xmm0, [ROUND_CONST_P+0*16]
hash.c: ^~~~~~~~~~~~~~~~~~~~
hash.c: In file included from hash.c:19:
hash.c: ./groestl-asm-vperm.h:1196:3: error: invalid operand for instruction
hash.c: VPERM_Transform_RoundConst();
hash.c: ^
hash.c: ./groestl-asm-vperm.h:1173:3: note: expanded from macro 'VPERM_Transform_RoundConst'
hash.c: VPERM_Transform_RoundConst_CNT2(0, 1);\
hash.c: ^
hash.c: ./groestl-asm-vperm.h:1159:8: note: expanded from macro 'VPERM_Transform_RoundConst_CNT2'
hash.c: asm ("movaps xmm1, [ROUND_CONST_P+"tostr(j)"*16]");\
hash.c: ^
hash.c: gt;:1:15: note: instantiated into assembly here
hash.c: movaps xmm1, [ROUND_CONST_P+1*16]
hash.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
cc vperm
clang -O3 vperm
clang -O3 -mavx vperm
clang -O3 -mavx2 vperm

Compiler output

Implementation: crypto_hash/groestl512/aesni-intr
Compiler: cc
hash.c: In file included from hash.c:28:
hash.c: In file included from ./groestl-intr-aes.h:10:
hash.c: /usr/include/clang/3.3/smmintrin.h:28:2: error: "SSE4.1 instruction set not enabled"
hash.c: #error "SSE4.1 instruction set not enabled"
hash.c: ^
hash.c: In file included from hash.c:28:
hash.c: In file included from ./groestl-intr-aes.h:11:
hash.c: /usr/include/clang/3.3/wmmintrin.h:30:3: error: "AES/PCLMUL instructions not enabled"
hash.c: # error "AES/PCLMUL instructions not enabled"
hash.c: ^
hash.c: In file included from hash.c:28:
hash.c: ./groestl-intr-aes.h:784:3: warning: implicit declaration of function '_mm_shuffle_epi8' is invalid in C99 [-Wimplicit-function-declaration]
hash.c: Matrix_Transpose(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7);
hash.c: ^
hash.c: ./groestl-intr-aes.h:629:8: note: expanded from macro 'Matrix_Transpose'
hash.c: i6 = _mm_shuffle_epi8(i6, t0);\
hash.c: ^
hash.c: ./groestl-intr-aes.h:784:3: error: assigning to '__m128i' from incompatible type 'int'
hash.c: Matrix_Transpose(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7);
hash.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: ./groestl-intr-aes.h:629:6: note: expanded from macro 'Matrix_Transpose'
hash.c: i6 = _mm_shuffle_epi8(i6, t0);\
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: ./groestl-intr-aes.h:784:3: error: assigning to '__m128i' from incompatible type 'int'
hash.c: Matrix_Transpose(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7);
hash.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
cc aesni-intr
clang -O3 aesni-intr

Compiler output

Implementation: crypto_hash/groestl512/avx-intr
Compiler: cc
hash.c: In file included from hash.c:31:
hash.c: In file included from ./groestl-intr-avx.h:10:
hash.c: /usr/include/clang/3.3/smmintrin.h:28:2: error: "SSE4.1 instruction set not enabled"
hash.c: #error "SSE4.1 instruction set not enabled"
hash.c: ^
hash.c: In file included from hash.c:31:
hash.c: In file included from ./groestl-intr-avx.h:11:
hash.c: /usr/include/clang/3.3/wmmintrin.h:30:3: error: "AES/PCLMUL instructions not enabled"
hash.c: # error "AES/PCLMUL instructions not enabled"
hash.c: ^
hash.c: In file included from hash.c:31:
hash.c: ./groestl-intr-avx.h:27:1: error: unknown type name '__m256d'
hash.c: __m256d ALL_1B;
hash.c: ^
hash.c: ./groestl-intr-avx.h:848:3: warning: implicit declaration of function '_mm_shuffle_epi8' is invalid in C99 [-Wimplicit-function-declaration]
hash.c: Matrix_Transpose(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7);
hash.c: ^
hash.c: ./groestl-intr-avx.h:722:8: note: expanded from macro 'Matrix_Transpose'
hash.c: i6 = _mm_shuffle_epi8(i6, t0);\
hash.c: ^
hash.c: ./groestl-intr-avx.h:848:3: error: assigning to '__m128i' from incompatible type 'int'
hash.c: Matrix_Transpose(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7);
hash.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: ./groestl-intr-avx.h:722:6: note: expanded from macro 'Matrix_Transpose'
hash.c: i6 = _mm_shuffle_epi8(i6, t0);\
hash.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
cc avx-intr
clang -O3 avx-intr

Compiler output

Implementation: crypto_hash/groestl512/vperm-intr
Compiler: cc
hash.c: In file included from hash.c:34:
hash.c: In file included from ./groestl-intr-vperm.h:13:
hash.c: /usr/include/clang/3.3/tmmintrin.h:28:2: error: "SSSE3 instruction set not enabled"
hash.c: #error "SSSE3 instruction set not enabled"
hash.c: ^
hash.c: In file included from hash.c:34:
hash.c: ./groestl-intr-vperm.h:17:1: error: unknown type name '__m128i'
hash.c: __m128i ROUND_CONST_Lx;
hash.c: ^
hash.c: ./groestl-intr-vperm.h:18:1: error: unknown type name '__m128i'
hash.c: __m128i ROUND_CONST_L0[ROUNDS512];
hash.c: ^
hash.c: ./groestl-intr-vperm.h:19:1: error: unknown type name '__m128i'
hash.c: __m128i ROUND_CONST_L7[ROUNDS512];
hash.c: ^
hash.c: ./groestl-intr-vperm.h:20:1: error: unknown type name '__m128i'
hash.c: __m128i ROUND_CONST_P[ROUNDS1024];
hash.c: ^
hash.c: ./groestl-intr-vperm.h:21:1: error: unknown type name '__m128i'
hash.c: __m128i ROUND_CONST_Q[ROUNDS1024];
hash.c: ^
hash.c: ./groestl-intr-vperm.h:22:1: error: unknown type name '__m128i'
hash.c: __m128i TRANSP_MASK;
hash.c: ^
hash.c: ./groestl-intr-vperm.h:23:1: error: unknown type name '__m128i'
hash.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
cc vperm-intr
clang -O3 vperm-intr

Compiler output

Implementation: crypto_hash/groestl512/opt64
Compiler: cc
hash.c: hash.c:191:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:190:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: inline void F1024(u64 *h, const u64 *m) {
hash.c: ^
hash.c: static
hash.c: hash.c:192:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 z[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:190:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: inline void F1024(u64 *h, const u64 *m) {
hash.c: ^
hash.c: static
hash.c: hash.c:193:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 outQ[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:190:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: inline void F1024(u64 *h, const u64 *m) {
hash.c: ^
hash.c: static
hash.c: hash.c:194:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 inP[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:190:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: ...
try.c: crypto_hash_groestl512.a(hash.o): In function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: cc: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
cc opt64

Compiler output

Implementation: crypto_hash/groestl512/aesni
Compiler: cc
hash.c: hash.c:97:3: warning: while loop has empty body [-Wempty-body]
hash.c: SET_CONSTANTS();
hash.c: ^
hash.c: ./groestl-asm-aes.h:567:10: note: expanded from macro 'SET_CONSTANTS'
hash.c: }while(0);
hash.c: ^
hash.c: hash.c:97:3: note: put the semicolon on a separate line to silence this warning
hash.c: ./groestl-asm-aes.h:567:10: note: expanded from macro 'SET_CONSTANTS'
hash.c: }while(0);
hash.c: ^
hash.c: ./groestl-asm-aes.h:851:8: error: invalid operand for instruction
hash.c: asm ("movaps xmm8, [rdi+0*16]");
hash.c: ^
hash.c: gt;:1:16: note: instantiated into assembly here
hash.c: movaps xmm8, [rdi+0*16]
hash.c: ^~~~~~~~~~
hash.c: In file included from hash.c:13:
hash.c: ./groestl-asm-aes.h:852:8: error: invalid operand for instruction
hash.c: asm ("movaps xmm9, [rdi+1*16]");
hash.c: ^
hash.c: gt;:1:16: note: instantiated into assembly here
hash.c: movaps xmm9, [rdi+1*16]
hash.c: ^~~~~~~~~~
hash.c: In file included from hash.c:13:
hash.c: ./groestl-asm-aes.h:853:8: error: invalid operand for instruction
hash.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
cc aesni
clang -O3 aesni
clang -O3 -mavx aesni
clang -O3 -mavx2 aesni

Compiler output

Implementation: crypto_hash/groestl512/avx
Compiler: cc
hash.c: hash.c:97:3: warning: while loop has empty body [-Wempty-body]
hash.c: SET_CONSTANTS();
hash.c: ^
hash.c: ./groestl-asm-avx.h:560:10: note: expanded from macro 'SET_CONSTANTS'
hash.c: }while(0);
hash.c: ^
hash.c: hash.c:97:3: note: put the semicolon on a separate line to silence this warning
hash.c: ./groestl-asm-avx.h:560:10: note: expanded from macro 'SET_CONSTANTS'
hash.c: }while(0);
hash.c: ^
hash.c: ./groestl-asm-avx.h:925:8: error: invalid operand for instruction
hash.c: asm ("vmovaps xmm8, [rdi+0*16]");
hash.c: ^
hash.c: gt;:1:17: note: instantiated into assembly here
hash.c: vmovaps xmm8, [rdi+0*16]
hash.c: ^~~~~~~~~~
hash.c: In file included from hash.c:16:
hash.c: ./groestl-asm-avx.h:926:8: error: invalid operand for instruction
hash.c: asm ("vmovaps xmm9, [rdi+1*16]");
hash.c: ^
hash.c: gt;:1:17: note: instantiated into assembly here
hash.c: vmovaps xmm9, [rdi+1*16]
hash.c: ^~~~~~~~~~
hash.c: In file included from hash.c:16:
hash.c: ./groestl-asm-avx.h:927:8: error: invalid operand for instruction
hash.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
cc avx
clang -O3 avx
clang -O3 -mavx avx
clang -O3 -mavx2 avx

Compiler output

Implementation: crypto_hash/groestl512/core2duo
Compiler: cc
try.c: crypto_hash_groestl512.a(hash.o): In function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `Q1024ASM'
try.c: hash.c:(.text+0x...): undefined reference to `P1024ASM'
try.c: crypto_hash_groestl512.a(hash.o): In function `OutputTransformation':
try.c: hash.c:(.text+0x...): undefined reference to `P1024ASM'
try.c: cc: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
cc core2duo opteron

Compiler output

Implementation: crypto_hash/groestl512/opteron
Compiler: clang -O3
hash.c: In file included from hash.c:13:
hash.c: ./PQASM.h:518:8: error: ran out of registers during register allocation
hash.c: "\n movq 8(%0), %%rcx"
hash.c: ^
hash.c: ./PQASM.h:3:8: error: ran out of registers during register allocation
hash.c: "\n movq 8(%0), %%rcx"
hash.c: ^
hash.c: ./PQASM.h:3:8: error: ran out of registers during register allocation
hash.c: ./PQASM.h:518:8: error: ran out of registers during register allocation
hash.c: "\n movq 8(%0), %%rcx"
hash.c: ^
hash.c: ./PQASM.h:518:8: error: ran out of registers during register allocation
hash.c: ./PQASM.h:3:8: error: ran out of registers during register allocation
hash.c: "\n movq 8(%0), %%rcx"
hash.c: ^
hash.c: ./PQASM.h:3:8: error: ran out of registers during register allocation
hash.c: ./PQASM.h:518:8: error: ran out of registers during register allocation
hash.c: "\n movq 8(%0), %%rcx"
hash.c: ^
hash.c: ./PQASM.h:3:8: error: ran out of registers during register allocation
hash.c: "\n movq 8(%0), %%rcx"
hash.c: ^
hash.c: ./PQASM.h:518:8: error: ran out of registers during register allocation
hash.c: "\n movq 8(%0), %%rcx"
hash.c: ^
hash.c: ...

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
clang -O3 opteron
clang -O3 -mavx opteron
clang -O3 -mavx2 opteron

Compiler output

Implementation: crypto_hash/groestl512/opt64
Compiler: clang -O3
hash.c: hash.c:191:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:190:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: inline void F1024(u64 *h, const u64 *m) {
hash.c: ^
hash.c: static
hash.c: hash.c:192:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 z[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:190:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: inline void F1024(u64 *h, const u64 *m) {
hash.c: ^
hash.c: static
hash.c: hash.c:193:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 outQ[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:190:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: inline void F1024(u64 *h, const u64 *m) {
hash.c: ^
hash.c: static
hash.c: hash.c:194:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 inP[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:190:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: ...

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
clang -O3 opt64
clang -O3 -mavx opt64
clang -O3 -mavx2 opt64

Compiler output

Implementation: crypto_hash/groestl512/aesni-intr
Compiler: clang -O3 -mavx
hash.c: In file included from hash.c:28:
hash.c: In file included from ./groestl-intr-aes.h:11:
hash.c: /usr/include/clang/3.3/wmmintrin.h:30:3: error: "AES/PCLMUL instructions not enabled"
hash.c: # error "AES/PCLMUL instructions not enabled"
hash.c: ^
hash.c: In file included from hash.c:28:
hash.c: ./groestl-intr-aes.h:848:3: warning: implicit declaration of function '_mm_aesenclast_si128' is invalid in C99 [-Wimplicit-function-declaration]
hash.c: ROUNDS_P();
hash.c: ^
hash.c: ./groestl-intr-aes.h:552:5: note: expanded from macro 'ROUNDS_P'
hash.c: SUBMIX(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7);\
hash.c: ^
hash.c: ./groestl-intr-aes.h:525:8: note: expanded from macro 'SUBMIX'
hash.c: a0 = _mm_aesenclast_si128(a0, b0);\
hash.c: ^
hash.c: ./groestl-intr-aes.h:848:3: error: assigning to '__m128i' from incompatible type 'int'
hash.c: ROUNDS_P();
hash.c: ^~~~~~~~~~
hash.c: ./groestl-intr-aes.h:552:5: note: expanded from macro 'ROUNDS_P'
hash.c: SUBMIX(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7);\
hash.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: ./groestl-intr-aes.h:525:6: note: expanded from macro 'SUBMIX'
hash.c: a0 = _mm_aesenclast_si128(a0, b0);\
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: ./groestl-intr-aes.h:848:3: error: assigning to '__m128i' from incompatible type 'int'
hash.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -O3 -mavx aesni-intr
clang -O3 -mavx2 aesni-intr

Compiler output

Implementation: crypto_hash/groestl512/avx-intr
Compiler: clang -O3 -mavx
hash.c: In file included from hash.c:31:
hash.c: In file included from ./groestl-intr-avx.h:11:
hash.c: /usr/include/clang/3.3/wmmintrin.h:30:3: error: "AES/PCLMUL instructions not enabled"
hash.c: # error "AES/PCLMUL instructions not enabled"
hash.c: ^
hash.c: In file included from hash.c:31:
hash.c: ./groestl-intr-avx.h:925:3: warning: implicit declaration of function '_mm_aesenclast_si128' is invalid in C99 [-Wimplicit-function-declaration]
hash.c: ROUNDS_P_Q();
hash.c: ^
hash.c: ./groestl-intr-avx.h:708:5: note: expanded from macro 'ROUNDS_P_Q'
hash.c: SUBSHIFTMIX(ymm0, ymm1, ymm2, ymm3, ymm4, ymm5, ymm6, ymm7, ymm8, ymm9, ymm10, ymm11, ymm12, ymm13, ymm14, ymm15);\
hash.c: ^
hash.c: ./groestl-intr-avx.h:680:3: note: expanded from macro 'SUBSHIFTMIX'
hash.c: SubShift(a0, 0, 1);\
hash.c: ^
hash.c: ./groestl-intr-avx.h:548:11: note: expanded from macro 'SubShift'
hash.c: xmmIL = _mm_aesenclast_si128(xmmIL, xmmZERO);\
hash.c: ^
hash.c: ./groestl-intr-avx.h:925:3: error: assigning to '__m128i' from incompatible type 'int'
hash.c: ROUNDS_P_Q();
hash.c: ^~~~~~~~~~~~
hash.c: ./groestl-intr-avx.h:708:5: note: expanded from macro 'ROUNDS_P_Q'
hash.c: SUBSHIFTMIX(ymm0, ymm1, ymm2, ymm3, ymm4, ymm5, ymm6, ymm7, ymm8, ymm9, ymm10, ymm11, ymm12, ymm13, ymm14, ymm15);\
hash.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: ./groestl-intr-avx.h:680:3: note: expanded from macro 'SUBSHIFTMIX'
hash.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -O3 -mavx avx-intr
clang -O3 -mavx2 avx-intr