Implementation notes: amd64, h4atom, crypto_hash/echo512

Computer: h4atom
Architecture: amd64
CPU ID: GenuineIntel-000106ca-bfe9fbff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: echo512
TimeImplementationCompilerBenchmark dateSUPERCOP version
283288athlon/athlon64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
283304athlon/athlon64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
283336athlon/athlon64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
283352athlon/athlon64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
293112sphlibclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
303352powerpc/pp32cv2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
304264sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
304600sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
321080generic/opt64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
321584generic/opt64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
327008sphlib-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
327504pentium/pentium4v64v2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
327536pentium/pentium4v64v2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
327568pentium/pentium4v64v2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
327592pentium/pentium4v64v2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
329920pentium/pentium4v64v1gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
329928pentium/pentium4v64v1gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
330104pentium/pentium4v64v1gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
330120pentium/pentium4v64v1gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
334424sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
335936sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
339608powerpc/pp32cv2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
341144ccalik/bitslicedgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
351768generic/opt32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
356616sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
359048generic/opt64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
360216sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
360688generic/opt64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
360800ccalik/bitslicedclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
364672generic/opt32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
365080powerpc/pp32cv2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
368736generic/opt32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
370440generic/opt32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
374152ccalik/bitslicedgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
375536ccalik/bitslicedgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
376232core2/core2v64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
376256core2/core2v64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
376296core2/core2v64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
376320core2/core2v64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
380144generic/opt64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
383696ccalik/bitslicedgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
389608sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
391520powerpc/pp32cv2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
409912sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
409952powerpc/pp32cv1clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
410984generic/opt32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
426200powerpc/pp32cv1gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
473072powerpc/pp32cv1gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
483600powerpc/pp32cv1gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
522144powerpc/pp32cv2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
616080ccalik/aesniclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
616080ccalik/vpermclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
633992powerpc/pp32cv1gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
723952ccalik/vpermgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
723960ccalik/aesnigcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
742888ccalik/vpermgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
742896ccalik/aesnigcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
757776ccalik/vpermgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
757880ccalik/aesnigcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
783112ccalik/aesnigcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
783112ccalik/vpermgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806

Test failure

Implementation: crypto_hash/echo512/aes/aes64
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 aes/aes64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv aes/aes64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv aes/aes64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv aes/aes64

Compiler output

Implementation: crypto_hash/echo512/pentium/pentium4v64v1
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
echo32.s: echo32.c:545:2: error: invalid instruction mnemonic 'addd'
echo32.s: addd [SHA3_CNT], 1
echo32.s: ^
echo32.s: echo32.c:545:2: error: invalid instruction mnemonic 'addd'
echo32.s: addd [SHA3_CNT], 1
echo32.s: ^
echo32.s: echo32.c:545:2: error: invalid instruction mnemonic 'addd'
echo32.s: addd [SHA3_CNT], 1
echo32.s: ^
echo32.s: echo32.c:545:2: error: invalid instruction mnemonic 'addd'
echo32.s: addd [SHA3_CNT], 1
echo32.s: ^
echo32.s: echo32.c:546:2: error: invalid instruction mnemonic 'addd'
echo32.s: addd [SHA3_CNT], 1
echo32.s: ^
echo32.s: echo32.c:546:2: error: invalid instruction mnemonic 'addd'
echo32.s: addd [SHA3_CNT], 1
echo32.s: ^
echo32.s: echo32.c:546:2: error: invalid instruction mnemonic 'addd'
echo32.s: addd [SHA3_CNT], 1
echo32.s: ^
echo32.s: echo32.c:546:2: error: invalid instruction mnemonic 'addd'
echo32.s: addd [SHA3_CNT], 1
echo32.s: ^
echo32.s: echo32.c:547:2: error: invalid instruction mnemonic 'addd'
echo32.s: ...

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

Compiler output

Implementation: crypto_hash/echo512/generic/opt64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
echo64.c: echo64.c:501:29: warning: passing 'const unsigned char *' to parameter of type 'BitSequence *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
echo64.c: if (Hash(CRYPTO_BYTES * 8,in,inlen * 8,out) == SUCCESS) return 0;
echo64.c: ^~
echo64.c: echo64.c:488:46: note: passing argument to parameter 'data' here
echo64.c: HashReturn Hash(int hashbitlen, BitSequence *data, DataLength databitlen, BitSequence *hashval)
echo64.c: ^
echo64.c: 1 warning generated.

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

Compiler output

Implementation: crypto_hash/echo512/core2/core2v64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
echo64.s: echo64.c:473:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl ebp, ah
echo64.s: ^
echo64.s: echo64.c:473:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl esi, al
echo64.s: ^
echo64.s: echo64.c:473:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl ebp, bl
echo64.s: ^
echo64.s: echo64.c:473:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl esi, bh
echo64.s: ^
echo64.s: echo64.c:473:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl ebp, al
echo64.s: ^
echo64.s: echo64.c:473:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl esi, ah
echo64.s: ^
echo64.s: echo64.c:473:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl ebp, bh
echo64.s: ^
echo64.s: echo64.c:473:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl esi, bl
echo64.s: ^
echo64.s: echo64.c:473:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: ...

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

Compiler output

Implementation: crypto_hash/echo512/athlon/athlon64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
echo64.s: echo64.c:519:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl ebp, ah
echo64.s: ^
echo64.s: echo64.c:519:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl esi, al
echo64.s: ^
echo64.s: echo64.c:519:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl ebp, bl
echo64.s: ^
echo64.s: echo64.c:519:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl esi, bh
echo64.s: ^
echo64.s: echo64.c:519:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl ebp, al
echo64.s: ^
echo64.s: echo64.c:519:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl esi, ah
echo64.s: ^
echo64.s: echo64.c:519:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl ebp, bh
echo64.s: ^
echo64.s: echo64.c:519:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: movzbl esi, bl
echo64.s: ^
echo64.s: echo64.c:519:2: error: invalid instruction mnemonic 'movzbl'
echo64.s: ...

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

Compiler output

Implementation: crypto_hash/echo512/pentium/pentium4v64v2
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
echo64.s: echo64.c:571:2: error: invalid instruction mnemonic 'addd'
echo64.s: addd [SHA3_CNT], 1
echo64.s: ^
echo64.s: echo64.c:571:2: error: invalid instruction mnemonic 'addd'
echo64.s: addd [SHA3_CNT], 1
echo64.s: ^
echo64.s: echo64.c:571:2: error: invalid instruction mnemonic 'addd'
echo64.s: addd [SHA3_CNT], 1
echo64.s: ^
echo64.s: echo64.c:571:2: error: invalid instruction mnemonic 'addd'
echo64.s: addd [SHA3_CNT], 1
echo64.s: ^
echo64.s: echo64.c:572:2: error: invalid instruction mnemonic 'addd'
echo64.s: addd [SHA3_CNT], 1
echo64.s: ^
echo64.s: echo64.c:572:2: error: invalid instruction mnemonic 'addd'
echo64.s: addd [SHA3_CNT], 1
echo64.s: ^
echo64.s: echo64.c:572:2: error: invalid instruction mnemonic 'addd'
echo64.s: addd [SHA3_CNT], 1
echo64.s: ^
echo64.s: echo64.c:572:2: error: invalid instruction mnemonic 'addd'
echo64.s: addd [SHA3_CNT], 1
echo64.s: ^
echo64.s: echo64.c:573:2: error: invalid instruction mnemonic 'addd'
echo64.s: ...

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

Compiler output

Implementation: crypto_hash/echo512/aes/aes64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
echo64.s: echo64.c:636:2: error: '.att_syntax noprefix' is not supported: registers must have a '%' prefix in .att_syntax
echo64.s: .att_syntax noprefix
echo64.s: ^
echo64.s: echo64.c:636:2: error: unknown directive
echo64.s: .att_syntax noprefix
echo64.s: ^
echo64.s: echo64.s:1077:10: error: invalid token in expression
echo64.s: movabsq $-9187201950435737472, %rax
echo64.s: ^
echo64.s: echo64.s:1077:11: error: unknown token in expression
echo64.s: movabsq $-9187201950435737472, %rax
echo64.s: ^
echo64.s: echo64.s:1078:10: error: invalid token in expression
echo64.s: movabsq $-9187201950435737472, %r11
echo64.s: ^
echo64.s: echo64.s:1078:11: error: unknown token in expression
echo64.s: movabsq $-9187201950435737472, %r11
echo64.s: ^
echo64.s: echo64.s:1079:10: error: invalid token in expression
echo64.s: movabsq $7599940337074203, %r10
echo64.s: ^
echo64.s: echo64.s:1079:11: error: unknown token in expression
echo64.s: movabsq $7599940337074203, %r10
echo64.s: ^
echo64.s: echo64.s:1080:7: error: unknown token in expression
echo64.s: ...

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

Compiler output

Implementation: crypto_hash/echo512/generic/opt64
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
echo64.c: echo64.c: In function 'crypto_hash_echo512_generic_opt64':
echo64.c: echo64.c:501:29: warning: passing argument 2 of 'Hash' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
echo64.c: if (Hash(CRYPTO_BYTES * 8,in,inlen * 8,out) == SUCCESS) return 0;
echo64.c: ^
echo64.c: echo64.c:488:12: note: expected 'BitSequence * {aka unsigned char *}' but argument is of type 'const unsigned char *'
echo64.c: HashReturn Hash(int hashbitlen, BitSequence *data, DataLength databitlen, BitSequence *hashval)
echo64.c: ^

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