Implementation notes: amd64, hydra8, crypto_aead/norx6441v3

Computer: hydra8
Microarchitecture: amd64; Ivy Bridge+AES (306a9)
Architecture: amd64
CPU ID: GenuineIntel-000306a9-bfebfbff
SUPERCOP version: 20240716
Operation: crypto_aead
Primitive: norx6441v3
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1999714828 8 037804 820 1088T:xmmgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
2059115094 8 036299 812 1088T:xmmgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
2102415175 8 034711 796 1056T:xmmgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
2113716481 8 038204 820 1088T:xmmgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
2262314860 8 036536 868 1024T:xmmclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
2262314876 8 038496 868 1024T:xmmclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
2343915309 8 034730 860 1024T:xmmclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
2482920121 8 042416 868 1024T:xmmclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
2596516121 8 035880 868 1024T:xmmclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
299745655 16 027432 876 1024T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
303215527 16 029248 876 1024T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
304754321 16 023930 868 1024T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
307865227 16 027568 876 1024T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
336325125 16 026924 828 1088T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
345694586 16 025892 820 1088T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
352309910 16 032940 828 1088T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
355964004 16 023696 804 1056T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716
358624327 16 024288 876 1024T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071720240716

Compiler output


norx.c: norx.c:395: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:     INITIALISE(A, B, C, D, nonce, K);
norx.c:     ^
norx.c: norx.c:297: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:395: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:298: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:     ^
norx.c: norx.c:109:14: note: expanded from macro 'G'
norx.c:         t0 = XOR( A,  B); \
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: ...

Number of similar (implementation,compiler) pairs: 4, 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)

Compiler output


norx.c: norx.c:391:23: error: always_inline function '_mm256_loadu_si256' requires target feature 'avx', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'avx'
norx.c:     const __m256i K = 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:391:23: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
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:395:5: error: always_inline function '_mm256_loadu_si256' requires target feature 'avx', but would be inlined into function 'norx_aead_encrypt' that is compiled without support for 'avx'
norx.c:     INITIALISE(A, B, C, D, nonce, K);
norx.c:     ^
norx.c: norx.c:293:9: note: expanded from macro 'INITIALISE'
norx.c:     A = LOADU(NONCE);                                                      \
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:395:5: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
norx.c: norx.c:293:9: note: expanded from macro 'INITIALISE'
norx.c:     A = LOADU(NONCE);                                                      \
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: ...

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

Compiler output


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: norx.c: In function 'norx_aead_encrypt':
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:297:9: note: in expansion of macro 'XOR'
norx.c:   297 |     D = XOR(D, _mm256_set_epi64x(NORX_T, NORX_P, NORX_L, NORX_W));         \
norx.c:       |         ^~~
norx.c: norx.c:395:5: note: in expansion of macro 'INITIALISE'
norx.c:   395 |     INITIALISE(A, B, C, D, nonce, K);
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:297:9: note: in expansion of macro 'XOR'
norx.c:   297 |     D = XOR(D, _mm256_set_epi64x(NORX_T, NORX_P, NORX_L, NORX_W));         \
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)

Namespace violations


norx.o norx_absorb_data T
norx.o norx_aead_decrypt T
norx.o norx_aead_encrypt T
norx.o norx_decrypt_data T
norx.o norx_encrypt_data T
norx.o norx_verify_tag T
norx.o norx_version D

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

Namespace violations


norx.o norx_aead_decrypt T
norx.o norx_aead_encrypt T
norx.o norx_version D

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