Implementation notes: x86, thoth, crypto_aead/norx3261v1

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_aead
Primitive: norx3261v1
TimeImplementationCompilerBenchmark dateSUPERCOP version
178513refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072720160724
183906refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072720160724
184192refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072720160724
184452refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072720160724
193827refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072720160724

Compiler output

Implementation: crypto_aead/norx3261v1/xmm
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
norx.c: norx.c:346:25: error: always_inline function '_mm_loadu_si128' requires target feature 'sse2', but would be inlined into function 'crypto_aead_norx3261v1_xmm_encrypt' that is compiled without support for 'sse2'
norx.c: const __m128i K = LOADU(k + 0);
norx.c: ^
norx.c: norx.c:49:19: note: expanded from macro 'LOADU'
norx.c: #define LOADU(in) _mm_loadu_si128((__m128i*)(in))
norx.c: ^
norx.c: norx.c:351:5: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_aead_norx3261v1_xmm_encrypt' that is compiled without support for 'sse2'
norx.c: INITIALIZE(A, B, C, D, N, K);
norx.c: ^
norx.c: norx.c:273:9: note: expanded from macro 'INITIALIZE'
norx.c: A = _mm_set_epi32(U1, N >gt;>gt; 32, N&0xFFFFFFFF, U0); \
norx.c: ^
norx.c: norx.c:351:5: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_aead_norx3261v1_xmm_encrypt' that is compiled without support for 'sse2'
norx.c: norx.c:275:9: note: expanded from macro 'INITIALIZE'
norx.c: C = _mm_set_epi32(U5, U4, U3, U2); \
norx.c: ^
norx.c: norx.c:351:5: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'crypto_aead_norx3261v1_xmm_encrypt' that is compiled without support for 'sse2'
norx.c: norx.c:276:9: note: expanded from macro 'INITIALIZE'
norx.c: D = _mm_set_epi32(U9, U8, U7, U6); \
norx.c: ^
norx.c: norx.c:351:5: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'crypto_aead_norx3261v1_xmm_encrypt' that is compiled without support for 'sse2'
norx.c: norx.c:277:9: note: expanded from macro 'INITIALIZE'
norx.c: D = XOR(D, _mm_set_epi32(0, NORX_PARAMETER, 0, 0)); \
norx.c: ^
norx.c: norx.c:79:19: note: expanded from macro 'XOR'
norx.c: ...

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

Compiler output

Implementation: crypto_aead/norx3261v1/xmm
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
norx.c: norx.c: In function 'crypto_aead_norx3261v1_xmm_encrypt':
norx.c: norx.c:346:19: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
norx.c: const __m128i K = LOADU(k + 0);
norx.c: ^
norx.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1249:0,
norx.c: from /usr/lib/gcc/i686-linux-gnu/5/include/x86intrin.h:31,
norx.c: from norx.c:27:
norx.c: norx.c: In function 'block_copy':
norx.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:714:1: error: inlining failed in call to always_inline '_mm_storeu_si128': target specific option mismatch
norx.c: _mm_storeu_si128 (__m128i *__P, __m128i __B)
norx.c: ^
norx.c: norx.c:50:24: error: called from here
norx.c: #define STOREU(out, x) _mm_storeu_si128((__m128i*)(out), (x))
norx.c: ^
norx.c: norx.c:304:9: note: in expansion of macro 'STOREU'
norx.c: STOREU(out + 16, LOADU(in + 16));
norx.c: ^
norx.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1249:0,
norx.c: from /usr/lib/gcc/i686-linux-gnu/5/include/x86intrin.h:31,
norx.c: from norx.c:27:
norx.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
norx.c: _mm_loadu_si128 (__m128i const *__P)
norx.c: ^
norx.c: norx.c:50:24: error: called from here
norx.c: #define STOREU(out, x) _mm_storeu_si128((__m128i*)(out), (x))
norx.c: ...

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