Implementation notes: amd64, slide, crypto_hash/blake2b

Computer: slide
Architecture: amd64
CPU ID: GenuineIntel-00040651-bfebfbff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: blake2b
TimeImplementationCompilerBenchmark dateSUPERCOP version
4788moon/avx2/64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016090620160806
4788moon/avx2/64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016090620160806
4791moon/avx/64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016090620160806
4792moon/avx2/64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016090620160806
4840moon/avx2/64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016090620160806
4904avx2-2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016090620160806
4960avx2-2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016090620160806
4964avx2-2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016090620160806
4964avx2-1gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016090620160806
5040avx2-2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016090620160806
5052avx2-1gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016090620160806
5068avx2-1gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016090620160806
5404moon/avx/64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016090620160806
5408avx2-1gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016090620160806
5436moon/avx/64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016090620160806
5468moon/avx/64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016090620160806
5760avxiccgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016090620160806
5944avxiccgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016090620160806
5968xmmgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016090620160806
5988avxiccgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016090620160806
5996avxiccgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016090620160806
6052xmmgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016090620160806
6068xmmgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016090620160806
6140regsgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016090620160806
6184regsgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016090620160806
6196regsgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016090620160806
6468xmmgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016090620160806
6512regsgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016090620160806
7384avx2-3gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016090620160806
7864avx2-3gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016090620160806
7868avx2-3gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016090620160806
8012avx2-3gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016090620160806
8376refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016090620160806
8724refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016090620160806
9356refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016090620160806
9432refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016090620160806

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: 4, 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 -O -fomit-frame-pointer -fwrapv moon/xop/64
gcc -march=native -mtune=native -Os -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