Implementation notes: x86, thoth, crypto_aead/twine80n6t4clocv2

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_aead
Primitive: twine80n6t4clocv2
TimeImplementationCompilerBenchmark dateSUPERCOP version
3018902refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072720160724
3026157refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072720160724
3400029refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072720160724
3757134refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072720160724
3864312refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072720160724

Compiler output

Implementation: crypto_aead/twine80n6t4clocv2/vperm
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
encrypt.c: In file included from encrypt.c:3:
encrypt.c: ./twine.h:227:15: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'Encode' that is compiled without support for 'sse2'
encrypt.c: word state = LOADS(text);
encrypt.c: ^
encrypt.c: ./twine.h:76:26: note: expanded from macro 'LOADS'
encrypt.c: #define LOADS(p) SHUFFLE4(LOAD64(p)) /* load 64-bit word from memory address p, and shuffle it */
encrypt.c: ^
encrypt.c: ./twine.h:80:24: note: expanded from macro 'SHUFFLE4'
encrypt.c: #define SHUFFLE4(x) XOR( \
encrypt.c: ^
encrypt.c: ./twine.h:57:25: note: expanded from macro 'XOR'
encrypt.c: #define XOR(x,y) _mm_xor_si128((x),(y)) /* exclusive-OR of 128-bit words x and y */
encrypt.c: ^
encrypt.c: ./twine.h:227:15: error: always_inline function '_mm_shuffle_epi8' requires target feature 'sse3', but would be inlined into function 'Encode' that is compiled without support for 'sse3'
encrypt.c: ./twine.h:76:26: note: expanded from macro 'LOADS'
encrypt.c: #define LOADS(p) SHUFFLE4(LOAD64(p)) /* load 64-bit word from memory address p, and shuffle it */
encrypt.c: ^
encrypt.c: ./twine.h:81:3: note: expanded from macro 'SHUFFLE4'
encrypt.c: _mm_shuffle_epi8(MASK4L(x), _mm_set_epi8(7, -1, 6, -1, 5, -1, 4, -1, 3, -1, 2, -1, 1, -1, 0, -1)), \
encrypt.c: ^
encrypt.c: ./twine.h:227:15: error: always_inline function '_mm_and_si128' requires target feature 'sse2', but would be inlined into function 'Encode' that is compiled without support for 'sse2'
encrypt.c: ./twine.h:76:26: note: expanded from macro 'LOADS'
encrypt.c: #define LOADS(p) SHUFFLE4(LOAD64(p)) /* load 64-bit word from memory address p, and shuffle it */
encrypt.c: ^
encrypt.c: ./twine.h:81:20: note: expanded from macro 'SHUFFLE4'
encrypt.c: ...

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

Compiler output

Implementation: crypto_aead/twine80n6t4clocv2/vperm
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
encrypt.c: In file included from encrypt.c:3:0:
encrypt.c: twine.h: In function 'Encode':
encrypt.c: twine.h:57:25: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
encrypt.c: #define XOR(x,y) _mm_xor_si128((x),(y)) /* exclusive-OR of 128-bit words x and y */
encrypt.c: ^
encrypt.c: twine.h:80:24: note: in expansion of macro 'XOR'
encrypt.c: #define SHUFFLE4(x) XOR( \
encrypt.c: ^
encrypt.c: twine.h:76:26: note: in expansion of macro 'SHUFFLE4'
encrypt.c: #define LOADS(p) SHUFFLE4(LOAD64(p)) /* load 64-bit word from memory address p, and shuffle it */
encrypt.c: ^
encrypt.c: twine.h:227:15: note: in expansion of macro 'LOADS'
encrypt.c: word state = LOADS(text);
encrypt.c: ^
encrypt.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1249:0,
encrypt.c: from twine.h:4,
encrypt.c: from encrypt.c:3:
encrypt.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
encrypt.c: _mm_xor_si128 (__m128i __A, __m128i __B)
encrypt.c: ^
encrypt.c: In file included from encrypt.c:3:0:
encrypt.c: twine.h:177:8: error: called from here
encrypt.c: right = XOR(right, _tmp); \
encrypt.c: ^
encrypt.c: twine.h:228:2: note: in expansion of macro 'twine80_enc'
encrypt.c: ...

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