Implementation notes: x86, thoth, crypto_hash/jh256

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: jh256
TimeImplementationCompilerBenchmark dateSUPERCOP version
213024bitslice_opt32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
214758bitslice_opt32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
220369bitslice_opt32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
227267bitslice_opt32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
243191simpleclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
246319bitslice_ref32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
264304simplegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
270361simplegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
270429simplegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
280157simplegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
296107bitslice_ref32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
310427bitslice_opt64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
311043bitslice_ref32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
311342bitslice_opt64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
316800bitslice_ref32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
317734bitslice_opt64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
318265bitslice_opt64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
321568bitslice_opt32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
333411bitslice_ref32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
354755bitslice_ref64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
372332bitslice_opt64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
388360bitslice_ref64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
388897bitslice_ref64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
397357bitslice_ref64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
450560bitslice_ref64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724

Compiler output

Implementation: crypto_hash/jh256/bitslice_sse2_opt32
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
nist.c: In file included from nist.c:2:
nist.c: ./jh_sse2_opt32.h:247:12: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'F8' that is compiled without support for 'sse2'
nist.c: y0 = XOR(y0, LOAD(state->gt;buffer));
nist.c: ^
nist.c: ./jh_sse2_opt32.h:112:23: note: expanded from macro 'XOR'
nist.c: #define XOR(x,y) _mm_xor_si128((x),(y)) /*XOR(x,y) = x ^ y, where x and y are two 128-bit word*/
nist.c: ^
nist.c: ./jh_sse2_opt32.h:247:20: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'F8' that is compiled without support for 'sse2'
nist.c: y0 = XOR(y0, LOAD(state->gt;buffer));
nist.c: ^
nist.c: ./jh_sse2_opt32.h:142:23: note: expanded from macro 'LOAD'
nist.c: #define LOAD(p) _mm_load_si128((__m128i *)(p)) /*load 16 bytes from the memory address p, return a 128-bit word, where p is the multile of 16 bytes*/
nist.c: ^
nist.c: ./jh_sse2_opt32.h:248:12: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'F8' that is compiled without support for 'sse2'
nist.c: y1 = XOR(y1, LOAD(state->gt;buffer+16));
nist.c: ^
nist.c: ./jh_sse2_opt32.h:112:23: note: expanded from macro 'XOR'
nist.c: #define XOR(x,y) _mm_xor_si128((x),(y)) /*XOR(x,y) = x ^ y, where x and y are two 128-bit word*/
nist.c: ^
nist.c: ./jh_sse2_opt32.h:248:20: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'F8' that is compiled without support for 'sse2'
nist.c: y1 = XOR(y1, LOAD(state->gt;buffer+16));
nist.c: ^
nist.c: ./jh_sse2_opt32.h:142:23: note: expanded from macro 'LOAD'
nist.c: #define LOAD(p) _mm_load_si128((__m128i *)(p)) /*load 16 bytes from the memory address p, return a 128-bit word, where p is the multile of 16 bytes*/
nist.c: ^
nist.c: ...

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

Compiler output

Implementation: crypto_hash/jh256/bitslice_sse2_opt64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
nist.c: In file included from nist.c:2:
nist.c: ./jh_sse2_opt64.h:255:12: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'F8' that is compiled without support for 'sse2'
nist.c: y0 = XOR(y0, LOAD(state->gt;buffer));
nist.c: ^
nist.c: ./jh_sse2_opt64.h:112:23: note: expanded from macro 'XOR'
nist.c: #define XOR(x,y) _mm_xor_si128((x),(y)) /*XOR(x,y) = x ^ y, where x and y are two 128-bit word*/
nist.c: ^
nist.c: ./jh_sse2_opt64.h:255:20: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'F8' that is compiled without support for 'sse2'
nist.c: y0 = XOR(y0, LOAD(state->gt;buffer));
nist.c: ^
nist.c: ./jh_sse2_opt64.h:141:23: note: expanded from macro 'LOAD'
nist.c: #define LOAD(p) _mm_load_si128((__m128i *)(p)) /*load 16 bytes from the memory address p, return a 128-bit word, where p is the multile of 16 bytes*/
nist.c: ^
nist.c: ./jh_sse2_opt64.h:256:12: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'F8' that is compiled without support for 'sse2'
nist.c: y1 = XOR(y1, LOAD(state->gt;buffer+16));
nist.c: ^
nist.c: ./jh_sse2_opt64.h:112:23: note: expanded from macro 'XOR'
nist.c: #define XOR(x,y) _mm_xor_si128((x),(y)) /*XOR(x,y) = x ^ y, where x and y are two 128-bit word*/
nist.c: ^
nist.c: ./jh_sse2_opt64.h:256:20: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'F8' that is compiled without support for 'sse2'
nist.c: y1 = XOR(y1, LOAD(state->gt;buffer+16));
nist.c: ^
nist.c: ./jh_sse2_opt64.h:141:23: note: expanded from macro 'LOAD'
nist.c: #define LOAD(p) _mm_load_si128((__m128i *)(p)) /*load 16 bytes from the memory address p, return a 128-bit word, where p is the multile of 16 bytes*/
nist.c: ^
nist.c: ...

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

Compiler output

Implementation: crypto_hash/jh256/bitslice_sse2_opt32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
nist.c: In file included from nist.c:2:0:
nist.c: jh_sse2_opt32.h: In function 'F8':
nist.c: jh_sse2_opt32.h:247:10: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
nist.c: y0 = XOR(y0, LOAD(state->gt;buffer));
nist.c: ^
nist.c: In file included from jh_sse2_opt32.h:32:0,
nist.c: from nist.c:2:
nist.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:1286:1: error: inlining failed in call to always_inline '_mm_xor_si128': target specific option mismatch
nist.c: _mm_xor_si128 (__m128i __A, __m128i __B)
nist.c: ^
nist.c: In file included from nist.c:2:0:
nist.c: jh_sse2_opt32.h:250:10: error: called from here
nist.c: y3 = XOR(y3, LOAD(state->gt;buffer+48));
nist.c: ^
nist.c: In file included from jh_sse2_opt32.h:32:0,
nist.c: from nist.c:2:
nist.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:690:1: error: inlining failed in call to always_inline '_mm_load_si128': target specific option mismatch
nist.c: _mm_load_si128 (__m128i const *__P)
nist.c: ^
nist.c: In file included from nist.c:2:0:
nist.c: jh_sse2_opt32.h:112:23: error: called from here
nist.c: #define XOR(x,y) _mm_xor_si128((x),(y)) /*XOR(x,y) = x ^ y, where x and y are two 128-bit word*/
nist.c: ^
nist.c: jh_sse2_opt32.h:250:12: note: in expansion of macro 'XOR'
nist.c: y3 = XOR(y3, LOAD(state->gt;buffer+48));
nist.c: ...

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

Compiler output

Implementation: crypto_hash/jh256/bitslice_sse2_opt64
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
nist.c: In file included from nist.c:2:0:
nist.c: jh_sse2_opt64.h: In function 'F8':
nist.c: jh_sse2_opt64.h:255:10: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
nist.c: y0 = XOR(y0, LOAD(state->gt;buffer));
nist.c: ^
nist.c: In file included from jh_sse2_opt64.h:32:0,
nist.c: from nist.c:2:
nist.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:1286:1: error: inlining failed in call to always_inline '_mm_xor_si128': target specific option mismatch
nist.c: _mm_xor_si128 (__m128i __A, __m128i __B)
nist.c: ^
nist.c: In file included from nist.c:2:0:
nist.c: jh_sse2_opt64.h:258:10: error: called from here
nist.c: y3 = XOR(y3, LOAD(state->gt;buffer+48));
nist.c: ^
nist.c: In file included from jh_sse2_opt64.h:32:0,
nist.c: from nist.c:2:
nist.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:690:1: error: inlining failed in call to always_inline '_mm_load_si128': target specific option mismatch
nist.c: _mm_load_si128 (__m128i const *__P)
nist.c: ^
nist.c: In file included from nist.c:2:0:
nist.c: jh_sse2_opt64.h:112:23: error: called from here
nist.c: #define XOR(x,y) _mm_xor_si128((x),(y)) /*XOR(x,y) = x ^ y, where x and y are two 128-bit word*/
nist.c: ^
nist.c: jh_sse2_opt64.h:258:12: note: in expansion of macro 'XOR'
nist.c: y3 = XOR(y3, LOAD(state->gt;buffer+48));
nist.c: ...

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