Implementation notes: x86, thoth, crypto_hash/jh512

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: jh512
TimeImplementationCompilerBenchmark dateSUPERCOP version
212724bitslice_opt32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
213852bitslice_opt32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
221338bitslice_opt32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
226602bitslice_opt32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
243490simpleclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
250135bitslice_ref32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
264179simplegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
270164simplegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
270646simplegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
280223simplegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
298247bitslice_ref32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
310615bitslice_opt64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
311113bitslice_ref32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
311330bitslice_opt64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
315997bitslice_ref32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
318714bitslice_opt64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
318846bitslice_opt64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
321844bitslice_opt32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
333852bitslice_ref32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
354628bitslice_ref64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
375141bitslice_opt64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
388366bitslice_ref64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
388910bitslice_ref64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
397949bitslice_ref64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
448643bitslice_ref64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724

Compiler output

Implementation: crypto_hash/jh512/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/jh512/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/jh512/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/jh512/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