Implementation notes: amd64, h6sandy, crypto_aead/aes128otrpv3

Computer: h6sandy
Microarchitecture: amd64; Sandy Bridge (206a7)
Architecture: amd64
CPU ID: GenuineIntel-000206a7-bfebfbff
SUPERCOP version: 20240625
Operation: crypto_aead
Primitive: aes128otrpv3
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
12237221065 4392 33637540 5212 1440T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
12359015247 4400 32030851 5252 1344T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
12442815263 4400 32032811 5252 1344T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
12915516966 4400 32033331 5252 1344T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
1434057597 4392 32022844 5212 1440T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
1440596009 4400 32019565 5244 1344T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
1596417486 4400 32021435 5252 1344T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
1635285220 4392 32018760 5180 1408T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
1651696562 4392 32021380 5196 1440T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625

Compiler output


encrypt.c: encrypt.c:250:96: warning: implicit conversion from 'int' to 'char' changes value from 255 to -1 [-Wconstant-conversion]
encrypt.c:         const block sh1 = _mm_set_epi8(255, 255, 255, 255, 255, 255, 15, 14, 255, 255, 255, 255, 255, 255, 7, 6);
encrypt.c:                           ~~~~~~~~~~~~                                                                ^~~
encrypt.c: encrypt.c:250:91: warning: implicit conversion from 'int' to 'char' changes value from 255 to -1 [-Wconstant-conversion]
encrypt.c:         const block sh1 = _mm_set_epi8(255, 255, 255, 255, 255, 255, 15, 14, 255, 255, 255, 255, 255, 255, 7, 6);
encrypt.c:                           ~~~~~~~~~~~~                                                           ^~~
encrypt.c: encrypt.c:250:86: warning: implicit conversion from 'int' to 'char' changes value from 255 to -1 [-Wconstant-conversion]
encrypt.c:         const block sh1 = _mm_set_epi8(255, 255, 255, 255, 255, 255, 15, 14, 255, 255, 255, 255, 255, 255, 7, 6);
encrypt.c:                           ~~~~~~~~~~~~                                                      ^~~
encrypt.c: encrypt.c:250:81: warning: implicit conversion from 'int' to 'char' changes value from 255 to -1 [-Wconstant-conversion]
encrypt.c:         const block sh1 = _mm_set_epi8(255, 255, 255, 255, 255, 255, 15, 14, 255, 255, 255, 255, 255, 255, 7, 6);
encrypt.c:                           ~~~~~~~~~~~~                                                 ^~~
encrypt.c: encrypt.c:250:76: warning: implicit conversion from 'int' to 'char' changes value from 255 to -1 [-Wconstant-conversion]
encrypt.c:         const block sh1 = _mm_set_epi8(255, 255, 255, 255, 255, 255, 15, 14, 255, 255, 255, 255, 255, 255, 7, 6);
encrypt.c:                           ~~~~~~~~~~~~                                            ^~~
encrypt.c: encrypt.c:250:71: warning: implicit conversion from 'int' to 'char' changes value from 255 to -1 [-Wconstant-conversion]
encrypt.c:         const block sh1 = _mm_set_epi8(255, 255, 255, 255, 255, 255, 15, 14, 255, 255, 255, 255, 255, 255, 7, 6);
encrypt.c:                           ~~~~~~~~~~~~                                       ^~~
encrypt.c: encrypt.c:250:58: warning: implicit conversion from 'int' to 'char' changes value from 255 to -1 [-Wconstant-conversion]
encrypt.c:         const block sh1 = _mm_set_epi8(255, 255, 255, 255, 255, 255, 15, 14, 255, 255, 255, 255, 255, 255, 7, 6);
encrypt.c:                           ~~~~~~~~~~~~                          ^~~
encrypt.c: encrypt.c:250:53: warning: implicit conversion from 'int' to 'char' changes value from 255 to -1 [-Wconstant-conversion]
encrypt.c:         const block sh1 = _mm_set_epi8(255, 255, 255, 255, 255, 255, 15, 14, 255, 255, 255, 255, 255, 255, 7, 6);
encrypt.c:                           ~~~~~~~~~~~~                     ^~~
encrypt.c: encrypt.c:250:48: warning: implicit conversion from 'int' to 'char' changes value from 255 to -1 [-Wconstant-conversion]
encrypt.c: ...

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

Compiler output


encrypt.c: encrypt.c: In function 'EFunc':
encrypt.c: encrypt.c:471:24: warning: unused variable 'tmp' [-Wunused-variable]
encrypt.c:   471 |         ALIGN(16)uint8 tmp[BLOCK] = { 0 };
encrypt.c:       |                        ^~~
encrypt.c: encrypt.c: In function 'DFunc':
encrypt.c: encrypt.c:666:24: warning: unused variable 'tmp' [-Wunused-variable]
encrypt.c:   666 |         ALIGN(16)uint8 tmp[BLOCK] = { 0 };
encrypt.c:       |                        ^~~
encrypt.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:41,
encrypt.c:                  from /usr/lib/gcc/x86_64-linux-gnu/11/include/x86intrin.h:32,
encrypt.c:                  from otr.h:30,
encrypt.c:                  from encrypt.c:33:
encrypt.c: encrypt.c: In function 'AES_128_Key_Expansion':
encrypt.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/wmmintrin.h:87:1: error: inlining failed in call to 'always_inline' '_mm_aeskeygenassist_si128': target specific option mismatch
encrypt.c:    87 | _mm_aeskeygenassist_si128 (__m128i __X, const int __C)
encrypt.c:       | ^~~~~~~~~~~~~~~~~~~~~~~~~
encrypt.c: encrypt.c:55:10: note: called from here
encrypt.c:    55 |     v2 = _mm_aeskeygenassist_si128(v4,aes_const);                           \
encrypt.c:       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
encrypt.c: encrypt.c:110:9: note: in expansion of macro 'EXPAND_ASSIST'
encrypt.c:   110 |         EXPAND_ASSIST(x0, x1, x2, x0, 255, 54);  kp[10] = x0;
encrypt.c:       |         ^~~~~~~~~~~~~
encrypt.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:41,
encrypt.c:                  from /usr/lib/gcc/x86_64-linux-gnu/11/include/x86intrin.h:32,
encrypt.c:                  from otr.h:30,
encrypt.c: ...

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

Compiler output


encrypt.c: encrypt.c:471:17: warning: unused variable 'tmp' [-Wunused-variable]
encrypt.c:         ALIGN(16)uint8 tmp[BLOCK] = { 0 };
encrypt.c:                        ^
encrypt.c: encrypt.c:666:17: warning: unused variable 'tmp' [-Wunused-variable]
encrypt.c:         ALIGN(16)uint8 tmp[BLOCK] = { 0 };
encrypt.c:                        ^
encrypt.c: encrypt.c:68:24: warning: unused function 'AES_256_Key_Expansion' [-Wunused-function]
encrypt.c: __inline__ static void AES_256_Key_Expansion(
encrypt.c:                        ^
encrypt.c: encrypt.c:206:13: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'AES_ecb_encrypt_PIPE' that is compiled without support for 'aes'
encrypt.c:                 blks[0] = _mm_aesenc_si128(blks[0], key[j]);
encrypt.c:                           ^
encrypt.c: encrypt.c:207:13: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'AES_ecb_encrypt_PIPE' that is compiled without support for 'aes'
encrypt.c:                 blks[1] = _mm_aesenc_si128(blks[1], key[j]);
encrypt.c:                           ^
encrypt.c: encrypt.c:208:13: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'AES_ecb_encrypt_PIPE' that is compiled without support for 'aes'
encrypt.c:                 blks[2] = _mm_aesenc_si128(blks[2], key[j]);
encrypt.c:                           ^
encrypt.c: encrypt.c:209:13: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'AES_ecb_encrypt_PIPE' that is compiled without support for 'aes'
encrypt.c:                 blks[3] = _mm_aesenc_si128(blks[3], key[j]);
encrypt.c:                           ^
encrypt.c: encrypt.c:211:13: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'AES_ecb_encrypt_PIPE' that is compiled without support for 'aes'
encrypt.c:                 blks[4] = _mm_aesenc_si128(blks[4], key[j]);
encrypt.c:                           ^
encrypt.c: encrypt.c:214:13: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'AES_ecb_encrypt_PIPE' that is compiled without support for 'aes'
encrypt.c: ...

Number of similar (implementation,compiler) pairs: 8, namely:
ImplementationCompiler
T:ni_p7m2clang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ni_p7m2clang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ni_p7m2clang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ni_p7m2clang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ni_p8m2clang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ni_p8m2clang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ni_p8m2clang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:ni_p8m2clang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)

Compiler output


encrypt.c: encrypt.c:471:17: warning: unused variable 'tmp' [-Wunused-variable]
encrypt.c:         ALIGN(16)uint8 tmp[BLOCK] = { 0 };
encrypt.c:                        ^
encrypt.c: encrypt.c:666:17: warning: unused variable 'tmp' [-Wunused-variable]
encrypt.c:         ALIGN(16)uint8 tmp[BLOCK] = { 0 };
encrypt.c:                        ^
encrypt.c: encrypt.c:68:24: warning: unused function 'AES_256_Key_Expansion' [-Wunused-function]
encrypt.c: __inline__ static void AES_256_Key_Expansion(
encrypt.c:                        ^
encrypt.c: encrypt.c:304:18: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'mul2_PIPE' that is compiled without support for 'ssse3'
encrypt.c:         __m128i intmp = le(dat[0]);
encrypt.c:                         ^
encrypt.c: encrypt.c:42:15: note: expanded from macro 'le'
encrypt.c: #define le(b) _mm_shuffle_epi8(b,_mm_set_epi8(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)) /*Byte order conversion*/
encrypt.c:               ^
encrypt.c: encrypt.c:312:11: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'mul2_PIPE' that is compiled without support for 'ssse3'
encrypt.c:         dat[1] = le(intmp);
encrypt.c:                  ^
encrypt.c: encrypt.c:42:15: note: expanded from macro 'le'
encrypt.c: #define le(b) _mm_shuffle_epi8(b,_mm_set_epi8(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)) /*Byte order conversion*/
encrypt.c:               ^
encrypt.c: encrypt.c:319:11: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'mul2_PIPE' that is compiled without support for 'ssse3'
encrypt.c:         dat[2] = le(intmp);
encrypt.c:                  ^
encrypt.c: encrypt.c:42:15: note: expanded from macro 'le'
encrypt.c: ...

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