Implementation notes: amd64, h3neo, crypto_aead/norx6441v2
Computer: h3neo
Microarchitecture: amd64; K10 45nm (100f63)
Architecture: amd64
CPU ID: AuthenticAMD-00100f63-078bfbff
SUPERCOP version: 20240625
Operation: crypto_aead
Primitive: norx6441v2
Time | Object size | Test size | Implementation | Compiler | Benchmark date | SUPERCOP version |
40008 | 4875 16 0 | 27147 860 1024 | T:ref | clang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
40959 | 9765 16 0 | 33364 828 1088 | T:ref | gcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
41482 | 4654 16 0 | 26948 828 1088 | T:ref | gcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
43503 | 3692 16 0 | 23312 804 1056 | T:ref | gcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
45669 | 4082 16 0 | 25308 820 1088 | T:ref | gcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
45872 | 5042 16 0 | 25835 860 1024 | T:ref | clang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
45964 | 4866 16 0 | 26563 860 1024 | T:ref | clang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
46877 | 3606 16 0 | 22861 852 1024 | T:ref | clang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
47935 | 19906 8 0 | 42123 852 1024 | T:xmm | clang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
50161 | 20594 8 0 | 44124 820 1088 | T:xmm | gcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
51771 | 21327 8 0 | 43524 820 1088 | T:xmm | gcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
51949 | 20042 8 0 | 41155 812 1088 | T:xmm | gcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
52994 | 3867 16 0 | 23731 860 1024 | T:ref | clang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
53013 | 19966 8 0 | 40683 852 1024 | T:xmm | clang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
53027 | 19982 8 0 | 41635 852 1024 | T:xmm | clang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
54999 | 20019 8 0 | 39133 844 1024 | T:xmm | clang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
55697 | 20185 8 0 | 39851 852 1024 | T:xmm | clang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
62050 | 17761 8 0 | 37215 796 1056 | T:xmm | gcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall | 20240705 | 20240625 |
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:
Implementation | Compiler |
T:ymm | clang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0) |
T:ymm | clang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0) |
T:ymm | clang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0) |
T:ymm | clang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0) |
T:ymm | clang -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:
Implementation | Compiler |
T:ymm | gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0) |
T:ymm | gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0) |
T:ymm | gcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0) |
T:ymm | gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0) |