Implementation notes: amd64, h6sandy, crypto_aead/norx6441v3

Computer: h6sandy
Microarchitecture: amd64; Sandy Bridge (206a7)
Architecture: amd64
CPU ID: GenuineIntel-000206a7-bfebfbff
SUPERCOP version: 20240625
Operation: crypto_aead
Primitive: norx6441v3
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
2046014828 8 037804 820 1088T:xmmgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
2057215094 8 036299 812 1088T:xmmgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
2156115175 8 034711 796 1056T:xmmgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
2196916481 8 038204 820 1088T:xmmgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
2256014860 8 036523 852 1024T:xmmclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
2266914876 8 038483 852 1024T:xmmclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
2323615309 8 034717 844 1024T:xmmclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
2671716121 8 035867 852 1024T:xmmclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
2809820121 8 042403 852 1024T:xmmclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
329905655 16 027419 860 1024T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
330815527 16 029235 860 1024T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
350414321 16 023917 852 1024T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
372535227 16 027555 860 1024T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
387124327 16 024275 860 1024T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
392535125 16 026924 828 1088T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
407704004 16 023696 804 1056T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
412919910 16 032940 828 1088T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
417024586 16 025892 820 1088T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625

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)