Implementation notes: amd64, wintermute, crypto_hash/groestl256

Computer: wintermute
Architecture: amd64
CPU ID: GenuineIntel-000306c3-bfebfbff
SUPERCOP version: 20140505
Operation: crypto_hash
Primitive: groestl256
TimeImplementationCompilerBenchmark dateSUPERCOP version
30876opteron-unrolledclang -O3 -mavx2014050820140505
30892opteron-unrolledclang -O3 -mavx22014050820140505
30972opteron-unrolledclang -O32014050820140505
32204opteronclang -O3 -mavx2014050820140505
32228opteronclang -O32014050820140505
32244opteronclang -O3 -mavx22014050820140505
32600core2duoclang -O3 -mavx2014050820140505
32648core2duoclang -O32014050820140505
32672core2duoclang -O3 -mavx22014050820140505
36032vperm-intrclang -O3 -mavx2014050820140505
36040vperm-intrclang -O3 -mavx22014050820140505
43496sphlib-adaptedclang -O3 -mavx2014050820140505
43992sphlib-adaptedclang -O3 -mavx22014050820140505
44316sphlib-adaptedclang -O32014050820140505
46072sphlibclang -O3 -mavx22014050820140505
46580sphlibclang -O32014050820140505
47040sphlibclang -O3 -mavx2014050820140505
53580mmxclang -O3 -mavx2014050820140505
53584mmxclang -O3 -mavx22014050820140505
53908sphlib-smallclang -O3 -mavx2014050820140505
53912mmxclang -O32014050820140505
54676sphlib-smallclang -O32014050820140505
55404sphlib-smallclang -O3 -mavx22014050820140505
65056sphlibcc2014050820140505
67792sphlib-adaptedcc2014050820140505
86616opt32clang -O3 -mavx22014050820140505
87012opt32clang -O32014050820140505
87432opt32clang -O3 -mavx2014050820140505
9792032bit-2ktableclang -O3 -mavx22014050820140505
9814032bit-2ktableclang -O3 -mavx2014050820140505
9815632bit-2ktableclang -O32014050820140505
113200sphlib-smallcc2014050820140505
201260opt32cc2014050820140505
2294248bit_cclang -O32014050820140505
2297528bit_cclang -O3 -mavx22014050820140505
2298808bit_cclang -O3 -mavx2014050820140505
25290432bit-bytesliced-c-smallclang -O3 -mavx2014050820140505
25302832bit-bytesliced-c-smallclang -O3 -mavx22014050820140505
25322432bit-bytesliced-c-smallclang -O32014050820140505
38352432bit-bytesliced-c-fastclang -O32014050820140505
38506432bit-bytesliced-c-fastclang -O3 -mavx22014050820140505
38509632bit-bytesliced-c-fastclang -O3 -mavx2014050820140505
42204432bit-2ktablecc2014050820140505
614468mmxcc2014050820140505
7136368bit_ccc2014050820140505
94554432bit-bytesliced-c-fastcc2014050820140505
172402032bit-bytesliced-c-smallcc2014050820140505

Compiler output

Implementation: crypto_hash/groestl256/vperm
Compiler: cc
hash.c: In file included from hash.c:19:
hash.c: ./groestl-asm-vperm.h:705:3: error: invalid operand for instruction
hash.c: VPERM_Transform_RoundConst();
hash.c: ^
hash.c: ./groestl-asm-vperm.h:685:8: note: expanded from macro 'VPERM_Transform_RoundConst'
hash.c: asm ("movaps xmm0, [ROUND_CONST_Lx]");\
hash.c: ^
hash.c: gt;:1:15: note: instantiated into assembly here
hash.c: movaps xmm0, [ROUND_CONST_Lx]
hash.c: ^~~~~~~~~~~~~~~~
hash.c: In file included from hash.c:19:
hash.c: ./groestl-asm-vperm.h:705:3: error: invalid operand for instruction
hash.c: VPERM_Transform_RoundConst();
hash.c: ^
hash.c: ./groestl-asm-vperm.h:686:3: note: expanded from macro 'VPERM_Transform_RoundConst'
hash.c: VPERM_Transform(0, 1, VPERM_IPT, 4, 5, 6, 7, 8, 9, 10);\
hash.c: ^
hash.c: ./groestl-asm-vperm.h:142:3: note: expanded from macro 'VPERM_Transform'
hash.c: VPERM_Transform_Set_Const(table, c0, c1, c2);\
hash.c: ^
hash.c: ./groestl-asm-vperm.h:123:8: note: expanded from macro 'VPERM_Transform_Set_Const'
hash.c: asm ("movaps xmm"tostr(c0)", [ALL_0F]");\
hash.c: ^
hash.c: gt;:1:15: note: instantiated into assembly here
hash.c: movaps xmm8, [ALL_0F]
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/groestl256/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:368:3: warning: implicit declaration of function '_mm_shuffle_epi8' is invalid in C99 [-Wimplicit-function-declaration]
hash.c: Matrix_Transpose_A(xmm12, xmm13, xmm14, xmm15, xmm2, xmm6, xmm7, xmm0);
hash.c: ^
hash.c: ./groestl-intr-aes.h:240:8: note: expanded from macro 'Matrix_Transpose_A'
hash.c: i0 = _mm_shuffle_epi8(i0, t0);\
hash.c: ^
hash.c: ./groestl-intr-aes.h:368:3: error: assigning to '__m128i' from incompatible type 'int'
hash.c: Matrix_Transpose_A(xmm12, xmm13, xmm14, xmm15, xmm2, xmm6, xmm7, xmm0);
hash.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: ./groestl-intr-aes.h:240:6: note: expanded from macro 'Matrix_Transpose_A'
hash.c: i0 = _mm_shuffle_epi8(i0, t0);\
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: ./groestl-intr-aes.h:368:3: error: assigning to '__m128i' from incompatible type 'int'
hash.c: Matrix_Transpose_A(xmm12, xmm13, xmm14, xmm15, xmm2, xmm6, xmm7, xmm0);
hash.c: ...

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

Compiler output

Implementation: crypto_hash/groestl256/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/groestl256/avx
Compiler: cc
hash.c: In file included from hash.c:9:
hash.c: In file included from ./groestl-asm-avx.h:10:
hash.c: ./hash.h:26:17: warning: redefinition of typedef 'uint_8t' is a C11 feature [-Wtypedef-redefinition]
hash.c: typedef uint8_t u8;
hash.c: ^
hash.c: ./brg_types.h:225:12: note: expanded from macro 'u8'
hash.c: #define u8 uint_8t
hash.c: ^
hash.c: ./brg_types.h:61:28: note: previous definition is here
hash.c: typedef unsigned char uint_8t;
hash.c: ^
hash.c: In file included from hash.c:9:
hash.c: In file included from ./groestl-asm-avx.h:10:
hash.c: ./hash.h:27:18: warning: redefinition of typedef 'uint_32t' is a C11 feature [-Wtypedef-redefinition]
hash.c: typedef uint32_t u32;
hash.c: ^
hash.c: ./brg_types.h:226:13: note: expanded from macro 'u32'
hash.c: #define u32 uint_32t
hash.c: ^
hash.c: ./brg_types.h:80:27: note: previous definition is here
hash.c: typedef unsigned int uint_32t;
hash.c: ^
hash.c: In file included from hash.c:9:
hash.c: In file included from ./groestl-asm-avx.h:10:
hash.c: ./hash.h:28:18: warning: redefinition of typedef 'uint_64t' is a C11 feature [-Wtypedef-redefinition]
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/groestl256/avx-intr
Compiler: cc
hash.c: In file included from hash.c:9:
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:9:
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:9:
hash.c: In file included from ./groestl-intr-avx.h:13:
hash.c: ./hash.h:26:17: warning: redefinition of typedef 'uint_8t' is a C11 feature [-Wtypedef-redefinition]
hash.c: typedef uint8_t u8;
hash.c: ^
hash.c: ./brg_types.h:225:12: note: expanded from macro 'u8'
hash.c: #define u8 uint_8t
hash.c: ^
hash.c: ./brg_types.h:61:28: note: previous definition is here
hash.c: typedef unsigned char uint_8t;
hash.c: ^
hash.c: In file included from hash.c:9:
hash.c: In file included from ./groestl-intr-avx.h:13:
hash.c: ./hash.h:27:18: warning: redefinition of typedef 'uint_32t' is a C11 feature [-Wtypedef-redefinition]
hash.c: typedef uint32_t u32;
hash.c: ...

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

Compiler output

Implementation: crypto_hash/groestl256/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_groestl256.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/groestl256/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:188: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:188:10: note: expanded from macro 'SET_CONSTANTS'
hash.c: }while(0);
hash.c: ^
hash.c: ./groestl-asm-aes.h:389:8: error: invalid operand for instruction
hash.c: asm ("movaps xmm12, [rdi+0*16]");
hash.c: ^
hash.c: gt;:1:16: note: instantiated into assembly here
hash.c: movaps xmm12, [rdi+0*16]
hash.c: ^~~~~~~~~~
hash.c: In file included from hash.c:13:
hash.c: ./groestl-asm-aes.h:390:8: error: invalid operand for instruction
hash.c: asm ("movaps xmm13, [rdi+1*16]");
hash.c: ^
hash.c: gt;:1:16: note: instantiated into assembly here
hash.c: movaps xmm13, [rdi+1*16]
hash.c: ^~~~~~~~~~
hash.c: In file included from hash.c:13:
hash.c: ./groestl-asm-aes.h:391: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/groestl256/core2duo
Compiler: cc
try.c: crypto_hash_groestl256.a(hash.o): In function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `Q512ASM'
try.c: hash.c:(.text+0x...): undefined reference to `P512ASM'
try.c: crypto_hash_groestl256.a(hash.o): In function `OutputTransformation':
try.c: hash.c:(.text+0x...): undefined reference to `P512ASM'
try.c: cc: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
cc core2duo opteron opteron-unrolled

Compiler output

Implementation: crypto_hash/groestl256/neon-vperm
Compiler: cc
vperm-neon.S: vperm-neon.S:12:1: error: unknown directive
vperm-neon.S: .syntax unified
vperm-neon.S: ^
vperm-neon.S: vperm-neon.S:18:8: error: alignment must be a power of 2
vperm-neon.S: .align 15
vperm-neon.S: ^
vperm-neon.S: vperm-neon.S:57:68: error: invalid variant 'L0'
vperm-neon.S: .byte 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70 @L0 const for P
vperm-neon.S: ^
vperm-neon.S: vperm-neon.S:58:68: error: invalid variant 'L0'
vperm-neon.S: .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff @L0 const for Q
vperm-neon.S: ^
vperm-neon.S: vperm-neon.S:73:8: error: alignment must be a power of 2
vperm-neon.S: .align 15
vperm-neon.S: ^
vperm-neon.S: vperm-neon.S:74:22: error: invalid variant 'Temporary'
vperm-neon.S: .lcomm TEMP_Q, 16*8 @Temporary storage for q registers.
vperm-neon.S: ^
vperm-neon.S: vperm-neon.S:75:28: error: invalid variant 'RoundConst'
vperm-neon.S: .lcomm ROUND_CONST_Lx, 16 @RoundConst for middle rows gets saved there.
vperm-neon.S: ^
vperm-neon.S: vperm-neon.S:76:31: error: invalid variant 'RoundConst'
vperm-neon.S: .lcomm ROUND_CONST_L0, 16*10 @RoundConst for first row.
vperm-neon.S: ^
vperm-neon.S: vperm-neon.S:77:31: error: invalid variant 'RoundConst'
vperm-neon.S: ...

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

Compiler output

Implementation: crypto_hash/groestl256/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/groestl256/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:421: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-aes.h:218:3: note: expanded from macro 'ROUNDS_P_Q'
hash.c: ROUND(0, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7);\
hash.c: ^
hash.c: ./groestl-intr-aes.h:195:8: note: expanded from macro 'ROUND'
hash.c: a0 = _mm_aesenclast_si128(a0, b0);\
hash.c: ^
hash.c: ./groestl-intr-aes.h:421:3: error: assigning to '__m128i' from incompatible type 'int'
hash.c: ROUNDS_P_Q();
hash.c: ^~~~~~~~~~~~
hash.c: ./groestl-intr-aes.h:218:3: note: expanded from macro 'ROUNDS_P_Q'
hash.c: ROUND(0, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7);\
hash.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: ./groestl-intr-aes.h:195:6: note: expanded from macro 'ROUND'
hash.c: a0 = _mm_aesenclast_si128(a0, b0);\
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: ./groestl-intr-aes.h:421: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/groestl256/avx-intr
Compiler: clang -O3 -mavx
hash.c: In file included from hash.c:9:
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:9:
hash.c: In file included from ./groestl-intr-avx.h:13:
hash.c: ./hash.h:26:17: warning: redefinition of typedef 'uint_8t' is a C11 feature [-Wtypedef-redefinition]
hash.c: typedef uint8_t u8;
hash.c: ^
hash.c: ./brg_types.h:225:12: note: expanded from macro 'u8'
hash.c: #define u8 uint_8t
hash.c: ^
hash.c: ./brg_types.h:61:28: note: previous definition is here
hash.c: typedef unsigned char uint_8t;
hash.c: ^
hash.c: In file included from hash.c:9:
hash.c: In file included from ./groestl-intr-avx.h:13:
hash.c: ./hash.h:27:18: warning: redefinition of typedef 'uint_32t' is a C11 feature [-Wtypedef-redefinition]
hash.c: typedef uint32_t u32;
hash.c: ^
hash.c: ./brg_types.h:226:13: note: expanded from macro 'u32'
hash.c: #define u32 uint_32t
hash.c: ^
hash.c: ./brg_types.h:80:27: note: previous definition is here
hash.c: ...

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