Implementation notes: amd64, hydra7, crypto_stream/speck6496ctr

Computer: hydra7
Microarchitecture: amd64; Sandy Bridge+AES (206a7)
Architecture: amd64
CPU ID: GenuineIntel-000206a7-bfebfbff
SUPERCOP version: 20240625
Operation: crypto_stream
Primitive: speck6496ctr
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
337326217 0 038680 780 992T:sse4gcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062620240625
340827517 0 042877 804 1024T:sse4gcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062620240625
340925981 0 040069 804 1024T:sse4gcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062620240625
343226052 0 039740 796 1024T:sse4gcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062620240625

Compiler output


stream.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:47,
stream.c:                  from Intrinsics_AVX2_64block.h:5,
stream.c:                  from Speck6496AVX2.h:17,
stream.c:                  from stream.c:20:
stream.c: stream.c: In function 'Encrypt':
stream.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/avx2intrin.h:119:1: error: inlining failed in call to 'always_inline' '_mm256_add_epi32': target specific option mismatch
stream.c:   119 | _mm256_add_epi32 (__m256i __A, __m256i __B)
stream.c:       | ^~~~~~~~~~~~~~~~
stream.c: In file included from Speck6496AVX2.h:17,
stream.c:                  from stream.c:20:
stream.c: Intrinsics_AVX2_64block.h:17:13: note: called from here
stream.c:    17 | #define ADD _mm256_add_epi32
stream.c:       |             ^
stream.c: Intrinsics_AVX2_64block.h:26:46: note: in expansion of macro 'ADD'
stream.c:    26 | #define SET8(X,c) (X=SET(c,c,c,c,c,c,c,c), X=ADD(X,_q))
stream.c:       |                                              ^~~
stream.c: stream.c:147:24: note: in expansion of macro 'SET8'
stream.c:   147 |   SET1(X[0],nonce[1]); SET8(Y[0],nonce[0]);
stream.c:       |                        ^~~~
stream.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:47,
stream.c:                  from Intrinsics_AVX2_64block.h:5,
stream.c:                  from Speck6496AVX2.h:17,
stream.c:                  from stream.c:20:
stream.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/avx2intrin.h:119:1: error: inlining failed in call to 'always_inline' '_mm256_add_epi32': target specific option mismatch
stream.c:   119 | _mm256_add_epi32 (__m256i __A, __m256i __B)
stream.c: ...

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

Compiler output


stream.c: In file included from Speck6496AVX512.h:17,
stream.c:                  from stream.c:21:
stream.c: stream.c: In function 'Encrypt':
stream.c: Intrinsics_AVX512_64block.h:25:21: warning: AVX512F vector return without AVX512F enabled changes the ABI [-Wpsabi]
stream.c:    25 | #define SET1(X,c) (X=SET(c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c))
stream.c:       |                   ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: stream.c:135:5: note: in expansion of macro 'SET1'
stream.c:   135 |     SET1(X[0],nonce[1]); SET16(Y[0],nonce[0]);
stream.c:       |     ^~~~
stream.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:49,
stream.c:                  from Intrinsics_AVX512_64block.h:5,
stream.c:                  from Speck6496AVX512.h:17,
stream.c:                  from stream.c:21:
stream.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/avx512fintrin.h:6481:1: error: inlining failed in call to 'always_inline' '_mm512_storeu_si512': target specific option mismatch
stream.c:  6481 | _mm512_storeu_si512 (void *__P, __m512i __A)
stream.c:       | ^~~~~~~~~~~~~~~~~~~
stream.c: In file included from Speck6496AVX512.h:17,
stream.c:                  from stream.c:21:
stream.c: Intrinsics_AVX512_64block.h:31:18: note: called from here
stream.c:    31 | #define ST(ip,X) _mm512_storeu_si512((__m512i *)(ip),X)
stream.c:       |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: Intrinsics_AVX512_64block.h:32:42: note: in expansion of macro 'ST'
stream.c:    32 | #define STORE(out,X,Y) (ST(out,LOW(Y,X)),ST(out+64,HIGH(Y,X)))
stream.c:       |                                          ^~
stream.c: stream.c:138:5: note: in expansion of macro 'STORE'
stream.c: ...

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