Implementation notes: amd64, hunsnivy, crypto_aead/norx6441v2

Computer: hunsnivy
Microarchitecture: amd64; Ivy Bridge+AES (306a9)
Architecture: amd64
CPU ID: GenuineIntel-000306a9-bfebfbff
SUPERCOP version: 20240625
Operation: crypto_aead
Primitive: norx6441v2
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
2030813802 8 035560 788 1080T:xmmgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
2058614976 8 035335 780 1080T:xmmgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
2066115001 8 038704 820 1016T:xmmclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
2073215001 8 037032 820 1016T:xmmclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
2102114612 8 035400 788 1080T:xmmgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
2122813465 8 032251 764 1048T:xmmgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
2163114640 8 033830 812 1016T:xmmclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
2472420485 8 042608 820 1016T:xmmclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
2553115726 8 035334 812 1016T:xmmclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
324784985 16 026836 796 1080T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
328784337 16 025212 796 1080T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
336793096 16 022004 772 1048T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
342063668 16 024112 788 1080T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
343624861 16 027080 828 1016T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
404074172 16 024118 820 1016T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
423055079 16 028904 828 1016T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
424135175 16 027328 828 1016T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
427183894 16 023294 820 1016T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625

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-11/lib/clang/11.0.1/include/avx2intrin.h:750:12: 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_xor_si256' requires target feature 'avx2', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'avx2'
norx.c: norx.c:294:9: note: expanded from macro 'INITIALISE'
norx.c:     D = XOR(D, _mm256_set_epi64x(NORX_T, NORX_P, NORX_L, NORX_W));         \
norx.c:         ^
norx.c: norx.c:72:19: note: expanded from macro 'XOR'
norx.c: #define XOR(A, B) _mm256_xor_si256((A), (B))
norx.c:                   ^
norx.c: norx.c:388:5: error: always_inline function '_mm256_xor_si256' requires target feature 'avx2', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'avx2'
norx.c: norx.c:295:5: note: expanded from macro 'INITIALISE'
norx.c:     PERMUTE(A, B, C, D);                                                   \
norx.c:     ^
norx.c: norx.c:209:9: note: expanded from macro 'PERMUTE'
norx.c:         F(A, B, C, D);          \
norx.c:         ^
norx.c: norx.c:197:5: note: expanded from macro 'F'
norx.c:     G(A, B, C, D);             \
norx.c: ...

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

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-11/lib/clang/11.0.1/include/avx2intrin.h:750:12: 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: 1, namely:
ImplementationCompiler
T:ymmclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)

Compiler output


norx.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:53,
norx.c:                  from norx.c:25:
norx.c: norx.c: In function 'norx_aead_encrypt':
norx.c: /usr/lib/gcc/x86_64-linux-gnu/10/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/10/include/immintrin.h:53,
norx.c:                  from norx.c:25:
norx.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/avx2intrin.h:971:1: error: inlining failed in call to 'always_inline' '_mm256_blend_epi32': target specific option mismatch
norx.c:   971 | _mm256_blend_epi32 (__m256i __X, __m256i __Y, const int __M)
norx.c:       | ^~~~~~~~~~~~~~~~~~
norx.c: norx.c:289:9: note: called from here
norx.c:   289 |     A = _mm256_blend_epi32(_mm256_set_epi64x(U3, U2, 0, 0),                \
norx.c:       |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
norx.c:   290 |                            _mm256_castsi128_si256(LOADU128(NONCE)), 0x0F); \
norx.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 (10.2.1_20210110)
T:ymmgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:ymmgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:ymmgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)