Implementation notes: x86, thoth, crypto_hash/cubehash1632

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: cubehash1632
TimeImplementationCompilerBenchmark dateSUPERCOP version
83823unrolled5clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
84660unrolled3clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
84752unrolled3gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
86131unrolled5gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
86257unrolled4clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
87493unrolled3gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
88835unrolled5gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
89710unrolled3gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
90514unrolled4gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
91082unrolled5gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
91446unrolled4gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
93639unrolled3gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
97133unrolled5gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
98472unrolled4gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
103370sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
103946sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
104200sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
104563sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
106405unrolled4gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
111714sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
112147sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
112580sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
118677x86gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
118678x86gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
118679x86clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
118682x86gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
119475sphlib-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
119897x86gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
121258sphlibclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
128108sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
145862unrolledgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
150512simplegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
151397unrolledgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
152381unrolledgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
171460unrolled2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
174159unrolled2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
175797unrolled2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
181896unrolled2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
187895unrolledclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
334707unrolledgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
335779simpleclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
367204unrolled2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
813450simplegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
827834simplegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
1016031simplegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724

Test failure

Implementation: crypto_hash/cubehash1632/x86xmm
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
error 111
crypto_hash does not handle m=h overlap

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments x86xmm
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv x86xmm
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv x86xmm
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv x86xmm
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv x86xmm

Compiler output

Implementation: crypto_hash/cubehash1632/emmintrin4
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
cubehash.c: cubehash.c:101:19: 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'
cubehash.c: state->gt;x[0] = _mm_set_epi32(0x4167d83e,0x2d538b8b,0x50f494d4,0x2aea2a61);
cubehash.c: ^
cubehash.c: cubehash.c:102:19: 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'
cubehash.c: state->gt;x[1] = _mm_set_epi32(0x50ac5695,0xcc39968e,0xc701cf8c,0x3fee2313);
cubehash.c: ^
cubehash.c: cubehash.c:103:19: 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'
cubehash.c: state->gt;x[2] = _mm_set_epi32(0x825b4537,0x97cf0bef,0xa647a8b3,0x4d42c787);
cubehash.c: ^
cubehash.c: cubehash.c:104:19: 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'
cubehash.c: state->gt;x[3] = _mm_set_epi32(0xa23911ae,0xd0e5cd33,0xf22090c4,0xeef864d2);
cubehash.c: ^
cubehash.c: cubehash.c:105:19: 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'
cubehash.c: state->gt;x[4] = _mm_set_epi32(0xb6444532,0x1b017bef,0x148fe485,0xfcd398d9);
cubehash.c: ^
cubehash.c: cubehash.c:106:19: 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'
cubehash.c: state->gt;x[5] = _mm_set_epi32(0x0dbadea9,0x91fa7934,0x2ff5781c,0x6a536159);
cubehash.c: ^
cubehash.c: cubehash.c:107:19: 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'
cubehash.c: state->gt;x[6] = _mm_set_epi32(0xbc796576,0xb1c62456,0xa5a70e75,0xd65c8a2b);
cubehash.c: ^
cubehash.c: cubehash.c:108:19: 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'
cubehash.c: state->gt;x[7] = _mm_set_epi32(0xd43e3b44,0x7795d246,0xe7989af1,0x1921c8f7);
cubehash.c: ^
cubehash.c: cubehash.c:110:19: 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'
cubehash.c: ...

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

Compiler output

Implementation: crypto_hash/cubehash1632/mmintrin
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:148:13: error: '__builtin_ia32_pshufw' needs target feature sse
hash.c: x10 = _mm_shuffle_pi16(x10,0x4e);
hash.c: ^
hash.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/xmmintrin.h:757:10: note: expanded from macro '_mm_shuffle_pi16'
hash.c: (__m64)__builtin_ia32_pshufw((__v4hi)(__m64)(a), (n)); })
hash.c: ^
hash.c: hash.c:149:13: error: '__builtin_ia32_pshufw' needs target feature sse
hash.c: x12 = _mm_shuffle_pi16(x12,0x4e);
hash.c: ^
hash.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/xmmintrin.h:757:10: note: expanded from macro '_mm_shuffle_pi16'
hash.c: (__m64)__builtin_ia32_pshufw((__v4hi)(__m64)(a), (n)); })
hash.c: ^
hash.c: hash.c:150:13: error: '__builtin_ia32_pshufw' needs target feature sse
hash.c: x14 = _mm_shuffle_pi16(x14,0x4e);
hash.c: ^
hash.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/xmmintrin.h:757:10: note: expanded from macro '_mm_shuffle_pi16'
hash.c: (__m64)__builtin_ia32_pshufw((__v4hi)(__m64)(a), (n)); })
hash.c: ^
hash.c: hash.c:151:13: error: '__builtin_ia32_pshufw' needs target feature sse
hash.c: x16 = _mm_shuffle_pi16(x16,0x4e);
hash.c: ^
hash.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/xmmintrin.h:757:10: note: expanded from macro '_mm_shuffle_pi16'
hash.c: (__m64)__builtin_ia32_pshufw((__v4hi)(__m64)(a), (n)); })
hash.c: ^
hash.c: hash.c:152:13: error: '__builtin_ia32_pshufw' needs target feature sse
hash.c: ...

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

Compiler output

Implementation: crypto_hash/cubehash1632/emmintrin5
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:23:8: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_hash_cubehash1632_emmintrin5' that is compiled without support for 'sse2'
hash.c: x0 = _mm_set_epi32(0x4167d83e,0x2d538b8b,0x50f494d4,0x2aea2a61);
hash.c: ^
hash.c: hash.c:24:8: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_hash_cubehash1632_emmintrin5' that is compiled without support for 'sse2'
hash.c: x1 = _mm_set_epi32(0x50ac5695,0xcc39968e,0xc701cf8c,0x3fee2313);
hash.c: ^
hash.c: hash.c:25:8: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_hash_cubehash1632_emmintrin5' that is compiled without support for 'sse2'
hash.c: x2 = _mm_set_epi32(0x825b4537,0x97cf0bef,0xa647a8b3,0x4d42c787);
hash.c: ^
hash.c: hash.c:26:8: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_hash_cubehash1632_emmintrin5' that is compiled without support for 'sse2'
hash.c: x3 = _mm_set_epi32(0xa23911ae,0xd0e5cd33,0xf22090c4,0xeef864d2);
hash.c: ^
hash.c: hash.c:27:8: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_hash_cubehash1632_emmintrin5' that is compiled without support for 'sse2'
hash.c: x4 = _mm_set_epi32(0xb6444532,0x1b017bef,0x148fe485,0xfcd398d9);
hash.c: ^
hash.c: hash.c:28:8: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_hash_cubehash1632_emmintrin5' that is compiled without support for 'sse2'
hash.c: x5 = _mm_set_epi32(0x0dbadea9,0x91fa7934,0x2ff5781c,0x6a536159);
hash.c: ^
hash.c: hash.c:29:8: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_hash_cubehash1632_emmintrin5' that is compiled without support for 'sse2'
hash.c: x6 = _mm_set_epi32(0xbc796576,0xb1c62456,0xa5a70e75,0xd65c8a2b);
hash.c: ^
hash.c: hash.c:30:8: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_hash_cubehash1632_emmintrin5' that is compiled without support for 'sse2'
hash.c: x7 = _mm_set_epi32(0xd43e3b44,0x7795d246,0xe7989af1,0x1921c8f7);
hash.c: ^
hash.c: hash.c:36:10: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'crypto_hash_cubehash1632_emmintrin5' that is compiled without support for 'sse2'
hash.c: ...

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

Compiler output

Implementation: crypto_hash/cubehash1632/emmintrin4
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
cubehash.c: cubehash.c: In function 'Init':
cubehash.c: cubehash.c:101:17: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
cubehash.c: state->gt;x[0] = _mm_set_epi32(0x4167d83e,0x2d538b8b,0x50f494d4,0x2aea2a61);
cubehash.c: ^
cubehash.c: In file included from cubehash.h:14:0,
cubehash.c: from cubehash.c:9:
cubehash.c: cubehash.c: In function 'transform':
cubehash.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
cubehash.c: _mm_shuffle_epi32 (__m128i __A, const int __mask)
cubehash.c: ^
cubehash.c: cubehash.c:76:8: error: called from here
cubehash.c: x7 = _mm_shuffle_epi32(x7,0xb1);
cubehash.c: ^
cubehash.c: In file included from cubehash.h:14:0,
cubehash.c: from cubehash.c:9:
cubehash.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
cubehash.c: _mm_shuffle_epi32 (__m128i __A, const int __mask)
cubehash.c: ^
cubehash.c: cubehash.c:75:8: error: called from here
cubehash.c: x6 = _mm_shuffle_epi32(x6,0xb1);
cubehash.c: ^
cubehash.c: In file included from cubehash.h:14:0,
cubehash.c: from cubehash.c:9:
cubehash.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
cubehash.c: _mm_shuffle_epi32 (__m128i __A, const int __mask)
cubehash.c: ...

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

Compiler output

Implementation: crypto_hash/cubehash1632/mmintrin
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: In file included from hash.c:3:0:
hash.c: hash.c: In function 'crypto_hash_cubehash1632_mmintrin':
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1139:1: error: inlining failed in call to always_inline '_mm_shuffle_pi16': target specific option mismatch
hash.c: _mm_shuffle_pi16 (__m64 __A, int const __N)
hash.c: ^
hash.c: hash.c:155:11: error: called from here
hash.c: x1e = _mm_shuffle_pi16(x1e,0x4e);
hash.c: ^
hash.c: In file included from hash.c:3:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1139:1: error: inlining failed in call to always_inline '_mm_shuffle_pi16': target specific option mismatch
hash.c: _mm_shuffle_pi16 (__m64 __A, int const __N)
hash.c: ^
hash.c: hash.c:154:11: error: called from here
hash.c: x1c = _mm_shuffle_pi16(x1c,0x4e);
hash.c: ^
hash.c: In file included from hash.c:3:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1139:1: error: inlining failed in call to always_inline '_mm_shuffle_pi16': target specific option mismatch
hash.c: _mm_shuffle_pi16 (__m64 __A, int const __N)
hash.c: ^
hash.c: hash.c:153:11: error: called from here
hash.c: x1a = _mm_shuffle_pi16(x1a,0x4e);
hash.c: ^
hash.c: In file included from hash.c:3:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1139:1: error: inlining failed in call to always_inline '_mm_shuffle_pi16': target specific option mismatch
hash.c: _mm_shuffle_pi16 (__m64 __A, int const __N)
hash.c: ...

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

Compiler output

Implementation: crypto_hash/cubehash1632/emmintrin5
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: hash.c: In function 'crypto_hash_cubehash1632_emmintrin5':
hash.c: hash.c:23:6: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
hash.c: x0 = _mm_set_epi32(0x4167d83e,0x2d538b8b,0x50f494d4,0x2aea2a61);
hash.c: ^
hash.c: In file included from hash.c:2:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch
hash.c: _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
hash.c: ^
hash.c: hash.c:30:6: error: called from here
hash.c: x7 = _mm_set_epi32(0xd43e3b44,0x7795d246,0xe7989af1,0x1921c8f7);
hash.c: ^
hash.c: In file included from hash.c:2:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch
hash.c: _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
hash.c: ^
hash.c: hash.c:29:6: error: called from here
hash.c: x6 = _mm_set_epi32(0xbc796576,0xb1c62456,0xa5a70e75,0xd65c8a2b);
hash.c: ^
hash.c: In file included from hash.c:2:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch
hash.c: _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
hash.c: ^
hash.c: hash.c:28:6: error: called from here
hash.c: x5 = _mm_set_epi32(0x0dbadea9,0x91fa7934,0x2ff5781c,0x6a536159);
hash.c: ^
hash.c: ...

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