Implementation notes: x86, thoth, crypto_aead/norx6441v2

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_aead
Primitive: norx6441v2
TimeImplementationCompilerBenchmark dateSUPERCOP version
137619refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072720160724
186967refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072720160724
263613refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072720160724
264429refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072720160724
266832refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072720160724

Compiler output

Implementation: crypto_aead/norx6441v2/ymm
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
norx.c: norx.c:388:5: error: always_inline function '_mm256_set_epi64x' requires target feature 'sse3', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'sse3'
norx.c: INITIALISE(A, B, C, D, nonce, key);
norx.c: ^
norx.c: norx.c:289:28: note: expanded from macro 'INITIALISE'
norx.c: A = _mm256_blend_epi32(_mm256_set_epi64x(U3, U2, 0, 0), \
norx.c: ^
norx.c: norx.c:388:5: error: always_inline function '_mm256_castsi128_si256' requires target feature 'sse3', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'sse3'
norx.c: norx.c:290:28: note: expanded from macro 'INITIALISE'
norx.c: _mm256_castsi128_si256(LOADU128(NONCE)), 0x0F); \
norx.c: ^
norx.c: norx.c:388: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:290:51: note: expanded from macro 'INITIALISE'
norx.c: _mm256_castsi128_si256(LOADU128(NONCE)), 0x0F); \
norx.c: ^
norx.c: norx.c:58:22: note: expanded from macro 'LOADU128'
norx.c: #define LOADU128(in) _mm_loadu_si128((__m128i*)(in))
norx.c: ^
norx.c: norx.c:388:5: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse3', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'sse3'
norx.c: norx.c:291:9: note: expanded from macro 'INITIALISE'
norx.c: B = LOADU(KEY); \
norx.c: ^
norx.c: norx.c:53:19: note: expanded from macro 'LOADU'
norx.c: #define LOADU(in) _mm256_loadu_si256((__m256i*)(in))
norx.c: ^
norx.c: norx.c:388:5: error: always_inline function '_mm256_set_epi64x' requires target feature 'sse3', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'sse3'
norx.c: ...

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

Compiler output

Implementation: crypto_aead/norx6441v2/xmm
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
norx.c: norx.c:456: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: INITIALISE(S, nonce, key);
norx.c: ^
norx.c: norx.c:352:12: note: expanded from macro 'INITIALISE'
norx.c: S[0] = LOADU(NONCE); \
norx.c: ^
norx.c: norx.c:52:19: note: expanded from macro 'LOADU'
norx.c: #define LOADU(in) _mm_loadu_si128((__m128i*)(in))
norx.c: ^
norx.c: norx.c:456:5: error: always_inline function '_mm_set_epi64x' requires target feature 'sse2', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'sse2'
norx.c: norx.c:353:12: note: expanded from macro 'INITIALISE'
norx.c: S[1] = _mm_set_epi64x( U3, U2); \
norx.c: ^
norx.c: norx.c:456: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:354:12: note: expanded from macro 'INITIALISE'
norx.c: S[2] = LOADU(KEY + 0 * 2 * BYTES(NORX_W)); \
norx.c: ^
norx.c: norx.c:52:19: note: expanded from macro 'LOADU'
norx.c: #define LOADU(in) _mm_loadu_si128((__m128i*)(in))
norx.c: ^
norx.c: norx.c:456: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:355:12: note: expanded from macro 'INITIALISE'
norx.c: S[3] = LOADU(KEY + 1 * 2 * BYTES(NORX_W)); \
norx.c: ^
norx.c: norx.c:52:19: note: expanded from macro 'LOADU'
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/norx6441v2/ymm
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
norx.c: norx.c: In function 'norx_aead_encrypt':
norx.c: norx.c:289:7: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
norx.c: A = _mm256_blend_epi32(_mm256_set_epi64x(U3, U2, 0, 0), \
norx.c: ^
norx.c: norx.c:388:5: note: in expansion of macro 'INITIALISE'
norx.c: INITIALISE(A, B, C, D, nonce, key);
norx.c: ^
norx.c: norx.c:289:9: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
norx.c: A = _mm256_blend_epi32(_mm256_set_epi64x(U3, U2, 0, 0), \
norx.c: ^
norx.c: norx.c:388:5: note: in expansion of macro 'INITIALISE'
norx.c: INITIALISE(A, B, C, D, nonce, key);
norx.c: ^
norx.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/immintrin.h:43:0,
norx.c: from norx.c:25:
norx.c: /usr/lib/gcc/i686-linux-gnu/5/include/avx2intrin.h:913:1: error: inlining failed in call to always_inline '_mm256_xor_si256': target specific option mismatch
norx.c: _mm256_xor_si256 (__m256i __A, __m256i __B)
norx.c: ^
norx.c: norx.c:294:7: error: called from here
norx.c: D = XOR(D, _mm256_set_epi64x(NORX_T, NORX_P, NORX_L, NORX_W)); \
norx.c: ^
norx.c: norx.c:388:5: note: in expansion of macro 'INITIALISE'
norx.c: INITIALISE(A, B, C, D, nonce, key);
norx.c: ^
norx.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/immintrin.h:41:0,
norx.c: ...

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

Compiler output

Implementation: crypto_aead/norx6441v2/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:352:10: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
norx.c: S[0] = LOADU(NONCE); \
norx.c: ^
norx.c: norx.c:456: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:25:
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:73:19: error: called from here
norx.c: #define XOR(A, B) _mm_xor_si128((A), (B))
norx.c: ^
norx.c: norx.c:361:12: note: in expansion of macro 'XOR'
norx.c: S[7] = XOR(S[7], _mm_set_epi64x(NORX_T, NORX_P)); \
norx.c: ^
norx.c: norx.c:456: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:25:
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