Implementation notes: amd64, h4atom, crypto_hash/simd256

Computer: h4atom
Architecture: amd64
CPU ID: GenuineIntel-000106ca-bfe9fbff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: simd256
TimeImplementationCompilerBenchmark dateSUPERCOP version
157024sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
184288sphlibclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
205584sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
213504sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
216192sphlib-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
221624sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
242512sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
247448optgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
257480sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
291304sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
300608sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
341064optgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
359264optclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
424944optgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
500664optgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
10079096refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
11194952refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
11296968refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
12688640refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
29384776refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806

Compiler output

Implementation: crypto_hash/simd256/ref
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
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: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments ref

Compiler output

Implementation: crypto_hash/simd256/vect128
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
vector.c: vector.c:73:9: warning: 'X' macro redefined [-Wmacro-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.c:129:3: error: cannot convert between vector values of different size ('v16' (aka 'v8hi') and 'int')
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:14: note: expanded from macro 'EXTRA_REDUCE_S'
vector.c: ...

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

Compiler output

Implementation: crypto_hash/simd256/vect128
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
vector.c: vector.c: In function 'fft64':
vector.c: vector.c:73:0: warning: "X" redefined
vector.c: #define X(i) X##i
vector.c: ^
vector.c: vector.c:68:0: note: this is the location of the previous definition
vector.c: #define X(i) A[i]
vector.c: ^
vector.c: vector.c: In function 'rounds512':
vector.c: vector.c:796:0: warning: "STEP_1" redefined
vector.c: #define STEP_1(a,b,c,d,w,fun,r,s,z) \
vector.c: ^
vector.c: vector.c:542:0: note: this is the location of the previous definition
vector.c: #define STEP_1(a,b,c,d,w,fun,r,s,z) \
vector.c: ^
vector.c: vector.c:805:0: warning: "STEP_2" redefined
vector.c: #define STEP_2(a,b,c,d,w,fun,r,s) \
vector.c: ^
vector.c: vector.c:566:0: note: this is the location of the previous definition
vector.c: #define STEP_2(a,b,c,d,w,fun,r,s) \
vector.c: ^
vector.c: vector.c:808:0: warning: "STEP" redefined
vector.c: #define STEP(a,b,c,d,w1,w2,fun,r,s,z) \
vector.c: ^
vector.c: vector.c:571:0: note: this is the location of the previous definition
vector.c: #define STEP(a,b,c,d,w,fun,r,s,z) \
vector.c: ...

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