Implementation notes: amd64, floodyberry, crypto_hash/simd256

Computer: floodyberry
Architecture: amd64
CPU ID: GenuineIntel-00010676-bfebfbff
SUPERCOP version: 20140505
Operation: crypto_hash
Primitive: simd256
TimeImplementationCompilerBenchmark dateSUPERCOP version
56538sphlibgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2014050820140505
56863sphlibgcc -m64 -O3 -fomit-frame-pointer2014050820140505
74100sphlibicc -m64 -O3 -static -xHost -fomit-frame-pointer2014050820140505
80225sphlibgcc -m64 -O2 -fomit-frame-pointer2014050820140505
80287sphlibgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2014050820140505
82600sphlib-smallicc -m64 -O3 -static -xHost -fomit-frame-pointer2014050820140505
82612sphlib-smallgcc -m64 -O3 -fomit-frame-pointer2014050820140505
84275sphlib-smallgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2014050820140505
85925sphlibicc -m64 -O1 -static -xHost -fomit-frame-pointer2014050820140505
95200sphlibclang -O1 -march=native -m64 -fomit-frame-pointer2014050820140505
96362sphlib-smallicc -m64 -O1 -static -xHost -fomit-frame-pointer2014050820140505
109950sphlib-smallgcc -m64 -O2 -fomit-frame-pointer2014050820140505
110612sphlib-smallgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2014050820140505
123787sphlib-smallclang -O1 -march=native -m64 -fomit-frame-pointer2014050820140505
133812optgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2014050820140505
142413optgcc -m64 -O3 -fomit-frame-pointer2014050820140505
144600optgcc -m64 -O2 -fomit-frame-pointer2014050820140505
145800optgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2014050820140505
160987optclang -O1 -march=native -m64 -fomit-frame-pointer2014050820140505
161638opticc -m64 -O1 -static -xHost -fomit-frame-pointer2014050820140505
171462opticc -m64 -O3 -static -xHost -fomit-frame-pointer2014050820140505
3928650reficc -m64 -O3 -static -xHost -fomit-frame-pointer2014050820140505
3979275reficc -m64 -O1 -static -xHost -fomit-frame-pointer2014050820140505
4397838refgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2014050820140505
4398337refgcc -m64 -O3 -fomit-frame-pointer2014050820140505
4476412refgcc -m64 -O2 -fomit-frame-pointer2014050820140505
4480412refgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2014050820140505
4841500refclang -O1 -march=native -m64 -fomit-frame-pointer2014050820140505

Test failure

Implementation: crypto_hash/simd256/opt
Compiler: clang -O3 -march=native -m64 -fomit-frame-pointer
error 111

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -O3 -march=native -m64 -fomit-frame-pointer opt ref sphlib sphlib-small

Compiler output

Implementation: crypto_hash/simd256/ref
Compiler: clang -O1 -march=native -m64 -fomit-frame-pointer
reference.c: reference.c:69:82: warning: expression result unused [-Wunused-value]
reference.c: state->gt;A[j] = state->gt;D[j] + w[j] + F(state->gt;A[j], state->gt;B[j], state->gt;C[j]), s;
reference.c: ^
reference.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -O1 -march=native -m64 -fomit-frame-pointer ref
clang -O3 -march=native -m64 -fomit-frame-pointer ref

Compiler output

Implementation: crypto_hash/simd256/vect128
Compiler: clang -O1 -march=native -m64 -fomit-frame-pointer
vector.c: vector.c:73:9: warning: 'X' macro redefined
vector.c: #define X(i) X##i
vector.c: ^
vector.c: vector.c:68:9: note: previous definition is here
vector.c: #define X(i) A[i]
vector.c: ^
vector.c: vector.c:129:3: error: use of unknown builtin '__builtin_ia32_pcmpgtw128' [-Wimplicit-function-declaration]
vector.c: DO_REDUCE_FULL_S(0);
vector.c: ^
vector.c: vector.c:56:12: note: expanded from macro 'DO_REDUCE_FULL_S'
vector.c: X(i) = EXTRA_REDUCE_S(X(i)); \
vector.c: ^
vector.c: vector.c:42:32: note: expanded from macro 'EXTRA_REDUCE_S'
vector.c: v16_sub(x, v16_and(V257.v16, v16_cmp(x, V128.v16)))
vector.c: ^
vector.c: ./vector.h:92:22: note: expanded from macro 'v16_cmp'
vector.c: #define v16_cmp __builtin_ia32_pcmpgtw128
vector.c: ^
vector.c: ./vector.h:68:28: note: expanded from macro 'vec_and'
vector.c: #define vec_and(x,y) ((x)&(y))
vector.c: ^
vector.c: ./vector.h:87:28: note: expanded from macro 'v16_sub'
vector.c: #define v16_sub(x,y) ((x)-(y))
vector.c: ^
vector.c: vector.c:129:3: error: can't convert between vector values of different size ('v16' (aka 'v8hi') and 'int')
vector.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -O1 -march=native -m64 -fomit-frame-pointer vect128
clang -O3 -march=native -m64 -fomit-frame-pointer vect128

Compiler output

Implementation: crypto_hash/simd256/vect128
Compiler: gcc -m64 -O2 -fomit-frame-pointer
vector.c: vector.c: In function 'fft64':
vector.c: vector.c:73:0: warning: "X" redefined [enabled by default]
vector.c: vector.c:68:0: note: this is the location of the previous definition
vector.c: vector.c: In function 'rounds512':
vector.c: vector.c:796:0: warning: "STEP_1" redefined [enabled by default]
vector.c: vector.c:542:0: note: this is the location of the previous definition
vector.c: vector.c:805:0: warning: "STEP_2" redefined [enabled by default]
vector.c: vector.c:566:0: note: this is the location of the previous definition
vector.c: vector.c:808:0: warning: "STEP" redefined [enabled by default]
vector.c: vector.c:571:0: note: this is the location of the previous definition
vector.c: vector.c:829:0: warning: "ROUND" redefined [enabled by default]
vector.c: vector.c:579:0: note: this is the location of the previous definition
vector.c: vector.c:854:0: warning: "PERM_START" redefined [enabled by default]
vector.c: vector.c:852:0: note: this is the location of the previous definition
vector.c: vector.c:856:0: warning: "PERM_START" redefined [enabled by default]
vector.c: vector.c:854:0: note: this is the location of the previous definition
vector.c: vector.c:858:0: warning: "PERM_START" redefined [enabled by default]
vector.c: vector.c:856:0: note: this is the location of the previous definition
vector.c: vector.c:864:0: warning: "PERM_START" redefined [enabled by default]
vector.c: vector.c:858:0: note: this is the location of the previous definition
vector.c: vector.c:866:0: warning: "PERM_START" redefined [enabled by default]
vector.c: vector.c:864:0: note: this is the location of the previous definition
vector.c: vector.c:868:0: warning: "PERM_START" redefined [enabled by default]
vector.c: vector.c:866:0: note: this is the location of the previous definition
vector.c: vector.c:870:0: warning: "PERM_START" redefined [enabled by default]
vector.c: ...

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

Compiler output

Implementation: crypto_hash/simd256/vect128
Compiler: icc -m64 -O1 -static -xHost -fomit-frame-pointer
vector.c: vector.c(73): warning #47: incompatible redefinition of macro "X" (declared at line 68)
vector.c: #define X(i) X##i
vector.c: ^
vector.c:
vector.c: vector.c(796): warning #47: incompatible redefinition of macro "STEP_1" (declared at line 542)
vector.c: #define STEP_1(a,b,c,d,w,fun,r,s,z) \
vector.c: ^
vector.c:
vector.c: vector.c(805): warning #47: incompatible redefinition of macro "STEP_2" (declared at line 566)
vector.c: #define STEP_2(a,b,c,d,w,fun,r,s) \
vector.c: ^
vector.c:
vector.c: vector.c(808): warning #47: incompatible redefinition of macro "STEP" (declared at line 571)
vector.c: #define STEP(a,b,c,d,w1,w2,fun,r,s,z) \
vector.c: ^
vector.c:
vector.c: vector.c(829): warning #47: incompatible redefinition of macro "ROUND" (declared at line 579)
vector.c: #define ROUND(h0,l0,u0,h1,l1,u1,h2,l2,u2,h3,l3,u3, \
vector.c: ^
vector.c:
vector.c: vector.c(854): warning #47: incompatible redefinition of macro "PERM_START" (declared at line 852)
vector.c: #define PERM_START 4
vector.c: ^
vector.c:
vector.c: vector.c(856): warning #47: incompatible redefinition of macro "PERM_START" (declared at line 854)
vector.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
icc -m64 -O1 -static -xHost -fomit-frame-pointer vect128
icc -m64 -O3 -static -xHost -fomit-frame-pointer vect128