Implementation notes: amd64, h4atom, crypto_hash/blake2s

Computer: h4atom
Architecture: amd64
CPU ID: GenuineIntel-000106ca-bfe9fbff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: blake2s
TimeImplementationCompilerBenchmark dateSUPERCOP version
16488xmmclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081120160806
18624xmmgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081120160806
19424regsgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081120160806
19448regsgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081120160806
19928xmmgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081120160806
19984regsgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081120160806
22584refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081120160806
23464regsclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081120160806
24560moon/sse2/64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081120160806
24560moon/sse2/64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081120160806
24568moon/sse2/64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081120160806
24608moon/sse2/64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081120160806
24648moon/sse2/64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081120160806
24704refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081120160806
25040moon/ssse3/64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081120160806
25040moon/ssse3/64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081120160806
25048moon/ssse3/64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081120160806
25104moon/ssse3/64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081120160806
25128moon/ssse3/64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081120160806
29392regsgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081120160806
30320refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081120160806
38584refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081120160806
42144refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081120160806
42880xmmgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081120160806
42888xmmgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081120160806

Test failure

Implementation: crypto_hash/blake2s/avxicc
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
error 111

Number of similar (compiler,implementation) pairs: 15, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avxicc moon/avx/64 moon/xop/64
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv avxicc moon/avx/64 moon/xop/64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv avxicc moon/avx/64 moon/xop/64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv avxicc moon/avx/64 moon/xop/64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv avxicc moon/avx/64 moon/xop/64

Compiler output

Implementation: crypto_hash/blake2s/moon/armv6/32
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
blake2s.S: blake2s.S:5:1: error: unknown directive
blake2s.S: .arch armv5
blake2s.S: ^
blake2s.S: blake2s.S:8:9: error: unexpected token in argument list
blake2s.S: stmfd sp!, {r4-r12, r14}
blake2s.S: ^
blake2s.S: blake2s.S:9:1: error: unknown use of instruction mnemonic without a size suffix
blake2s.S: mov r12, sp
blake2s.S: ^
blake2s.S: blake2s.S:10:13: error: unknown token in expression
blake2s.S: sub sp, sp, #256
blake2s.S: ^
blake2s.S: blake2s.S:11:13: error: unknown token in expression
blake2s.S: and sp, sp, #0xffffffe0
blake2s.S: ^
blake2s.S: blake2s.S:12:13: error: expected ']' in brackets expression
blake2s.S: str r12, [sp, #148]
blake2s.S: ^
blake2s.S: blake2s.S:13:9: error: unknown token in expression
blake2s.S: mov r4, #64
blake2s.S: ^
blake2s.S: blake2s.S:14:9: error: unknown token in expression
blake2s.S: cmp r2, #64
blake2s.S: ^
blake2s.S: blake2s.S:15:1: error: invalid instruction mnemonic 'bhs'
blake2s.S: ...

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

Compiler output

Implementation: crypto_hash/blake2s/moon/xop/32
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
blake2s.S: blake2s.S:6:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %ebp
blake2s.S: ^
blake2s.S: blake2s.S:9:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %edi
blake2s.S: ^
blake2s.S: blake2s.S:10:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %esi
blake2s.S: ^
blake2s.S: blake2s.S:11:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %ebx
blake2s.S: ^
blake2s.S: gt;:7:28: error: invalid operand for instruction
blake2s.S: leaq blake2s_sigma(%rip), %ebx
blake2s.S: ^~~~
blake2s.S: blake2s.S:15:1: note: while in macro instantiation
blake2s.S: LOAD_VAR_PIC blake2s_sigma, %ebx
blake2s.S: ^
blake2s.S: blake2s.S:253:1: error: instruction requires: Not 64-bit mode
blake2s.S: popl %ebx
blake2s.S: ^
blake2s.S: blake2s.S:254:1: error: instruction requires: Not 64-bit mode
blake2s.S: popl %esi
blake2s.S: ^
blake2s.S: blake2s.S:255:1: error: instruction requires: Not 64-bit mode
blake2s.S: ...

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

Compiler output

Implementation: crypto_hash/blake2s/moon/avx/32
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
blake2s.S: blake2s.S:6:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %ebp
blake2s.S: ^
blake2s.S: blake2s.S:9:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %edi
blake2s.S: ^
blake2s.S: blake2s.S:10:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %esi
blake2s.S: ^
blake2s.S: blake2s.S:11:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %ebx
blake2s.S: ^
blake2s.S: gt;:7:38: error: invalid operand for instruction
blake2s.S: leaq blake2s_constants_ssse3(%rip), %ebx
blake2s.S: ^~~~
blake2s.S: blake2s.S:24:1: note: while in macro instantiation
blake2s.S: LOAD_VAR_PIC blake2s_constants_ssse3, %ebx
blake2s.S: ^
blake2s.S: gt;:7:28: error: invalid operand for instruction
blake2s.S: leaq blake2s_sigma(%rip), %ebx
blake2s.S: ^~~~
blake2s.S: blake2s.S:37:1: note: while in macro instantiation
blake2s.S: LOAD_VAR_PIC blake2s_sigma, %ebx
blake2s.S: ^
blake2s.S: blake2s.S:279:1: error: instruction requires: Not 64-bit mode
blake2s.S: ...

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

Compiler output

Implementation: crypto_hash/blake2s/moon/ssse3/32
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
blake2s.S: blake2s.S:6:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %ebp
blake2s.S: ^
blake2s.S: blake2s.S:9:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %esi
blake2s.S: ^
blake2s.S: blake2s.S:10:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %edi
blake2s.S: ^
blake2s.S: blake2s.S:11:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %ebx
blake2s.S: ^
blake2s.S: gt;:7:38: error: invalid operand for instruction
blake2s.S: leaq blake2s_constants_ssse3(%rip), %esi
blake2s.S: ^~~~
blake2s.S: blake2s.S:14:1: note: while in macro instantiation
blake2s.S: LOAD_VAR_PIC blake2s_constants_ssse3, %esi
blake2s.S: ^
blake2s.S: gt;:7:28: error: invalid operand for instruction
blake2s.S: leaq blake2s_sigma(%rip), %esi
blake2s.S: ^~~~
blake2s.S: blake2s.S:21:1: note: while in macro instantiation
blake2s.S: LOAD_VAR_PIC blake2s_sigma, %esi
blake2s.S: ^
blake2s.S: blake2s.S:612:1: error: instruction requires: Not 64-bit mode
blake2s.S: ...

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

Compiler output

Implementation: crypto_hash/blake2s/moon/sse2/32
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
blake2s.S: blake2s.S:6:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %ebp
blake2s.S: ^
blake2s.S: blake2s.S:9:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %esi
blake2s.S: ^
blake2s.S: blake2s.S:10:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %edi
blake2s.S: ^
blake2s.S: blake2s.S:11:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl %ebx
blake2s.S: ^
blake2s.S: blake2s.S:13:1: error: instruction requires: Not 64-bit mode
blake2s.S: pushl $64
blake2s.S: ^
blake2s.S: blake2s.S:14:1: error: instruction requires: Not 64-bit mode
blake2s.S: popl %eax
blake2s.S: ^
blake2s.S: gt;:7:28: error: invalid operand for instruction
blake2s.S: leaq blake2s_sigma(%rip), %ecx
blake2s.S: ^~~~
blake2s.S: blake2s.S:15:1: note: while in macro instantiation
blake2s.S: LOAD_VAR_PIC blake2s_sigma, %ecx
blake2s.S: ^
blake2s.S: blake2s.S:629:1: error: instruction requires: Not 64-bit mode
blake2s.S: ...

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

Compiler output

Implementation: crypto_hash/blake2s/regs
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
blake2s.c: blake2s.c:796:11: warning: implicit conversion from 'unsigned long' to 'uint32_t' (aka 'unsigned int') changes value from 18446744073180816980 to 3766232660 [-Wconstant-conversion]
blake2s.c: v14 = ~0x1F83D9ABUL;
blake2s.c: ~ ^~~~~~~~~~~~~
blake2s.c: 1 warning generated.

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

Compiler output

Implementation: crypto_hash/blake2s/moon/armv6/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2s.S: blake2s.S: Assembler messages:
blake2s.S: blake2s.S:5: Error: no such architecture: `armv5'
blake2s.S: blake2s.S:8: Error: no such instruction: `stmfd sp!,{r4-r12,r14}'
blake2s.S: blake2s.S:9: Error: too many memory references for `mov'
blake2s.S: blake2s.S:10: Error: too many memory references for `sub'
blake2s.S: blake2s.S:11: Error: too many memory references for `and'
blake2s.S: blake2s.S:12: Error: invalid char '[' beginning operand 2 `[sp'
blake2s.S: blake2s.S:13: Error: expecting operand after ','; got nothing
blake2s.S: blake2s.S:14: Error: expecting operand after ','; got nothing
blake2s.S: blake2s.S:15: Error: no such instruction: `bhs blake2s_blocks_armv6_use64'
blake2s.S: blake2s.S:16: Error: too many memory references for `mov'
blake2s.S: blake2s.S:18: Error: invalid char '[' beginning operand 2 `[sp'
blake2s.S: blake2s.S:19: Error: invalid char '[' beginning operand 2 `[sp'
blake2s.S: blake2s.S:20: Error: invalid char '[' beginning operand 2 `[sp'
blake2s.S: blake2s.S:21: Error: invalid char '[' beginning operand 2 `[sp'
blake2s.S: blake2s.S:22: Error: no such instruction: `ldr r6,[r0,'
blake2s.S: blake2s.S:23: Error: no such instruction: `tst r6,r6'
blake2s.S: blake2s.S:24: Error: no such instruction: `beq blake2s_blocks_armv6_nocopymessage'
blake2s.S: blake2s.S:25: Error: expecting operand after ','; got nothing
blake2s.S: blake2s.S:26: Error: no such instruction: `beq blake2s_blocks_armv6_nocopymessage'
blake2s.S: blake2s.S:27: Error: too many memory references for `mov'
blake2s.S: blake2s.S:28: Error: no such instruction: `eor r4,r4'
blake2s.S: blake2s.S:29: Error: no such instruction: `eor r5,r5'
blake2s.S: blake2s.S:30: Error: no such instruction: `eor r6,r6'
blake2s.S: blake2s.S:31: Error: no such instruction: `eor r7,r7'
blake2s.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/blake2s/moon/sse2/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2s.S: blake2s.S: Assembler messages:
blake2s.S: blake2s.S:6: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:9: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:10: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:11: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:13: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:14: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:15: Error: incorrect register `%ecx' used with `q' suffix
blake2s.S: blake2s.S:629: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:630: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:631: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:633: 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/blake2s/moon/ssse3/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2s.S: blake2s.S: Assembler messages:
blake2s.S: blake2s.S:6: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:9: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:10: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:11: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:14: Error: incorrect register `%esi' used with `q' suffix
blake2s.S: blake2s.S:21: Error: incorrect register `%esi' used with `q' suffix
blake2s.S: blake2s.S:612: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:613: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:614: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:616: 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/blake2s/moon/xop/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2s.S: blake2s.S: Assembler messages:
blake2s.S: blake2s.S:6: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:9: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:10: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:11: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:15: Error: incorrect register `%ebx' used with `q' suffix
blake2s.S: blake2s.S:253: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:254: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:255: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:256: 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/blake2s/moon/avx/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2s.S: blake2s.S: Assembler messages:
blake2s.S: blake2s.S:6: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:9: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:10: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:11: Error: invalid instruction suffix for `push'
blake2s.S: blake2s.S:24: Error: incorrect register `%ebx' used with `q' suffix
blake2s.S: blake2s.S:37: Error: incorrect register `%ebx' used with `q' suffix
blake2s.S: blake2s.S:279: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:280: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:281: Error: invalid instruction suffix for `pop'
blake2s.S: blake2s.S:282: 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/blake2s/regs
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2s.c: blake2s.c: In function 'crypto_hash_blake2s_regs':
blake2s.c: blake2s.c:796:11: warning: large integer implicitly truncated to unsigned type [-Woverflow]
blake2s.c: v14 = ~0x1F83D9ABUL;
blake2s.c: ^

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