Implementation notes: x86, thoth, crypto_aead/aezv3

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_aead
Primitive: aezv3
TimeImplementationCompilerBenchmark dateSUPERCOP version
2381069refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
2452701refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
2582992refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
2775752refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
3347961refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724

Compiler output

Implementation: crypto_aead/aezv3/aesni
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
aez_ni.c: aez_ni.c:135:23: error: always_inline function '_mm_setr_epi8' requires target feature 'sse2', but would be inlined into function 'aez_setup' that is compiled without support for 'sse2'
aez_ni.c: __m128i C11 = _mm_setr_epi8(0xCB,0xEC,0x5B,0xC6,0xB0,0x2F,0xFA,0xA8,
aez_ni.c: ^
aez_ni.c: aez_ni.c:137:23: error: always_inline function '_mm_setr_epi8' requires target feature 'sse2', but would be inlined into function 'aez_setup' that is compiled without support for 'sse2'
aez_ni.c: __m128i C12 = _mm_setr_epi8(0x0B,0x97,0x9B,0xB6,0x0A,0x61,0x7C,0x2C,
aez_ni.c: ^
aez_ni.c: aez_ni.c:139:23: error: always_inline function '_mm_setr_epi8' requires target feature 'sse2', but would be inlined into function 'aez_setup' that is compiled without support for 'sse2'
aez_ni.c: __m128i C13 = _mm_setr_epi8(0x1D,0x8B,0x1E,0x93,0xA6,0x94,0x06,0x4D,
aez_ni.c: ^
aez_ni.c: aez_ni.c:141:28: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'aez_setup' that is compiled without support for 'sse2'
aez_ni.c: ctx->gt;I = aes4(vxor(K,C11),C11,C11,C11,C11);
aez_ni.c: ^
aez_ni.c: aez_ni.c:55:24: note: expanded from macro 'vxor'
aez_ni.c: #define vxor(x,y) _mm_xor_si128(x,y)
aez_ni.c: ^
aez_ni.c: aez_ni.c:142:28: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'aez_setup' that is compiled without support for 'sse2'
aez_ni.c: ctx->gt;J[0] = aes4(vxor(K,C12),C12,C12,C12,C12);
aez_ni.c: ^
aez_ni.c: aez_ni.c:55:24: note: expanded from macro 'vxor'
aez_ni.c: #define vxor(x,y) _mm_xor_si128(x,y)
aez_ni.c: ^
aez_ni.c: aez_ni.c:143:28: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'aez_setup' that is compiled without support for 'sse2'
aez_ni.c: ctx->gt;L = aes4(vxor(K,C13),C13,C13,C13,C13);
aez_ni.c: ^
aez_ni.c: aez_ni.c:55:24: note: expanded from macro 'vxor'
aez_ni.c: ...

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

Compiler output

Implementation: crypto_aead/aezv3/aesni
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
aez_ni.c: aez_ni.c: In function 'zero_pad':
aez_ni.c: aez_ni.c:66:1: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
aez_ni.c: static __m128i zero_pad(__m128i x, unsigned zero_bytes) {
aez_ni.c: ^
aez_ni.c: In file included from aez_ni.c:37:0:
aez_ni.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:1268:1: error: inlining failed in call to always_inline '_mm_and_si128': target specific option mismatch
aez_ni.c: _mm_and_si128 (__m128i __A, __m128i __B)
aez_ni.c: ^
aez_ni.c: aez_ni.c:53:24: error: called from here
aez_ni.c: #define vand(x,y) _mm_and_si128(x,y)
aez_ni.c: ^
aez_ni.c: aez_ni.c:67:12: note: in expansion of macro 'vand'
aez_ni.c: return vand(x, _mm_loadu_si128((__m128i*)(pad + zero_bytes)));
aez_ni.c: ^
aez_ni.c: In file included from aez_ni.c:37:0:
aez_ni.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
aez_ni.c: _mm_loadu_si128 (__m128i const *__P)
aez_ni.c: ^
aez_ni.c: aez_ni.c:53:24: error: called from here
aez_ni.c: #define vand(x,y) _mm_and_si128(x,y)
aez_ni.c: ^
aez_ni.c: aez_ni.c:67:12: note: in expansion of macro 'vand'
aez_ni.c: return vand(x, _mm_loadu_si128((__m128i*)(pad + zero_bytes)));
aez_ni.c: ^

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