Implementation notes: amd64, utrecht, crypto_hash/blake256

Computer: utrecht
Architecture: amd64
CPU ID: GenuineIntel-000006fb-bfebfbff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: blake256
TimeImplementationCompilerBenchmark dateSUPERCOP version
20925vect128-mmxhackgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
21060ssse3gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
21069vect128-mmxhackgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
21159sse2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
21411vect128-mmxhackgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
21474ssse3gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
21627sse2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
21636sse2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
22176ssse3gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
22203sse2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
22230bswapgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
22302ssse3gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
22374vect128gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
22437vect128-mmxhackgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
22635vect128gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
22644vect128gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
22725bswapgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
22779vect128gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
22815bswapgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
22905bswapgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
23211regsgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
27099regsgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
27162regsgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
27378regsgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
28179sandygcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
29952sandygcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
31059sse2-2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
31374sse2-2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
31518sse2-2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
31878sse2-2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
32238refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
33642refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
34335refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
34533sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
34641sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
35064sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
38097refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
38862sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
39627sandygcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
42453sandygcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
46107sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
48888sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
49023sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
54981sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731

Test failure

Implementation: crypto_hash/blake256/avxicc
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 avxicc avxs
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv avxicc avxs
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv avxicc avxs
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv avxicc avxs

Compiler output

Implementation: crypto_hash/blake256/sse41
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: In file included from hash.c:5:0:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/4.8/include/smmintrin.h:31:3: error: #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:121:0:
hash.c: rounds.sse41.h: In function 'blake256_compress':
hash.c: rounds.sse41.h:71:6: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: tmp0 = _mm_blend_epi16(m1, m2, 0x0C);
hash.c: ^
hash.c: rounds.sse41.h:73:6: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: tmp2 = _mm_blend_epi16(tmp0, tmp1, 0xF0);
hash.c: ^
hash.c: rounds.sse41.h:76:6: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: tmp4 = _mm_blend_epi16(m1,m3,0xC0);
hash.c: ^
hash.c: rounds.sse41.h:77:6: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: tmp5 = _mm_blend_epi16(tmp3, tmp4, 0xF0);
hash.c: ^
hash.c: rounds.sse41.h:106:6: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: tmp1 = _mm_blend_epi16(m2, tmp0, 0x30);
hash.c: ^
hash.c: rounds.sse41.h:107:6: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: tmp2 = _mm_blend_epi16(m0, tmp1, 0xF0);
hash.c: ^
hash.c: rounds.sse41.h:111:6: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: ...

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

Compiler output

Implementation: crypto_hash/blake256/xop
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: In file included from rounds.h:43:0,
hash.c: from blake256.h:127,
hash.c: from hash.c:2:
hash.c: hash.c: In function 'blake256_compress':
hash.c: load.xop.h:19:4: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: s0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(6),TOB(4),TOB(2),TOB(0)) ); \
hash.c: ^
hash.c: rounds.h:51:3: note: in expansion of macro 'LOAD_MSG_0_1'
hash.c: LOAD_MSG_ ##r ##_1(buf1); \
hash.c: ^
hash.c: hash.c:115:3: note: in expansion of macro 'ROUND'
hash.c: ROUND( 0);
hash.c: ^
hash.c: In file included from blake256.h:127:0,
hash.c: from hash.c:2:
hash.c: rounds.h:8:8: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: row4 = _mm_roti_epi32(row4, -16); \
hash.c: ^
hash.c: rounds.h:52:3: note: in expansion of macro 'G1'
hash.c: G1(row1,row2,row3,row4,buf1); \
hash.c: ^
hash.c: hash.c:115:3: note: in expansion of macro 'ROUND'
hash.c: ROUND( 0);
hash.c: ^
hash.c: rounds.h:11:8: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: ...

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

Compiler output

Implementation: crypto_hash/blake256/sse41-2
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: In file included from rounds.h:45:0,
hash.c: from blake256.h:127,
hash.c: from hash.c:2:
hash.c: hash.c: In function 'blake256_compress':
hash.c: load.sse41.h:31:4: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: t0 = _mm_blend_epi16(m1, m2, 0x0C); \
hash.c: ^
hash.c: rounds.h:51:3: note: in expansion of macro 'LOAD_MSG_1_1'
hash.c: LOAD_MSG_ ##r ##_1(buf1); \
hash.c: ^
hash.c: hash.c:116:3: note: in expansion of macro 'ROUND'
hash.c: ROUND( 1);
hash.c: ^
hash.c: load.sse41.h:33:4: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: t2 = _mm_blend_epi16(t0, t1, 0xF0); \
hash.c: ^
hash.c: rounds.h:51:3: note: in expansion of macro 'LOAD_MSG_1_1'
hash.c: LOAD_MSG_ ##r ##_1(buf1); \
hash.c: ^
hash.c: hash.c:116:3: note: in expansion of macro 'ROUND'
hash.c: ROUND( 1);
hash.c: ^
hash.c: load.sse41.h:42:4: error: incompatible types when assigning to type '__m128i' from type 'int'
hash.c: t1 = _mm_blend_epi16(m1,m3,0xC0); \
hash.c: ^
hash.c: ...

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