Implementation notes: amd64, tueisecgern, crypto_hash/blake2b

Computer: tueisecgern
Architecture: amd64
CPU ID: GenuineIntel-000306f2-bfebfbff
SUPERCOP version: 20160724
Operation: crypto_hash
Primitive: blake2b
TimeImplementationCompilerBenchmark dateSUPERCOP version
4226moon/avx2/64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072220160718
4238moon/avx2/64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072220160718
4398avx2-1gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072220160718
4407avx2-1gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072220160718
4422avx2-2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072220160718
4790moon/avx/64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072220160718
5063avxiccgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072220160718
5121avxiccgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072220160718
5171avxiccgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072220160718
5370avx2-2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072220160718
5379avx2-2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072220160718
5453xmmgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072220160718
5465avx2-2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072220160718
5532xmmgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072220160718
5910avx2-1gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072220160718
6152avx2-1gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072220160718
6204regsgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072220160718
6354moon/avx2/64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072220160718
6421moon/avx2/64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072220160718
7087avx2-3gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072220160718
7127avx2-3gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072220160718
7409refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072220160718
7535moon/avx/64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072220160718
8075regsgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072220160718
8219refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072220160718
9013regsgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072220160718
9212moon/avx/64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072220160718
9216moon/avx/64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072220160718
9403regsgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072220160718
9654avx2-3gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072220160718
10301xmmgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072220160718
10868avxiccgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072220160718
11129xmmgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072220160718
11390avx2-3gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072220160718
13463refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072220160718
14070refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072220160718

Test failure

Implementation: crypto_hash/blake2b/moon/xop/64
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
error 111

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

Test failure

Implementation: crypto_hash/blake2b/moon/xop/64
Compiler: gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv
error 142
Alarm clock

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv moon/xop/64

Compiler output

Implementation: crypto_hash/blake2b/moon/neon/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:3: Error: no such architecture: `armv7'
blake2b.S: blake2b.S:3: Error: junk at end of line, first unrecognized character is `-'
blake2b.S: blake2b.S:4: Error: unknown pseudo-op: `.fpu'
blake2b.S: blake2b.S:9: Error: no such instruction: `vstmdb sp!,{q4-q7}'
blake2b.S: blake2b.S:10: Error: no such instruction: `stmfd sp!,{r4-r12,r14}'
blake2b.S: blake2b.S:11: Error: too many memory references for `mov'
blake2b.S: blake2b.S:12: Error: too many memory references for `sub'
blake2b.S: blake2b.S:13: Error: too many memory references for `and'
blake2b.S: blake2b.S:14: Error: invalid char '[' beginning operand 2 `[sp'
blake2b.S: blake2b.S:15: Error: too many memory references for `sub'
blake2b.S: blake2b.S:16: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:17: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:18: Error: no such instruction: `bhs blake2b_blocks_neon_use128'
blake2b.S: blake2b.S:19: Error: too many memory references for `mov'
blake2b.S: blake2b.S:21: Error: no such instruction: `ldr r6,[r0,'
blake2b.S: blake2b.S:22: Error: no such instruction: `ldr r7,[r0,'
blake2b.S: blake2b.S:23: Error: too many memory references for `and'
blake2b.S: blake2b.S:24: Error: no such instruction: `beq blake2b_blocks_neon_nocopymessage'
blake2b.S: blake2b.S:25: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:26: Error: no such instruction: `beq blake2b_blocks_neon_nocopymessage'
blake2b.S: blake2b.S:27: Error: no such instruction: `veor q0,q0,q0'
blake2b.S: blake2b.S:28: Error: no such instruction: `veor q1,q1,q1'
blake2b.S: blake2b.S:29: Error: no such instruction: `vst1.64 {q0,q1},[sp,:256]!'
blake2b.S: blake2b.S:30: Error: no such instruction: `vst1.64 {q0,q1},[sp,:256]!'
blake2b.S: ...

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

Compiler output

Implementation: crypto_hash/blake2b/moon/armv6/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:5: Error: no such architecture: `armv5'
blake2b.S: blake2b.S:34: Error: no such instruction: `stmfd sp!,{r4-r12,r14}'
blake2b.S: blake2b.S:35: Error: too many memory references for `sub'
blake2b.S: blake2b.S:36: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:37: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:38: Error: no such instruction: `bhs blake2b_blocks_armv6_use128'
blake2b.S: blake2b.S:39: Error: too many memory references for `mov'
blake2b.S: blake2b.S:41: Error: too many memory references for `mov'
blake2b.S: blake2b.S:42: Error: invalid char '[' beginning operand 2 `[sp'
blake2b.S: blake2b.S:43: Error: invalid char '[' beginning operand 2 `[sp'
blake2b.S: blake2b.S:44: Error: invalid char '[' beginning operand 2 `[sp'
blake2b.S: blake2b.S:45: Error: invalid char '[' beginning operand 2 `[sp'
blake2b.S: blake2b.S:46: Error: no such instruction: `ldr r4,[r0,'
blake2b.S: blake2b.S:47: Error: no such instruction: `ldr r5,[r0,'
blake2b.S: blake2b.S:48: Error: too many memory references for `and'
blake2b.S: blake2b.S:49: Error: no such instruction: `beq blake2b_blocks_armv6_nocopymessage'
blake2b.S: blake2b.S:50: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:51: Error: no such instruction: `beq blake2b_blocks_armv6_nocopymessage'
blake2b.S: blake2b.S:52: Error: no such instruction: `eor r4,r4,r4'
blake2b.S: blake2b.S:53: Error: no such instruction: `eor r5,r5,r5'
blake2b.S: blake2b.S:54: Error: no such instruction: `eor r6,r6,r6'
blake2b.S: blake2b.S:55: Error: no such instruction: `eor r7,r7,r7'
blake2b.S: blake2b.S:56: Error: no such instruction: `eor r8,r8,r8'
blake2b.S: blake2b.S:57: Error: no such instruction: `eor r9,r9,r9'
blake2b.S: ...

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

Compiler output

Implementation: crypto_hash/blake2b/moon/avx2/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:6: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:9: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:10: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:11: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:14: Error: incorrect register `%ecx' used with `q' suffix
blake2b.S: blake2b.S:15: Error: incorrect register `%eax' used with `q' suffix
blake2b.S: blake2b.S:248: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:249: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:250: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:252: Error: invalid instruction suffix for `pop'

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

Compiler output

Implementation: crypto_hash/blake2b/moon/ssse3/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:6: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:9: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:10: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:11: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:16: Error: incorrect register `%ebx' used with `q' suffix
blake2b.S: blake2b.S:19: Error: incorrect register `%ebx' used with `q' suffix
blake2b.S: blake2b.S:1566: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1567: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1568: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1570: Error: invalid instruction suffix for `pop'

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

Compiler output

Implementation: crypto_hash/blake2b/moon/avx/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:6: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:9: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:10: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:11: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:16: Error: incorrect register `%ecx' used with `q' suffix
blake2b.S: blake2b.S:19: Error: incorrect register `%ecx' used with `q' suffix
blake2b.S: blake2b.S:927: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:928: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:929: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:931: Error: invalid instruction suffix for `pop'

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

Compiler output

Implementation: crypto_hash/blake2b/moon/sse2/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:6: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:9: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:10: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:11: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:16: Error: incorrect register `%esi' used with `q' suffix
blake2b.S: blake2b.S:1966: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1967: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1968: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1970: Error: invalid instruction suffix for `pop'

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

Compiler output

Implementation: crypto_hash/blake2b/moon/xop/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:8: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:9: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:11: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:12: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:13: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:14: Error: incorrect register `%ebx' used with `q' suffix
blake2b.S: blake2b.S:15: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:287: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:288: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:289: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:290: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:291: Error: invalid instruction suffix for `pop'

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

Compiler output

Implementation: crypto_hash/blake2b/ymm
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.c: blake2b.c: In function 'crypto_hash_blake2b_ymm':
blake2b.c: blake2b.c:203:10: error: incompatible types when assigning to type '__m128i' from type '__m256i'
blake2b.c: m0 = _mm256_loadu_si256((__m256i*)(in + 00));
blake2b.c: ^
blake2b.c: blake2b.c:204:10: error: incompatible types when assigning to type '__m128i' from type '__m256i'
blake2b.c: m1 = _mm256_loadu_si256((__m256i*)(in + 32));
blake2b.c: ^
blake2b.c: blake2b.c:205:10: error: incompatible types when assigning to type '__m128i' from type '__m256i'
blake2b.c: m2 = _mm256_loadu_si256((__m256i*)(in + 64));
blake2b.c: ^
blake2b.c: blake2b.c:206:10: error: incompatible types when assigning to type '__m128i' from type '__m256i'
blake2b.c: m3 = _mm256_loadu_si256((__m256i*)(in + 96));
blake2b.c: ^
blake2b.c: blake2b.c:225:10: error: incompatible types when assigning to type '__m128i' from type '__m256i'
blake2b.c: m0 = _mm256_loadu_si256((__m256i*)(buffer + 00));
blake2b.c: ^
blake2b.c: blake2b.c:226:10: error: incompatible types when assigning to type '__m128i' from type '__m256i'
blake2b.c: m1 = _mm256_loadu_si256((__m256i*)(buffer + 32));
blake2b.c: ^
blake2b.c: blake2b.c:227:10: error: incompatible types when assigning to type '__m128i' from type '__m256i'
blake2b.c: m2 = _mm256_loadu_si256((__m256i*)(buffer + 64));
blake2b.c: ^
blake2b.c: blake2b.c:228:10: error: incompatible types when assigning to type '__m128i' from type '__m256i'
blake2b.c: m3 = _mm256_loadu_si256((__m256i*)(buffer + 96));
blake2b.c: ^
blake2b.c: ...

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