Implementation notes: amd64, hobbes, crypto_hash/bblake512

Computer: hobbes
Architecture: amd64
CPU ID: AuthenticAMD-00600f20-178bfbff
SUPERCOP version: 20171218
Operation: crypto_hash
Primitive: bblake512
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
12439? ? ?? ? ?xopgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2017072920170725
12455? ? ?? ? ?xopgcc_-m64_-march=native_-mtune=native_-O_-fomit-frame-pointer2017072920170725
12585? ? ?? ? ?xopgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2017072920170725
12608? ? ?? ? ?xopgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2017072920170725
12629? ? ?? ? ?xopgcc_-m64_-march=native_-mtune=native_-O2_-fomit-frame-pointer2017072920170725
12633? ? ?? ? ?xopgcc_-m64_-march=native_-mtune=native_-O3_-fomit-frame-pointer2017072920170725
13727? ? ?? ? ?xopgcc_-m64_-march=native_-mtune=native_-Os_-fomit-frame-pointer2017072920170725
13792? ? ?? ? ?xopgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2017072920170725

Compiler output

Implementation: crypto_hash/bblake512/xop
Compiler: cc
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:52:0,
hash.c: from hash.c:5:
hash.c: hash.c: In function 'blake512_final':
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/xopintrin.h:212:1: error: inlining failed in call to always_inline '_mm_perm_epi8': target specific option mismatch
hash.c: _mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C)
hash.c: ^
hash.c: hash.c:389:5: error: called from here
hash.c: _mm_storeu_si128((__m128i*)(digest + 48), BSWAP64(S->h[3]));
hash.c: ^
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:52:0,
hash.c: from hash.c:5:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/xopintrin.h:212:1: error: inlining failed in call to always_inline '_mm_perm_epi8': target specific option mismatch
hash.c: _mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C)
hash.c: ^
hash.c: hash.c:388:5: error: called from here
hash.c: _mm_storeu_si128((__m128i*)(digest + 32), BSWAP64(S->h[2]));
hash.c: ^
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:52:0,
hash.c: from hash.c:5:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/xopintrin.h:212:1: error: inlining failed in call to always_inline '_mm_perm_epi8': target specific option mismatch
hash.c: _mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C)
hash.c: ^
hash.c: hash.c:387:5: error: called from here
hash.c: _mm_storeu_si128((__m128i*)(digest + 16), BSWAP64(S->h[1]));
hash.c: ^
hash.c: ...

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
cc xop
gcc xop
gcc -funroll-loops xop

Compiler output

Implementation: crypto_hash/bblake512/xop
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
hash.c: hash.c:81:8: error: always_inline function '_mm_perm_epi8' requires target feature 'sse4a', but would be inlined into function 'blake512_compress' that is compiled without support for 'sse4a'
hash.c: m0 = BSWAP64(m0);
hash.c: ^
hash.c: ./rounds.h:13:21: note: expanded from macro 'BSWAP64'
hash.c: #define BSWAP64(x) _mm_perm_epi8((x),(x),u8to64)
hash.c: ^
hash.c: hash.c:82:8: error: always_inline function '_mm_perm_epi8' requires target feature 'sse4a', but would be inlined into function 'blake512_compress' that is compiled without support for 'sse4a'
hash.c: m1 = BSWAP64(m1);
hash.c: ^
hash.c: ./rounds.h:13:21: note: expanded from macro 'BSWAP64'
hash.c: #define BSWAP64(x) _mm_perm_epi8((x),(x),u8to64)
hash.c: ^
hash.c: hash.c:83:8: error: always_inline function '_mm_perm_epi8' requires target feature 'sse4a', but would be inlined into function 'blake512_compress' that is compiled without support for 'sse4a'
hash.c: m2 = BSWAP64(m2);
hash.c: ^
hash.c: ./rounds.h:13:21: note: expanded from macro 'BSWAP64'
hash.c: #define BSWAP64(x) _mm_perm_epi8((x),(x),u8to64)
hash.c: ^
hash.c: hash.c:84:8: error: always_inline function '_mm_perm_epi8' requires target feature 'sse4a', but would be inlined into function 'blake512_compress' that is compiled without support for 'sse4a'
hash.c: m3 = BSWAP64(m3);
hash.c: ^
hash.c: ./rounds.h:13:21: note: expanded from macro 'BSWAP64'
hash.c: #define BSWAP64(x) _mm_perm_epi8((x),(x),u8to64)
hash.c: ^
hash.c: hash.c:85:8: error: always_inline function '_mm_perm_epi8' requires target feature 'sse4a', but would be inlined into function 'blake512_compress' that is compiled without support for 'sse4a'
hash.c: ...

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments xop
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments xop
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments xop
clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments xop
clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments xop
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments xop

Compiler output

Implementation: crypto_hash/bblake512/xop
Compiler: clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments
try.c: crypto_hash_bblake512.a(hash.o): In function `blake512_update':
try.c: hash.c:(.text+0x...): undefined reference to `blake512_compress'
try.c: hash.c:(.text+0x...): undefined reference to `blake512_compress'
try.c: crypto_hash_bblake512.a(hash.o): In function `blake512_final':
try.c: hash.c:(.text+0x...): undefined reference to `blake512_compress'
try.c: hash.c:(.text+0x...): undefined reference to `blake512_compress'
try.c: hash.c:(.text+0x...): undefined reference to `blake512_compress'
try.c: crypto_hash_bblake512.a(hash.o):hash.c:(.text+0x...): more undefined references to `blake512_compress' follow
try.c: crypto_hash_bblake512.a(hash.o): In function `crypto_hash_bblake512_xop':
try.c: hash.c:(.text+0x...): undefined reference to `blake512_compress2'
try.c: hash.c:(.text+0x...): undefined reference to `blake512_compress'
try.c: hash.c:(.text+0x...): undefined reference to `blake512_compress'
try.c: hash.c:(.text+0x...): undefined reference to `blake512_compress'
try.c: clang: error: linker command failed with exit code 1 (use -v to see invocation)

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

Compiler output

Implementation: crypto_hash/bblake512/xop
Compiler: gcc -O2 -fomit-frame-pointer
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:37:0,
hash.c: from hash.c:5:
hash.c: hash.c: In function 'blake512_compress':
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/tmmintrin.h:185:1: error: inlining failed in call to always_inline '_mm_alignr_epi8': target specific option mismatch
hash.c: _mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N)
hash.c: ^
hash.c: In file included from hash.c:8:0:
hash.c: rounds.h:2096:5: error: called from here
hash.c: t1 = _mm_alignr_epi8(row4h, row4l, 8); \
hash.c: ^
hash.c: rounds.h:2137:3: note: in expansion of macro 'UNDIAGONALIZE'
hash.c: UNDIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h);
hash.c: ^
hash.c: hash.c:132:3: note: in expansion of macro 'ROUND'
hash.c: ROUND(15);
hash.c: ^
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:37:0,
hash.c: from hash.c:5:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/tmmintrin.h:185:1: error: inlining failed in call to always_inline '_mm_alignr_epi8': target specific option mismatch
hash.c: _mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N)
hash.c: ^
hash.c: In file included from hash.c:8:0:
hash.c: rounds.h:2095:5: error: called from here
hash.c: t0 = _mm_alignr_epi8(row4l, row4h, 8); \
hash.c: ^
hash.c: ...

Number of similar (compiler,implementation) pairs: 68, namely:
CompilerImplementations
gcc -O2 -fomit-frame-pointer xop
gcc -O3 -fomit-frame-pointer xop
gcc -O -fomit-frame-pointer xop
gcc -Os -fomit-frame-pointer xop
gcc -fno-schedule-insns -O2 -fomit-frame-pointer xop
gcc -fno-schedule-insns -O3 -fomit-frame-pointer xop
gcc -fno-schedule-insns -O -fomit-frame-pointer xop
gcc -fno-schedule-insns -Os -fomit-frame-pointer xop
gcc -funroll-loops -O2 -fomit-frame-pointer xop
gcc -funroll-loops -O3 -fomit-frame-pointer xop
gcc -funroll-loops -O -fomit-frame-pointer xop
gcc -funroll-loops -Os -fomit-frame-pointer xop
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer xop
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer xop
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer xop
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer xop
gcc -funroll-loops -m64 -O2 -fomit-frame-pointer xop
gcc -funroll-loops -m64 -O3 -fomit-frame-pointer xop
gcc -funroll-loops -m64 -O -fomit-frame-pointer xop
gcc -funroll-loops -m64 -Os -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer xop
gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer xop
gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer xop
gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer xop
gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer xop
gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer xop
gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer xop
gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer xop
gcc -funroll-loops -march=k8 -O -fomit-frame-pointer xop
gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer xop
gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer xop
gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer xop
gcc -funroll-loops -march=nocona -O -fomit-frame-pointer xop
gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer xop
gcc -m64 -O2 -fomit-frame-pointer xop
gcc -m64 -O3 -fomit-frame-pointer xop
gcc -m64 -O -fomit-frame-pointer xop
gcc -m64 -Os -fomit-frame-pointer xop
gcc -m64 -march=k8 -O2 -fomit-frame-pointer xop
gcc -m64 -march=k8 -O3 -fomit-frame-pointer xop
gcc -m64 -march=k8 -O -fomit-frame-pointer xop
gcc -m64 -march=k8 -Os -fomit-frame-pointer xop
gcc -m64 -march=nocona -O2 -fomit-frame-pointer xop
gcc -m64 -march=nocona -O3 -fomit-frame-pointer xop
gcc -m64 -march=nocona -O -fomit-frame-pointer xop
gcc -m64 -march=nocona -Os -fomit-frame-pointer xop
gcc -march=barcelona -O2 -fomit-frame-pointer xop
gcc -march=barcelona -O3 -fomit-frame-pointer xop
gcc -march=barcelona -O -fomit-frame-pointer xop
gcc -march=barcelona -Os -fomit-frame-pointer xop
gcc -march=k8 -O2 -fomit-frame-pointer xop
gcc -march=k8 -O3 -fomit-frame-pointer xop
gcc -march=k8 -O -fomit-frame-pointer xop
gcc -march=k8 -Os -fomit-frame-pointer xop
gcc -march=nocona -O2 -fomit-frame-pointer xop
gcc -march=nocona -O3 -fomit-frame-pointer xop
gcc -march=nocona -O -fomit-frame-pointer xop
gcc -march=nocona -Os -fomit-frame-pointer xop

Compiler output

Implementation: crypto_hash/bblake512/xop
Compiler: gcc -m64 -march=barcelona -O2 -fomit-frame-pointer
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:37:0,
hash.c: from hash.c:5:
hash.c: hash.c: In function 'blake512_compress':
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/tmmintrin.h:185:1: error: inlining failed in call to always_inline '_mm_alignr_epi8': target specific option mismatch
hash.c: _mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N)
hash.c: ^
hash.c: In file included from hash.c:8:0:
hash.c: rounds.h:2096:5: error: called from here
hash.c: t1 = _mm_alignr_epi8(row4h, row4l, 8); \
hash.c: ^
hash.c: rounds.h:2137:3: note: in expansion of macro 'UNDIAGONALIZE'
hash.c: UNDIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h);
hash.c: ^
hash.c: hash.c:132:3: note: in expansion of macro 'ROUND'
hash.c: ROUND(15);
hash.c: ^
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:37:0,
hash.c: from hash.c:5:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/tmmintrin.h:185:1: error: inlining failed in call to always_inline '_mm_alignr_epi8': target specific option mismatch
hash.c: _mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N)
hash.c: ^
hash.c: In file included from hash.c:8:0:
hash.c: rounds.h:2095:5: error: called from here
hash.c: t0 = _mm_alignr_epi8(row4l, row4h, 8); \
hash.c: ^
hash.c: ...
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:37:0,
hash.c: from hash.c:5:
hash.c: hash.c: In function 'blake512_compress':
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/tmmintrin.h:185:1: error: inlining failed in call to always_inline '_mm_alignr_epi8': target specific option mismatch
hash.c: _mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N)
hash.c: ^
hash.c: In file included from hash.c:8:0:
hash.c: rounds.h:2096:5: error: called from here
hash.c: t1 = _mm_alignr_epi8(row4h, row4l, 8); \
hash.c: ^
hash.c: rounds.h:2137:3: note: in expansion of macro 'UNDIAGONALIZE'
hash.c: UNDIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h);
hash.c: ^
hash.c: hash.c:132:3: note: in expansion of macro 'ROUND'
hash.c: ROUND(15);
hash.c: ^
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:37:0,
hash.c: from hash.c:5:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/tmmintrin.h:185:1: error: inlining failed in call to always_inline '_mm_alignr_epi8': target specific option mismatch
hash.c: _mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N)
hash.c: ^
hash.c: In file included from hash.c:8:0:
hash.c: rounds.h:2095:5: error: called from here
hash.c: t0 = _mm_alignr_epi8(row4l, row4h, 8); \
hash.c: ^
hash.c: ...

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

Compiler output

Implementation: crypto_hash/bblake512/xop
Compiler: gcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:52:0,
hash.c: from hash.c:5:
hash.c: hash.c: In function 'blake512_compress':
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/xopintrin.h:266:1: error: inlining failed in call to always_inline '_mm_roti_epi64': target specific option mismatch
hash.c: _mm_roti_epi64(__m128i __A, const int __B)
hash.c: ^
hash.c: In file included from hash.c:8:0:
hash.c: rounds.h:1978:9: error: called from here
hash.c: row2h = _mm_roti_epi64(row2h, -11); \
hash.c: ^
hash.c: rounds.h:2136:3: note: in expansion of macro 'G2'
hash.c: G2(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h,b0,b1); \
hash.c: ^
hash.c: hash.c:132:3: note: in expansion of macro 'ROUND'
hash.c: ROUND(15);
hash.c: ^
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/x86intrin.h:52:0,
hash.c: from hash.c:5:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/xopintrin.h:266:1: error: inlining failed in call to always_inline '_mm_roti_epi64': target specific option mismatch
hash.c: _mm_roti_epi64(__m128i __A, const int __B)
hash.c: ^
hash.c: In file included from hash.c:8:0:
hash.c: rounds.h:1977:9: error: called from here
hash.c: row2l = _mm_roti_epi64(row2l, -11); \
hash.c: ^
hash.c: ...

Number of similar (compiler,implementation) pairs: 27, namely:
CompilerImplementations
gcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer xop
gcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer xop
gcc -m64 -march=core-avx-i -O -fomit-frame-pointer xop
gcc -m64 -march=core-avx-i -Os -fomit-frame-pointer xop
gcc -m64 -march=core-avx2 -O2 -fomit-frame-pointer xop
gcc -m64 -march=core-avx2 -O -fomit-frame-pointer xop
gcc -m64 -march=core-avx2 -Os -fomit-frame-pointer xop
gcc -m64 -march=core2 -O2 -fomit-frame-pointer xop
gcc -m64 -march=core2 -O3 -fomit-frame-pointer xop
gcc -m64 -march=core2 -O -fomit-frame-pointer xop
gcc -m64 -march=core2 -Os -fomit-frame-pointer xop
gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer xop
gcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer xop
gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer xop
gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer xop
gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer xop
gcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer xop
gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer xop
gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer xop
gcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer xop
gcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer xop
gcc -m64 -march=corei7-avx -O -fomit-frame-pointer xop
gcc -m64 -march=corei7-avx -Os -fomit-frame-pointer xop
gcc -m64 -march=corei7 -O2 -fomit-frame-pointer xop
gcc -m64 -march=corei7 -O3 -fomit-frame-pointer xop
gcc -m64 -march=corei7 -O -fomit-frame-pointer xop
gcc -m64 -march=corei7 -Os -fomit-frame-pointer xop