Implementation notes: x86, thoth, crypto_hash/luffa384

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: luffa384
TimeImplementationCompilerBenchmark dateSUPERCOP version
78852armgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
81780opt32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
85766armgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
93122armgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
97119opt32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
100985armgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
102504armclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
112680opt32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
115853opt32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
128027opt32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724

Test failure

Implementation: crypto_hash/luffa384/sse2_x86asm
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
error 111

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

Compiler output

Implementation: crypto_hash/luffa384/sse2
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
luffa_for_sse2.c: luffa_for_sse2.c:303:11: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'Init' that is compiled without support for 'sse2'
luffa_for_sse2.c: MASK= _mm_set_epi32(0x00000000, 0x00000000, 0x00000000, 0xffffffff);
luffa_for_sse2.c: ^
luffa_for_sse2.c: luffa_for_sse2.c:306:14: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'Init' that is compiled without support for 'sse2'
luffa_for_sse2.c: ALLONE = _mm_set_epi32(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff);
luffa_for_sse2.c: ^
luffa_for_sse2.c: luffa_for_sse2.c:310:21: error: always_inline function '_mm_loadu_si128' requires target feature 'sse2', but would be inlined into function 'Init' that is compiled without support for 'sse2'
luffa_for_sse2.c: CNS128[i] = _mm_loadu_si128((__m128i*)&CNS_INIT[i*4]);
luffa_for_sse2.c: ^
luffa_for_sse2.c: luffa_for_sse2.c:316:36: error: always_inline function '_mm_loadu_si128' requires target feature 'sse2', but would be inlined into function 'Init' that is compiled without support for 'sse2'
luffa_for_sse2.c: state->gt;chainv[i] = _mm_loadu_si128((__m128i*)&IV[i*4]);
luffa_for_sse2.c: ^
luffa_for_sse2.c: luffa_for_sse2.c:322:36: error: always_inline function '_mm_loadu_si128' requires target feature 'sse2', but would be inlined into function 'Init' that is compiled without support for 'sse2'
luffa_for_sse2.c: state->gt;chainv[i] = _mm_loadu_si128((__m128i*)&IV[i*4]);
luffa_for_sse2.c: ^
luffa_for_sse2.c: luffa_for_sse2.c:328:36: error: always_inline function '_mm_loadu_si128' requires target feature 'sse2', but would be inlined into function 'Init' that is compiled without support for 'sse2'
luffa_for_sse2.c: state->gt;chainv[i] = _mm_loadu_si128((__m128i*)&IV[i*4]);
luffa_for_sse2.c: ^
luffa_for_sse2.c: luffa_for_sse2.c:334:36: error: always_inline function '_mm_loadu_si128' requires target feature 'sse2', but would be inlined into function 'Init' that is compiled without support for 'sse2'
luffa_for_sse2.c: state->gt;chainv[i] = _mm_loadu_si128((__m128i*)&IV[i*4]);
luffa_for_sse2.c: ^
luffa_for_sse2.c: 7 errors generated.

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

Compiler output

Implementation: crypto_hash/luffa384/ssse3_x86
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
luffa_x86asm.s: luffa_x86asm.s:483:13: error: unknown token in expression
luffa_x86asm.s: mov %ecx, [%esp+4]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:483:13: error: unknown token in expression
luffa_x86asm.s: mov %ecx, [%esp+4]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:484:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm0, [IV ]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:484:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm0, [IV ]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:485:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm1, [IV+ 16]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:485:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm1, [IV+ 16]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:486:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm2, [IV+ 32]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:486:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm2, [IV+ 32]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:487:13: error: unknown token in expression
luffa_x86asm.s: ...

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

Compiler output

Implementation: crypto_hash/luffa384/sse2_x86asm
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
luffa_x86asm.s: luffa_x86asm.s:808:13: error: unknown token in expression
luffa_x86asm.s: mov %ecx, [%esp+4]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:808:13: error: unknown token in expression
luffa_x86asm.s: mov %ecx, [%esp+4]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:809:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm0, [IV ]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:809:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm0, [IV ]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:810:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm1, [IV+16]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:810:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm1, [IV+16]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:811:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm2, [IV+32]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:811:13: error: unknown token in expression
luffa_x86asm.s: movaps %xmm2, [IV+32]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:812:13: error: unknown token in expression
luffa_x86asm.s: ...

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

Compiler output

Implementation: crypto_hash/luffa384/sse2_x86asm-2
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
luffa_x86asm.s: luffa_x86asm.s:808:13: error: unknown token in expression
luffa_x86asm.s: mov %ecx, [%esp+4]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:808:13: error: unknown token in expression
luffa_x86asm.s: mov %ecx, [%esp+4]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:809:13: error: unknown token in expression
luffa_x86asm.s: movdqa %xmm0, [IV ]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:809:13: error: unknown token in expression
luffa_x86asm.s: movdqa %xmm0, [IV ]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:810:13: error: unknown token in expression
luffa_x86asm.s: movdqa %xmm1, [IV+16]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:810:13: error: unknown token in expression
luffa_x86asm.s: movdqa %xmm1, [IV+16]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:811:13: error: unknown token in expression
luffa_x86asm.s: movdqa %xmm2, [IV+32]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:811:13: error: unknown token in expression
luffa_x86asm.s: movdqa %xmm2, [IV+32]
luffa_x86asm.s: ^
luffa_x86asm.s: luffa_x86asm.s:812:13: error: unknown token in expression
luffa_x86asm.s: ...

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

Compiler output

Implementation: crypto_hash/luffa384/sse2
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
luffa_for_sse2.c: luffa_for_sse2.c: In function 'Init':
luffa_for_sse2.c: luffa_for_sse2.c:303:9: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
luffa_for_sse2.c: MASK= _mm_set_epi32(0x00000000, 0x00000000, 0x00000000, 0xffffffff);
luffa_for_sse2.c: ^
luffa_for_sse2.c: In file included from luffa_for_sse2.c:22:0:
luffa_for_sse2.c: luffa_for_sse2.c: In function 'rnd256':
luffa_for_sse2.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:1415:1: error: inlining failed in call to always_inline '_mm_shuffle_epi32': target specific option mismatch
luffa_for_sse2.c: _mm_shuffle_epi32 (__m128i __A, const int __mask)
luffa_for_sse2.c: ^
luffa_for_sse2.c: luffa_for_sse2.c:616:14: error: called from here
luffa_for_sse2.c: msg[1] = _mm_shuffle_epi32(msg[1], 27);
luffa_for_sse2.c: ^
luffa_for_sse2.c: In file included from luffa_for_sse2.c:22:0:
luffa_for_sse2.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:1415:1: error: inlining failed in call to always_inline '_mm_shuffle_epi32': target specific option mismatch
luffa_for_sse2.c: _mm_shuffle_epi32 (__m128i __A, const int __mask)
luffa_for_sse2.c: ^
luffa_for_sse2.c: luffa_for_sse2.c:615:14: error: called from here
luffa_for_sse2.c: msg[0] = _mm_shuffle_epi32(msg[0], 27);
luffa_for_sse2.c: ^
luffa_for_sse2.c: In file included from luffa_for_sse2.c:22:0:
luffa_for_sse2.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:696:1: error: inlining failed in call to always_inline '_mm_loadu_si128': target specific option mismatch
luffa_for_sse2.c: _mm_loadu_si128 (__m128i const *__P)
luffa_for_sse2.c: ^
luffa_for_sse2.c: luffa_for_sse2.c:614:14: error: called from here
luffa_for_sse2.c: msg[1] = _mm_loadu_si128((__m128i*)&state->gt;buffer[4]);
luffa_for_sse2.c: ...

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