Implementation notes: amd64, hertz, crypto_aead/kiasueq128v1

Computer: hertz
Microarchitecture: amd64; Zen 4 (a60f12)
Architecture: amd64
CPU ID: AuthenticAMD-00a60f12-178bfbff
SUPERCOP version: 20240716
Operation: crypto_aead
Primitive: kiasueq128v1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
22736523301 0 038564 812 1096T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
22766026757 0 044060 812 1160T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
24480221238 0 034815 788 1064T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
38775934565 0 055622 828 1096T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
39127223287 0 038264 820 1096T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
39415634613 0 055782 828 1096T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716

Compiler output


kiasu.c: kiasu.c:74:25: warning: unused function 'bswap64' [-Wunused-function]
kiasu.c:    74 |  static inline uint64_t bswap64(uint64_t x) {
kiasu.c:       |                         ^~~~~~~
kiasu.c: 1 warning generated.
try.c: /usr/bin/ld: libcrypto_aead_kiasueq128v1.a(aes_tweaked.o): relocation R_X86_64_32S against symbol `M0' can not be used when making a PIE object; recompile with -fPIE
try.c: /usr/bin/ld: failed to set dynamic section sizes: bad value
try.c: clang: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (implementation,compiler) pairs: 3, namely:
ImplementationCompiler
T:bitsliceclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_18.1.3_(1ubuntu1))
T:bitsliceclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_18.1.3_(1ubuntu1))
T:bitsliceclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_18.1.3_(1ubuntu1))

Compiler output


try.c: /usr/bin/ld: libcrypto_aead_kiasueq128v1.a(aes_tweaked.o): relocation R_X86_64_32S against symbol `M0' can not be used when making a PIE object; recompile with -fPIE
try.c: /usr/bin/ld: failed to set dynamic section sizes: bad value
try.c: collect2: error: ld returned 1 exit status

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

Compiler output


kiasu.c: kiasu.c:123:7: warning: unused variable 'j' [-Wunused-variable]
kiasu.c:   123 |   int j;
kiasu.c:       |       ^
kiasu.c: kiasu.c:119:45: warning: implicit conversion from 'int' to 'char' changes value from 128 to -128 [-Wconstant-conversion]
kiasu.c:   119 |   const __m128i MSB_XLS1                = constant8( (0x8<<4),0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 );
kiasu.c:       |                                           ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kiasu.c: ./aes_ni.macros:13:171: note: expanded from macro 'constant8'
kiasu.c:    13 | #define constant8(b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1,b0)   _mm_set_epi8 ((b0),(b1),(b2),(b3),(b4),(b5),(b6),(b7),(b8),(b9),(b10),(b11),(b12),(b13),(b14),(b15))
kiasu.c:       |                                                                            ~~~~~~~~~~~~                                                                                   ^~~
kiasu.c: kiasu.c:120:45: warning: implicit conversion from 'int' to 'char' changes value from 144 to -112 [-Wconstant-conversion]
kiasu.c:   120 |   const __m128i MSB_XLS2                = constant8( (0x9<<4),0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 );
kiasu.c:       |                                           ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kiasu.c: ./aes_ni.macros:13:171: note: expanded from macro 'constant8'
kiasu.c:    13 | #define constant8(b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1,b0)   _mm_set_epi8 ((b0),(b1),(b2),(b3),(b4),(b5),(b6),(b7),(b8),(b9),(b10),(b11),(b12),(b13),(b14),(b15))
kiasu.c:       |                                                                            ~~~~~~~~~~~~                                                                                   ^~~
kiasu.c: kiasu.c:182:20: warning: unused variable 'j' [-Wunused-variable]
kiasu.c:   182 |     unsigned int i,j;
kiasu.c:       |                    ^
kiasu.c: kiasu.c:199:19: warning: unused variable 'MSB_M_LAST_ZERO' [-Wunused-variable]
kiasu.c:   199 |     const __m128i MSB_M_LAST_ZERO       = constant8( (0x1<<4),0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 );
kiasu.c:       |                   ^~~~~~~~~~~~~~~
kiasu.c: kiasu.c:200:19: warning: unused variable 'MSB_M_LAST_NONZERO' [-Wunused-variable]
kiasu.c:   200 |     const __m128i MSB_M_LAST_NONZERO    = constant8( (0x4<<4),0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 );
kiasu.c:       |                   ^~~~~~~~~~~~~~~~~~
kiasu.c: kiasu.c:206:13: warning: unused variable 'Pad' [-Wunused-variable]
kiasu.c: ...

Number of similar (implementation,compiler) pairs: 3, namely:
ImplementationCompiler
T:optclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_18.1.3_(1ubuntu1))
T:optclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_18.1.3_(1ubuntu1))
T:optclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_18.1.3_(1ubuntu1))

Compiler output


kiasu.c: kiasu.c: In function 'XLS':
kiasu.c: kiasu.c:123:7: warning: unused variable 'j' [-Wunused-variable]
kiasu.c:   123 |   int j;
kiasu.c:       |       ^
kiasu.c: kiasu.c: In function 'kiasu_aead_encrypt':
kiasu.c: kiasu.c:206:13: warning: unused variable 'Pad' [-Wunused-variable]
kiasu.c:   206 |     __m128i Pad;
kiasu.c:       |             ^~~
kiasu.c: kiasu.c:200:19: warning: unused variable 'MSB_M_LAST_NONZERO' [-Wunused-variable]
kiasu.c:   200 |     const __m128i MSB_M_LAST_NONZERO    = constant8( (0x4<<4),0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 );
kiasu.c:       |                   ^~~~~~~~~~~~~~~~~~
kiasu.c: kiasu.c:199:19: warning: unused variable 'MSB_M_LAST_ZERO' [-Wunused-variable]
kiasu.c:   199 |     const __m128i MSB_M_LAST_ZERO       = constant8( (0x1<<4),0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 );
kiasu.c:       |                   ^~~~~~~~~~~~~~~
kiasu.c: kiasu.c:182:20: warning: unused variable 'j' [-Wunused-variable]
kiasu.c:   182 |     unsigned int i,j;
kiasu.c:       |                    ^
kiasu.c: kiasu.c: In function 'kiasu_aead_decrypt':
kiasu.c: kiasu.c:471:13: warning: unused variable 'Pad' [-Wunused-variable]
kiasu.c:   471 |     __m128i Pad;
kiasu.c:       |             ^~~
kiasu.c: kiasu.c:465:19: warning: unused variable 'MSB_M_LAST_NONZERO' [-Wunused-variable]
kiasu.c:   465 |     const __m128i MSB_M_LAST_NONZERO    = constant8( (0x4<<4),0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 );
kiasu.c:       |                   ^~~~~~~~~~~~~~~~~~
kiasu.c: kiasu.c:464:19: warning: unused variable 'MSB_M_LAST_ZERO' [-Wunused-variable]
kiasu.c: ...

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

Compiler output


kiasu.c: In function 'set_nonce_in_tweak',
kiasu.c:     inlined from 'kiasu_aead_encrypt' at kiasu.c:204:5:
kiasu.c: kiasu.c:59:23: warning: 'tweak' is used uninitialized [-Wuninitialized]
kiasu.c:    59 |     tweak[0] =  (tweak[0]&0xf0)    ^ nonce[0] >> 4;
kiasu.c:       |                  ~~~~~^~~
kiasu.c: kiasu.c: In function 'kiasu_aead_encrypt':
kiasu.c: kiasu.c:195:13: note: 'tweak' declared here
kiasu.c:   195 |     uint8_t tweak[8];
kiasu.c:       |             ^~~~~
kiasu.c: In function 'set_nonce_in_tweak',
kiasu.c:     inlined from 'kiasu_aead_decrypt' at kiasu.c:377:5:
kiasu.c: kiasu.c:59:23: warning: 'tweak' is used uninitialized [-Wuninitialized]
kiasu.c:    59 |     tweak[0] =  (tweak[0]&0xf0)    ^ nonce[0] >> 4;
kiasu.c:       |                  ~~~~~^~~
kiasu.c: kiasu.c: In function 'kiasu_aead_decrypt':
kiasu.c: kiasu.c:367:13: note: 'tweak' declared here
kiasu.c:   367 |     uint8_t tweak[8];
kiasu.c:       |             ^~~~~

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)

Namespace violations


kiasu.o XLS T
kiasu.o getUnpaddedLength T
kiasu.o kiasu_aead_decrypt T
kiasu.o kiasu_aead_encrypt T
kiasu.o mix T
kiasu.o set_block_number_in_tweak T
kiasu.o set_nonce_in_tweak T
kiasu.o set_stage_in_tweak T
tweakable_aes.o aesTweakDecrypt T
tweakable_aes.o aesTweakEncrypt T

Number of similar (implementation,compiler) pairs: 6, namely:
ImplementationCompiler
T:refclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_18.1.3_(1ubuntu1))
T:refclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_18.1.3_(1ubuntu1))
T:refclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_18.1.3_(1ubuntu1))
T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)
T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)
T:refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)