Implementation notes: x86, thoth, crypto_hash/blake32

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: blake32
TimeImplementationCompilerBenchmark dateSUPERCOP version
29461sphlibclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
29692sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
29736sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
29911sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
30978sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
34935sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
41912sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
42034refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
43717refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
43997sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
46066refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
46753sphlib-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
50475sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
57737refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
62944refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724

Compiler output

Implementation: crypto_hash/blake32/sse2
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:103:10: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: row1 = _mm_set_epi32(state->gt;h[ 3], state->gt;h[ 2],
hash.c: ^
hash.c: hash.c:105:10: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: row2 = _mm_set_epi32(state->gt;h[ 7], state->gt;h[ 6],
hash.c: ^
hash.c: hash.c:107:10: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: row3 = _mm_set_epi32(0x03707344, 0x13198A2E, 0x85A308D3, 0x243F6A88);
hash.c: ^
hash.c: hash.c:110:12: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: row4 = _mm_set_epi32(0xEC4E6C89, 0x082EFA98, 0x299F31D0, 0xA4093822);
hash.c: ^
hash.c: hash.c:112:12: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: row4 = _mm_set_epi32(0xEC4E6C89^state->gt;t[1], 0x082EFA98^state->gt;t[1],
hash.c: ^
hash.c: hash.c:189:3: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: round(0);
hash.c: ^
hash.c: hash.c:117:16: note: expanded from macro 'round'
hash.c: buf1 = _mm_set_epi32(m[sig[r][ 6]], \
hash.c: ^
hash.c: hash.c:189:3: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: hash.c:121:17: note: expanded from macro 'round'
hash.c: buf2 = _mm_set_epi32(z[sig[r][ 7]], \
hash.c: ^
hash.c: ...

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

Compiler output

Implementation: crypto_hash/blake32/ssse3
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:65:17: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: __m128i r8 = _mm_load_si128((__m128i*)rot8);
hash.c: ^
hash.c: hash.c:66:17: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: __m128i r16 = _mm_load_si128((__m128i*)rot16);
hash.c: ^
hash.c: hash.c:110:10: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: row1 = _mm_set_epi32(state->gt;h[ 3], state->gt;h[ 2],
hash.c: ^
hash.c: hash.c:112:10: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: row2 = _mm_set_epi32(state->gt;h[ 7], state->gt;h[ 6],
hash.c: ^
hash.c: hash.c:114:10: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: row3 = _mm_set_epi32(0x03707344, 0x13198A2E, 0x85A308D3, 0x243F6A88);
hash.c: ^
hash.c: hash.c:117:12: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: row4 = _mm_set_epi32(0xEC4E6C89, 0x082EFA98, 0x299F31D0, 0xA4093822);
hash.c: ^
hash.c: hash.c:119:12: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: row4 = _mm_set_epi32(0xEC4E6C89^state->gt;t[1], 0x082EFA98^state->gt;t[1],
hash.c: ^
hash.c: hash.c:196:3: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'blake32_compress' that is compiled without support for 'sse2'
hash.c: round(0);
hash.c: ^
hash.c: hash.c:124:16: note: expanded from macro 'round'
hash.c: ...

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

Compiler output

Implementation: crypto_hash/blake32/sse2
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: hash.c: In function 'blake32_compress':
hash.c: hash.c:103:8: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
hash.c: row1 = _mm_set_epi32(state->gt;h[ 3], state->gt;h[ 2],
hash.c: ^
hash.c: In file included from hash.c:3:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch
hash.c: _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
hash.c: ^
hash.c: hash.c:107:8: error: called from here
hash.c: row3 = _mm_set_epi32(0x03707344, 0x13198A2E, 0x85A308D3, 0x243F6A88);
hash.c: ^
hash.c: In file included from hash.c:3:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch
hash.c: _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
hash.c: ^
hash.c: hash.c:105:8: error: called from here
hash.c: row2 = _mm_set_epi32(state->gt;h[ 7], state->gt;h[ 6],
hash.c: ^
hash.c: In file included from hash.c:3:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch
hash.c: _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
hash.c: ^
hash.c: hash.c:103:8: error: called from here
hash.c: row1 = _mm_set_epi32(state->gt;h[ 3], state->gt;h[ 2],
hash.c: ^
hash.c: ...

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

Compiler output

Implementation: crypto_hash/blake32/ssse3
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: hash.c: In function 'blake32_compress':
hash.c: hash.c:65:11: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
hash.c: __m128i r8 = _mm_load_si128((__m128i*)rot8);
hash.c: ^
hash.c: In file included from hash.c:4:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch
hash.c: _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
hash.c: ^
hash.c: hash.c:114:8: error: called from here
hash.c: row3 = _mm_set_epi32(0x03707344, 0x13198A2E, 0x85A308D3, 0x243F6A88);
hash.c: ^
hash.c: In file included from hash.c:4:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch
hash.c: _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
hash.c: ^
hash.c: hash.c:112:8: error: called from here
hash.c: row2 = _mm_set_epi32(state->gt;h[ 7], state->gt;h[ 6],
hash.c: ^
hash.c: In file included from hash.c:4:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch
hash.c: _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
hash.c: ^
hash.c: hash.c:110:8: error: called from here
hash.c: row1 = _mm_set_epi32(state->gt;h[ 3], state->gt;h[ 2],
hash.c: ^
hash.c: ...

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