Implementation notes: amd64, titan0, crypto_aead/kiasueq128v1

Computer: titan0
Microarchitecture: amd64; HW+AES (306c3)
Architecture: amd64
CPU ID: GenuineIntel-000306c3-bfebfbff
SUPERCOP version: 20221122
Operation: crypto_aead
Primitive: kiasueq128v1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
757021392 0 043036 812 1088T:optgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022101120221005
767623104 0 046756 812 1088T:optgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022101120221005
785020745 0 041843 804 1088T:optgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022101120221005
803420763 0 040231 788 1056T:optgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022101120221005
971824242 0 043648 860 1024T:optclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022101120221005
983332069 0 054624 860 1056T:optclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022101120221005
984932149 0 054984 860 1056T:optclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022101120221005
1028824647 0 044826 852 1088T:optclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022101120221005
27995625511 0 041504 860 1024T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022101120221005
28197230375 0 047624 860 1056T:refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022101120221005
28260829543 0 046512 860 1056T:refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022101120221005
28771423141 0 038396 812 1088T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022101120221005
29119926796 0 044052 812 1088T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022101120221005
29278621201 0 035842 852 1088T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022101120221005
30470421294 0 034927 788 1056T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022101120221005
32221222310 0 037171 804 1088T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022101120221005
33058821639 0 035584 860 1024T:refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022101120221005

Compiler output

Implementation: T:bitslice
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
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 (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:bitslice
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:bitslice
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:bitslice
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:bitslice
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:bitslice

Compiler output

Implementation: T:bitslice
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
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 (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:bitslice
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:bitslice
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE T:bitslice
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:bitslice

Compiler output

Implementation: T:opt
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
kiasu.c: kiasu.c:119:45: warning: implicit conversion from 'int' to 'char' changes value from 128 to -128 [-Wconstant-conversion]
kiasu.c: 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: #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: 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: #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: 2 warnings generated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt

Compiler output

Implementation: T:opt
Security model: timingleaks
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
kiasu.c: kiasu.c:119:45: warning: implicit conversion from 'int' to 'char' changes value from 128 to -128 [-Wconstant-conversion]
kiasu.c: 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: #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: 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: #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:133:12: error: always_inline function '_mm_aesimc_si128' requires target feature 'aes', but would be inlined into function 'XLS' that is compiled without support for 'aes'
kiasu.c: dTweak = mc_inv(Tweak);
kiasu.c: ^
kiasu.c: ./aes_ni.macros:5:23: note: expanded from macro 'mc_inv'
kiasu.c: #define mc_inv(a) _mm_aesimc_si128(a)
kiasu.c: ^
kiasu.c: kiasu.c:135:22: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'XLS' that is compiled without support for 'aes'
kiasu.c: if( Direction){ AES( State , subkeys , Tweak ); }
kiasu.c: ^
kiasu.c: ./aes_ni.macros:21:5: note: expanded from macro 'AES'
kiasu.c: s = enc( s , xor( subkeys[1] , tw ) );\
kiasu.c: ^
kiasu.c: ./aes_ni.macros:1:18: note: expanded from macro 'enc'
kiasu.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt