Implementation notes: x86, thoth, crypto_hash/jh224

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: jh224
TimeImplementationCompilerBenchmark dateSUPERCOP version
212256bitslice_opt32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
213147bitslice_opt32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
220403bitslice_opt32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
229315bitslice_opt32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
243334simpleclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
246285bitslice_ref32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
264247simplegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
270107simplegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
270634simplegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
279928simplegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
296088bitslice_ref32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
309738bitslice_opt64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
311057bitslice_ref32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
311328bitslice_opt64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
316833bitslice_ref32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
317441bitslice_opt64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
318946bitslice_opt64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
321788bitslice_opt32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
330025bitslice_ref32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
354497bitslice_ref64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
372332bitslice_opt64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
388362bitslice_ref64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
388854bitslice_ref64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
397359bitslice_ref64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
448767bitslice_ref64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724

Compiler output

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