Implementation notes: x86, thoth, crypto_aead/norx3261v2

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_aead
Primitive: norx3261v2
TimeImplementationCompilerBenchmark dateSUPERCOP version
151146refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072720160724
155278refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072720160724
156317refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072720160724
162814refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072720160724
179878refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072720160724

Compiler output

Implementation: crypto_aead/norx3261v2/xmm
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
norx.c: norx.c:397:5: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'sse2'
norx.c: INITIALISE(S, nonce, key);
norx.c: ^
norx.c: norx.c:299:12: note: expanded from macro 'INITIALISE'
norx.c: S[0] = _mm_set_epi32( U3, U2, N >gt;>gt; 32, N&0xFFFFFFFF); \
norx.c: ^
norx.c: norx.c:397:5: error: always_inline function '_mm_loadu_si128' requires target feature 'sse2', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'sse2'
norx.c: norx.c:300:12: note: expanded from macro 'INITIALISE'
norx.c: S[1] = LOADU(KEY); \
norx.c: ^
norx.c: norx.c:55:19: note: expanded from macro 'LOADU'
norx.c: #define LOADU(in) _mm_loadu_si128((__m128i*)(in))
norx.c: ^
norx.c: norx.c:397:5: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'sse2'
norx.c: norx.c:301:12: note: expanded from macro 'INITIALISE'
norx.c: S[2] = _mm_set_epi32(U11, U10, U9, U8); \
norx.c: ^
norx.c: norx.c:397:5: error: always_inline function '_mm_set_epi32' requires target feature 'sse2', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'sse2'
norx.c: norx.c:302:12: note: expanded from macro 'INITIALISE'
norx.c: S[3] = _mm_set_epi32(U15, U14, U13, U12); \
norx.c: ^
norx.c: norx.c:397:5: error: always_inline function '_mm_xor_si128' requires target feature 'sse2', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'sse2'
norx.c: norx.c:303:12: note: expanded from macro 'INITIALISE'
norx.c: S[3] = XOR(S[3], _mm_set_epi32(NORX_T, NORX_P, NORX_L, NORX_W)); \
norx.c: ^
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/norx3261v2/xmm
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
norx.c: norx.c: In function 'norx_aead_encrypt':
norx.c: norx.c:299:10: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
norx.c: S[0] = _mm_set_epi32( U3, U2, N >gt;>gt; 32, N&0xFFFFFFFF); \
norx.c: ^
norx.c: norx.c:397:5: note: in expansion of macro 'INITIALISE'
norx.c: INITIALISE(S, nonce, key);
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/immintrin.h:29,
norx.c: from norx.c:26:
norx.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
norx.c: _mm_xor_si128 (__m128i __A, __m128i __B)
norx.c: ^
norx.c: norx.c:85:19: error: called from here
norx.c: #define XOR(A, B) _mm_xor_si128((A), (B))
norx.c: ^
norx.c: norx.c:303:12: note: in expansion of macro 'XOR'
norx.c: S[3] = XOR(S[3], _mm_set_epi32(NORX_T, NORX_P, NORX_L, NORX_W)); \
norx.c: ^
norx.c: norx.c:397:5: note: in expansion of macro 'INITIALISE'
norx.c: INITIALISE(S, nonce, key);
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/immintrin.h:29,
norx.c: from norx.c:26:
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