Implementation notes: x86, thoth, crypto_hash/skein512256

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: skein512256
TimeImplementationCompilerBenchmark dateSUPERCOP version
70953optclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
71123littleclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
71924sphlibclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
73370simpleclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
76352sphlib-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
90644littlegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
91360optgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
92771littlegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
93215sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
93330optgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
93723sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
94173littlegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
94639optgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
98130sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
98196simplegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
98831simplegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
99096sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
100235sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
100718optgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
101064simplegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
101086littlegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
101684simplegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
103861sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
105010sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
105075sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724

Test failure

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

Compiler output

Implementation: crypto_hash/skein512256/mmx
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:65:17: warning: implicit declaration of function '_mm_add_si64' is invalid in C99 [-Wimplicit-function-declaration]
hash.c: ts[0] = _mm_add_si64(ts[0],_mm_set_pi32(0,byteCntAdd));
hash.c: ^
hash.c: hash.c:65:15: error: assigning to '__m64' (vector of 1 'long long' value) from incompatible type 'int'
hash.c: ts[0] = _mm_add_si64(ts[0],_mm_set_pi32(0,byteCntAdd));
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: hash.c:106:12: error: assigning to '__m64' (vector of 1 'long long' value) from incompatible type 'int'
hash.c: X0 = _mm_add_si64(X0,ks[0]);
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~
hash.c: hash.c:107:12: error: assigning to '__m64' (vector of 1 'long long' value) from incompatible type 'int'
hash.c: X1 = _mm_add_si64(X1,ks[1]);
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~
hash.c: hash.c:108:12: error: assigning to '__m64' (vector of 1 'long long' value) from incompatible type 'int'
hash.c: X2 = _mm_add_si64(X2,ks[2]);
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~
hash.c: hash.c:109:12: error: assigning to '__m64' (vector of 1 'long long' value) from incompatible type 'int'
hash.c: X3 = _mm_add_si64(X3,ks[3]);
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~
hash.c: hash.c:110:12: error: assigning to '__m64' (vector of 1 'long long' value) from incompatible type 'int'
hash.c: X4 = _mm_add_si64(X4,ks[4]);
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~
hash.c: hash.c:111:12: error: assigning to '__m64' (vector of 1 'long long' value) from incompatible type 'int'
hash.c: X5 = _mm_add_si64(X5,_mm_add_si64(ks[5],ts[0]));
hash.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: hash.c:112:12: error: assigning to '__m64' (vector of 1 'long long' value) from incompatible type 'int'
hash.c: ...

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

Compiler output

Implementation: crypto_hash/skein512256/xmm
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
skein_block_xmm32.S: skein_block_xmm32.S:297:61: warning: trigraph ignored [-Wtrigraphs]
skein_block_xmm32.S: movl %ebx,%esp #get rid of locals (wipe??)
skein_block_xmm32.S: ^
skein_block_xmm32.S: 1 warning generated.
skein_block_xmm32.S: skein_block_xmm32.S:16:5: error: unknown directive
skein_block_xmm32.S: .altmacro #use advanced macro features
skein_block_xmm32.S: ^
skein_block_xmm32.S: skein_block_xmm32.S:17:5: error: unknown directive
skein_block_xmm32.S: .psize 0,128 #list file has no page boundaries
skein_block_xmm32.S: ^
skein_block_xmm32.S: skein_block_xmm32.S:472:1: warning: macro defined with named parameters which are not used in macro body, possible positional parameter found in body which will have no effect
skein_block_xmm32.S: .macro R_256_FourRounds _RN_
skein_block_xmm32.S: ^
skein_block_xmm32.S: gt;:2:19: error: unknown token in expression
skein_block_xmm32.S: _RC0_ = RC_256_%((%(_RN_+0))&&7)&&_0
skein_block_xmm32.S: ^
skein_block_xmm32.S: gt;:1:1: note: while in macro instantiation
skein_block_xmm32.S: .irp _qq_,%((%(_RN_+0)) && 7) #figure out which rotation constants to use
skein_block_xmm32.S: ^
skein_block_xmm32.S: gt;:1:1: note: while in macro instantiation
skein_block_xmm32.S: R_256_OneRound %(_RN_+0),0,1,2,3,4,5
skein_block_xmm32.S: ^
skein_block_xmm32.S: gt;:1:1: note: while in macro instantiation
skein_block_xmm32.S: R_256_FourRounds _Rbase_
skein_block_xmm32.S: ^
skein_block_xmm32.S: ...

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

Compiler output

Implementation: crypto_hash/skein512256/mmx
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: In file included from hash.c:3:0:
hash.c: hash.c: In function 'Skein_512_Process_Block':
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/mmintrin.h:316:1: error: inlining failed in call to always_inline '_mm_add_si64': target specific option mismatch
hash.c: _mm_add_si64 (__m64 __m1, __m64 __m2)
hash.c: ^
hash.c: hash.c:151:8: error: called from here
hash.c: X7 = _mm_add_si64(X7,_mm_add_si64(ks[((R)+8) % 9],_mm_set_pi32(0,(R)+1))); \
hash.c: ^
hash.c: hash.c:163:9: note: in expansion of macro 'I512'
hash.c: I512(2*(R)+1);
hash.c: ^
hash.c: hash.c:173:9: note: in expansion of macro 'R512_8_rounds'
hash.c: R512_8_rounds( 8);
hash.c: ^
hash.c: In file included from hash.c:3:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/mmintrin.h:316:1: error: inlining failed in call to always_inline '_mm_add_si64': target specific option mismatch
hash.c: _mm_add_si64 (__m64 __m1, __m64 __m2)
hash.c: ^
hash.c: hash.c:151:10: error: called from here
hash.c: X7 = _mm_add_si64(X7,_mm_add_si64(ks[((R)+8) % 9],_mm_set_pi32(0,(R)+1))); \
hash.c: ^
hash.c: hash.c:163:9: note: in expansion of macro 'I512'
hash.c: I512(2*(R)+1);
hash.c: ^
hash.c: hash.c:173:9: note: in expansion of macro 'R512_8_rounds'
hash.c: ...

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

Compiler output

Implementation: crypto_hash/skein512256/xmm
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
skein_block_xmm32.S: skein_block_xmm32.S:297:61: warning: trigraph ??) ignored, use -trigraphs to enable [-Wtrigraphs]
skein_block_xmm32.S: movl %ebx,%esp #get rid of locals (wipe??)
skein_block_xmm32.S: ^

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