Implementation notes: amd64, waldorf, crypto_hash/groestl512

Computer: waldorf
Architecture: amd64
CPU ID: GenuineIntel-000106e5-bfebfbff
SUPERCOP version: 20160715
Operation: crypto_hash
Primitive: groestl512
TimeImplementationCompilerBenchmark dateSUPERCOP version
102800opterongcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
104036opterongcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
108960vpermgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
109380vpermgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
110452core2duogcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
110752core2duogcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
112824vpermgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
112852vperm-intrgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
112976opteronclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
113316vpermgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
113736vperm-intrgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
115116opterongcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
117588core2duogcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
117944core2duogcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
118140vperm-intrclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
119504vperm-intrgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
120200vperm-intrgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
120364opterongcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
122852sphlib-adaptedgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
131052core2duoclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
131508sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
131624sphlib-adaptedgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
134484sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
138372sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
138708sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
139068opt64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
139516sphlib-adaptedgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
141424opt64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
147112opt64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
147948sphlib-adaptedgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
152468opt64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
183852mmxgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
187944mmxclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
189652sphlib-adaptedclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
199832mmxgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
202916mmxgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
204236mmxgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
207092sphlibclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
208280sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
219604sphlib-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
221784sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
247524sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
250356sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
277780opt32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
280516opt32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
284312opt32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
301876opt32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
328596opt32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
55184832bit-bytesliced-c-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
100165632bit-bytesliced-c-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
111020432bit-bytesliced-c-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
114321632bit-bytesliced-c-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
181919232bit-bytesliced-c-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715

Test failure

Implementation: crypto_hash/groestl512/aesni
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
error 111

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv aesni avx
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv aesni avx
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv aesni avx
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv aesni avx

Compiler output

Implementation: crypto_hash/groestl512/aesni-intr
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
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.5.0/include/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' (vector of 2 'long long' values) 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' (vector of 2 'long long' values) from incompatible type 'int'
hash.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments aesni-intr

Compiler output

Implementation: crypto_hash/groestl512/avx-intr
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
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.5.0/include/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:868:10: error: unknown type name '__m256d'
hash.c: static __m256d ymm0, ymm1, ymm2, ymm3, ymm4, ymm5, ymm6, ymm7;
hash.c: ^
hash.c: ./groestl-intr-avx.h:869:10: error: unknown type name '__m256d'
hash.c: static __m256d ymm8, ymm9, ymm10, ymm11, ymm12, ymm13, ymm14, ymm15;
hash.c: ^
hash.c: ./groestl-intr-avx.h:870:10: error: unknown type name '__m256d'
hash.c: static __m256d ymmJ;
hash.c: ^
hash.c: ./groestl-intr-avx.h:871:10: error: unknown type name '__m256d'
hash.c: static __m256d TEMP0;
hash.c: ^
hash.c: ./groestl-intr-avx.h:872:10: error: unknown type name '__m256d'
hash.c: static __m256d TEMP1;
hash.c: ^
hash.c: ./groestl-intr-avx.h:873:10: error: unknown type name '__m256d'
hash.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx-intr

Compiler output

Implementation: crypto_hash/groestl512/vperm-intr
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:104:12: warning: comparison of array 'ctx->gt;chaining' equal to a null pointer is always false [-Wtautological-pointer-compare]
hash.c: if (ctx->gt;chaining == NULL || ctx->gt;buffer == NULL)
hash.c: ~~~~~^~~~~~~~ ~~~~
hash.c: hash.c:104:37: warning: comparison of array 'ctx->gt;buffer' equal to a null pointer is always false [-Wtautological-pointer-compare]
hash.c: if (ctx->gt;chaining == NULL || ctx->gt;buffer == NULL)
hash.c: ~~~~~^~~~~~ ~~~~
hash.c: 2 warnings generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments vperm-intr

Compiler output

Implementation: crypto_hash/groestl512/vperm
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:104:12: warning: comparison of array 'ctx->gt;chaining' equal to a null pointer is always false [-Wtautological-pointer-compare]
hash.c: if (ctx->gt;chaining == NULL || ctx->gt;buffer == NULL)
hash.c: ~~~~~^~~~~~~~ ~~~~
hash.c: hash.c:104:37: warning: comparison of array 'ctx->gt;buffer' equal to a null pointer is always false [-Wtautological-pointer-compare]
hash.c: if (ctx->gt;chaining == NULL || ctx->gt;buffer == NULL)
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: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: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments vperm

Compiler output

Implementation: crypto_hash/groestl512/aesni
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:104:12: warning: comparison of array 'ctx->gt;chaining' equal to a null pointer is always false [-Wtautological-pointer-compare]
hash.c: if (ctx->gt;chaining == NULL || ctx->gt;buffer == NULL)
hash.c: ~~~~~^~~~~~~~ ~~~~
hash.c: hash.c:104:37: warning: comparison of array 'ctx->gt;buffer' equal to a null pointer is always false [-Wtautological-pointer-compare]
hash.c: if (ctx->gt;chaining == NULL || ctx->gt;buffer == NULL)
hash.c: ~~~~~^~~~~~ ~~~~
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: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments aesni

Compiler output

Implementation: crypto_hash/groestl512/avx
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:104:12: warning: comparison of array 'ctx->gt;chaining' equal to a null pointer is always false [-Wtautological-pointer-compare]
hash.c: if (ctx->gt;chaining == NULL || ctx->gt;buffer == NULL)
hash.c: ~~~~~^~~~~~~~ ~~~~
hash.c: hash.c:104:37: warning: comparison of array 'ctx->gt;buffer' equal to a null pointer is always false [-Wtautological-pointer-compare]
hash.c: if (ctx->gt;chaining == NULL || ctx->gt;buffer == NULL)
hash.c: ~~~~~^~~~~~ ~~~~
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: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx

Compiler output

Implementation: crypto_hash/groestl512/opt64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
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: crypto_hash_groestl512.a(hash.o): In function `Update':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: crypto_hash_groestl512.a(hash.o): In function `Final':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: clang: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments opt64

Compiler output

Implementation: crypto_hash/groestl512/aesni-intr
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: In file included from groestl-intr-aes.h:11:0,
hash.c: from hash.c:28:
hash.c: groestl-intr-aes.h: In function 'TF1024':
hash.c: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/wmmintrin.h:69:1: error: inlining failed in call to always_inline '_mm_aesenclast_si128': target specific option mismatch
hash.c: _mm_aesenclast_si128 (__m128i __X, __m128i __Y)
hash.c: ^
hash.c: In file included from hash.c:28:0:
hash.c: groestl-intr-aes.h:525:8: error: called from here
hash.c: a0 = _mm_aesenclast_si128(a0, b0);\
hash.c: ^
hash.c: groestl-intr-aes.h:552:5: note: in expansion of macro 'SUBMIX'
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:848:3: note: in expansion of macro 'ROUNDS_P'
hash.c: ROUNDS_P();
hash.c: ^
hash.c: In file included from groestl-intr-aes.h:11:0,
hash.c: from hash.c:28:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/wmmintrin.h:69:1: error: inlining failed in call to always_inline '_mm_aesenclast_si128': target specific option mismatch
hash.c: _mm_aesenclast_si128 (__m128i __X, __m128i __Y)
hash.c: ^
hash.c: In file included from hash.c:28:0:
hash.c: groestl-intr-aes.h:526:8: error: called from here
hash.c: a1 = _mm_aesenclast_si128(a1, b0);\
hash.c: ^
hash.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv aesni-intr
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv aesni-intr
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv aesni-intr
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv aesni-intr

Compiler output

Implementation: crypto_hash/groestl512/avx-intr
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: In file included from hash.c:31:0:
hash.c: groestl-intr-avx.h: In function 'TF1024':
hash.c: groestl-intr-avx.h:906:8: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
hash.c: ymm8 = insert_m128i_in_m256d(ymm8, xmm8, 0);
hash.c: ^
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:41:0,
hash.c: from groestl-intr-avx.h:12,
hash.c: from hash.c:31:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avxintrin.h:1388:1: error: inlining failed in call to always_inline '_mm256_castpd_si256': target specific option mismatch
hash.c: _mm256_castpd_si256 (__m256d __A)
hash.c: ^
hash.c: In file included from hash.c:31:0:
hash.c: groestl-intr-avx.h:33:47: error: called from here
hash.c: #define insert_m128i_in_m256d(ymm, xmm, pos) (_mm256_castsi256_pd(_mm256_insertf128_si256(_mm256_castpd_si256(ymm), xmm, pos)))
hash.c: ^
hash.c: groestl-intr-avx.h:906:11: note: in expansion of macro 'insert_m128i_in_m256d'
hash.c: ymm8 = insert_m128i_in_m256d(ymm8, xmm8, 0);
hash.c: ^
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:41:0,
hash.c: from groestl-intr-avx.h:12,
hash.c: from hash.c:31:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avxintrin.h:738:1: error: inlining failed in call to always_inline '_mm256_insertf128_si256': target specific option mismatch
hash.c: _mm256_insertf128_si256 (__m256i __X, __m128i __Y, const int __O)
hash.c: ^
hash.c: In file included from hash.c:31:0:
hash.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv avx-intr
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv avx-intr
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv avx-intr
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv avx-intr