Implementation notes: amd64, h8atom, crypto_aead/norx6461v2

Computer: h8atom
Microarchitecture: amd64; Bonnell (30661)
Architecture: amd64
CPU ID: GenuineIntel-00030661-bfebfbff
SUPERCOP version: 20240716
Operation: crypto_aead
Primitive: norx6461v2
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
805075387 16 026332 832 856T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
817955179 16 027300 832 856T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
838463721 16 022814 824 856T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
945429813 16 032485 800 928T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
957884605 16 025949 800 928T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
962015067 16 026924 832 856T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
9666319906 8 041708 824 856T:xmmclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1044823991 16 023820 832 856T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1076743695 16 022825 776 896T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
1090253947 16 024717 792 928T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
12366918808 8 040820 824 856T:xmmclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
12368318792 8 039628 824 856T:xmmclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
12535618714 8 037630 816 856T:xmmclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
13239119780 8 041045 792 928T:xmmgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
13293718622 8 039300 784 928T:xmmgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
13471518526 8 041141 792 928T:xmmgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
13776716398 8 035376 768 896T:xmmgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625
14541119871 8 039476 824 856T:xmmclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024063020240625

Compiler output


norx.c: norx.c:388:5: error: '__builtin_ia32_pblendd256' needs target feature avx2
norx.c:     INITIALISE(A, B, C, D, nonce, key);
norx.c:     ^
norx.c: norx.c:289:9: note: expanded from macro 'INITIALISE'
norx.c:     A = _mm256_blend_epi32(_mm256_set_epi64x(U3, U2, 0, 0),                \
norx.c:         ^
norx.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/avx2intrin.h:750:13: note: expanded from macro '_mm256_blend_epi32'
norx.c:   ((__m256i)__builtin_ia32_pblendd256((__v8si)(__m256i)(V1), \
norx.c:             ^
norx.c: norx.c:388:5: error: always_inline function '_mm256_set_epi64x' requires target feature 'avx', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'avx'
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: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
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 'avx', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'avx'
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: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
norx.c: norx.c:290:28: note: expanded from macro 'INITIALISE'
norx.c:                            _mm256_castsi128_si256(LOADU128(NONCE)), 0x0F); \
norx.c:                            ^
norx.c: ...

Number of similar (implementation,compiler) pairs: 5, namely:
ImplementationCompiler
T:ymmclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ymmclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ymmclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ymmclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ymmclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)

Compiler output


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:   289 |     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:   388 |     INITIALISE(A, B, C, D, nonce, key);
norx.c:       |     ^~~~~~~~~~
norx.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:47,
norx.c:                  from norx.c:25:
norx.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/avx2intrin.h:913:1: error: inlining failed in call to 'always_inline' '_mm256_xor_si256': target specific option mismatch
norx.c:   913 | _mm256_xor_si256 (__m256i __A, __m256i __B)
norx.c:       | ^~~~~~~~~~~~~~~~
norx.c: norx.c:72:19: note: called from here
norx.c:    72 | #define XOR(A, B) _mm256_xor_si256((A), (B))
norx.c:       |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
norx.c: norx.c:294:9: note: in expansion of macro 'XOR'
norx.c:   294 |     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:   388 |     INITIALISE(A, B, C, D, nonce, key);
norx.c:       |     ^~~~~~~~~~
norx.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
norx.c:                  from norx.c:25:
norx.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:1303:1: error: inlining failed in call to 'always_inline' '_mm256_set_epi64x': target specific option mismatch
norx.c:  1303 | _mm256_set_epi64x (long long __A, long long __B, long long __C,
norx.c: ...

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:ymmgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:ymmgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:ymmgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:ymmgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)