Implementation notes: amd64, h8atom, crypto_aead/tiaoxinv1

Computer: h8atom
Microarchitecture: amd64; Bonnell (30661)
Architecture: amd64
CPU ID: GenuineIntel-00030661-bfebfbff
SUPERCOP version: 20240716
Operation: crypto_aead
Primitive: tiaoxinv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
12931142400 32 058541 824 928T:tablegcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
13121539278 32 054109 824 928T:tablegcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
14170834467 32 048949 824 928T:tablegcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
17252956414 32 069310 848 856T:tableclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
19052639633 32 052736 800 896T:tablegcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
19218560970 32 075812 856 856T:tableclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
20988159900 32 073580 856 856T:tableclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
69042408653 320 031221 1112 928T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
107953934927 304 023958 1120 856T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
109476367709 304 027436 1128 856T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
110140668153 320 029373 1112 928T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
126090516482 320 027173 1112 928T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625
192106675004 320 023928 1088 896T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070120240625

Test failure


error 111
crypto_aead_encrypt is nondeterministic

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

Test failure


error 111
crypto_aead_decrypt returns nonzero

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

Compiler output


tiaoxin-optimized.c: tiaoxin-optimized.c:137:2: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'tiaoxin_optimized_encrypt' that is compiled without support for 'aes'
tiaoxin-optimized.c:         UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
tiaoxin-optimized.c:         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:47:46: note: expanded from macro 'UPDATE'
tiaoxin-optimized.c: #define UPDATE( T3 , T4 , T6 , M0 , M1 , M2 )\
tiaoxin-optimized.c:                                              ^
tiaoxin-optimized.c: tiaoxin-optimized.c:40:41: note: expanded from macro '\
tiaoxin-optimized.c: RT3'
tiaoxin-optimized.c: #define RT3( T , M ) tmp  = T[0];T[0] = enc(T[2],M);T[2] = T[1];T[1] = enc(tmp,Z0);T[0] = xor(T[0], tmp);
tiaoxin-optimized.c:                                         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:30:19: note: expanded from macro 'enc'
tiaoxin-optimized.c: #define enc(a,b)        _mm_aesenc_si128(a,b)
tiaoxin-optimized.c:                         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:137:2: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'tiaoxin_optimized_encrypt' that is compiled without support for 'aes'
tiaoxin-optimized.c: tiaoxin-optimized.c:47:46: note: expanded from macro 'UPDATE'
tiaoxin-optimized.c: #define UPDATE( T3 , T4 , T6 , M0 , M1 , M2 )\
tiaoxin-optimized.c:                                              ^
tiaoxin-optimized.c: tiaoxin-optimized.c:40:72: note: expanded from macro '\
tiaoxin-optimized.c: RT3'
tiaoxin-optimized.c: #define RT3( T , M ) tmp  = T[0];T[0] = enc(T[2],M);T[2] = T[1];T[1] = enc(tmp,Z0);T[0] = xor(T[0], tmp);
tiaoxin-optimized.c:                                                                        ^
tiaoxin-optimized.c: tiaoxin-optimized.c:30:19: note: expanded from macro 'enc'
tiaoxin-optimized.c: #define enc(a,b)        _mm_aesenc_si128(a,b)
tiaoxin-optimized.c:                         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:137:2: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'tiaoxin_optimized_encrypt' that is compiled without support for 'aes'
tiaoxin-optimized.c: ...

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

Compiler output


tiaoxin-optimized.c: tiaoxin-optimized.c:126:7: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'tiaoxin_optimized_encrypt' that is compiled without support for 'ssse3'
tiaoxin-optimized.c:         W0 = _mm_shuffle_epi8( W0 , perm  );
tiaoxin-optimized.c:              ^
tiaoxin-optimized.c: tiaoxin-optimized.c:127:7: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'tiaoxin_optimized_encrypt' that is compiled without support for 'ssse3'
tiaoxin-optimized.c:         W1 = _mm_shuffle_epi8( W1 , perm  );
tiaoxin-optimized.c:              ^
tiaoxin-optimized.c: tiaoxin-optimized.c:137:2: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'tiaoxin_optimized_encrypt' that is compiled without support for 'aes'
tiaoxin-optimized.c:         UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
tiaoxin-optimized.c:         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:47:46: note: expanded from macro 'UPDATE'
tiaoxin-optimized.c: #define UPDATE( T3 , T4 , T6 , M0 , M1 , M2 )\
tiaoxin-optimized.c:                                              ^
tiaoxin-optimized.c: tiaoxin-optimized.c:40:41: note: expanded from macro '\
tiaoxin-optimized.c: RT3'
tiaoxin-optimized.c: #define RT3( T , M ) tmp  = T[0];T[0] = enc(T[2],M);T[2] = T[1];T[1] = enc(tmp,Z0);T[0] = xor(T[0], tmp);
tiaoxin-optimized.c:                                         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:30:19: note: expanded from macro 'enc'
tiaoxin-optimized.c: #define enc(a,b)        _mm_aesenc_si128(a,b)
tiaoxin-optimized.c:                         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:137:2: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'tiaoxin_optimized_encrypt' that is compiled without support for 'aes'
tiaoxin-optimized.c: tiaoxin-optimized.c:47:46: note: expanded from macro 'UPDATE'
tiaoxin-optimized.c: #define UPDATE( T3 , T4 , T6 , M0 , M1 , M2 )\
tiaoxin-optimized.c:                                              ^
tiaoxin-optimized.c: tiaoxin-optimized.c:40:72: note: expanded from macro '\
tiaoxin-optimized.c: RT3'
tiaoxin-optimized.c: ...

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

Compiler output


tiaoxin-optimized.c: In file included from tiaoxin-optimized.c:22:
tiaoxin-optimized.c: tiaoxin-optimized.c: In function 'tiaoxin_optimized_encrypt':
tiaoxin-optimized.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/wmmintrin.h:61:1: error: inlining failed in call to 'always_inline' '_mm_aesenc_si128': target specific option mismatch
tiaoxin-optimized.c:    61 | _mm_aesenc_si128 (__m128i __X, __m128i __Y)
tiaoxin-optimized.c:       | ^~~~~~~~~~~~~~~~
tiaoxin-optimized.c: tiaoxin-optimized.c:30:25: note: called from here
tiaoxin-optimized.c:    30 | #define enc(a,b)        _mm_aesenc_si128(a,b)
tiaoxin-optimized.c:       |                         ^~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: tiaoxin-optimized.c:42:108: note: in expansion of macro 'enc'
tiaoxin-optimized.c:    42 | #define RT6( T , M ) tmp  = T[0];T[0] = enc(T[5],M);T[5] = T[4];T[4] = T[3];T[3] = T[2];T[2] = T[1];T[1] = enc(tmp,Z0);T[0] = xor(T[0], tmp);
tiaoxin-optimized.c:       |                                                                                                            ^~~
tiaoxin-optimized.c: tiaoxin-optimized.c:50:1: note: in expansion of macro 'RT6'
tiaoxin-optimized.c:    50 | RT6( T6, M2 );
tiaoxin-optimized.c:       | ^~~
tiaoxin-optimized.c: tiaoxin-optimized.c:151:9: note: in expansion of macro 'UPDATE'
tiaoxin-optimized.c:   151 |         UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
tiaoxin-optimized.c:       |         ^~~~~~
tiaoxin-optimized.c: In file included from tiaoxin-optimized.c:22:
tiaoxin-optimized.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/wmmintrin.h:61:1: error: inlining failed in call to 'always_inline' '_mm_aesenc_si128': target specific option mismatch
tiaoxin-optimized.c:    61 | _mm_aesenc_si128 (__m128i __X, __m128i __Y)
tiaoxin-optimized.c:       | ^~~~~~~~~~~~~~~~
tiaoxin-optimized.c: tiaoxin-optimized.c:30:25: note: called from here
tiaoxin-optimized.c:    30 | #define enc(a,b)        _mm_aesenc_si128(a,b)
tiaoxin-optimized.c:       |                         ^~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: tiaoxin-optimized.c:42:41: note: in expansion of macro 'enc'
tiaoxin-optimized.c: ...

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

Compiler output


tiaoxin-optimized.c: tiaoxin-optimized.c:129:2: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'tiaoxin_optimized_encrypt' that is compiled without support for 'aes'
tiaoxin-optimized.c:         UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
tiaoxin-optimized.c:         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:46:46: note: expanded from macro 'UPDATE'
tiaoxin-optimized.c: #define UPDATE( T3 , T4 , T6 , M0 , M1 , M2 )\
tiaoxin-optimized.c:                                              ^
tiaoxin-optimized.c: tiaoxin-optimized.c:39:41: note: expanded from macro '\
tiaoxin-optimized.c: RT3'
tiaoxin-optimized.c: #define RT3( T , M ) tmp  = T[0];T[0] = enc(T[2],tmp);T[0] = xor(T[0], M);T[2] = T[1];T[1] = enc(tmp,Z0);
tiaoxin-optimized.c:                                         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:29:19: note: expanded from macro 'enc'
tiaoxin-optimized.c: #define enc(a,b)        _mm_aesenc_si128(a,b)
tiaoxin-optimized.c:                         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:129:2: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'tiaoxin_optimized_encrypt' that is compiled without support for 'aes'
tiaoxin-optimized.c: tiaoxin-optimized.c:46:46: note: expanded from macro 'UPDATE'
tiaoxin-optimized.c: #define UPDATE( T3 , T4 , T6 , M0 , M1 , M2 )\
tiaoxin-optimized.c:                                              ^
tiaoxin-optimized.c: tiaoxin-optimized.c:39:94: note: expanded from macro '\
tiaoxin-optimized.c: RT3'
tiaoxin-optimized.c: #define RT3( T , M ) tmp  = T[0];T[0] = enc(T[2],tmp);T[0] = xor(T[0], M);T[2] = T[1];T[1] = enc(tmp,Z0);
tiaoxin-optimized.c:                                                                                              ^
tiaoxin-optimized.c: tiaoxin-optimized.c:29:19: note: expanded from macro 'enc'
tiaoxin-optimized.c: #define enc(a,b)        _mm_aesenc_si128(a,b)
tiaoxin-optimized.c:                         ^
tiaoxin-optimized.c: tiaoxin-optimized.c:129:2: error: always_inline function '_mm_aesenc_si128' requires target feature 'aes', but would be inlined into function 'tiaoxin_optimized_encrypt' that is compiled without support for 'aes'
tiaoxin-optimized.c: ...

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

Compiler output


tiaoxin-optimized.c: In file included from tiaoxin-optimized.c:22:
tiaoxin-optimized.c: tiaoxin-optimized.c: In function 'tiaoxin_optimized_encrypt':
tiaoxin-optimized.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/wmmintrin.h:61:1: error: inlining failed in call to 'always_inline' '_mm_aesenc_si128': target specific option mismatch
tiaoxin-optimized.c:    61 | _mm_aesenc_si128 (__m128i __X, __m128i __Y)
tiaoxin-optimized.c:       | ^~~~~~~~~~~~~~~~
tiaoxin-optimized.c: tiaoxin-optimized.c:29:25: note: called from here
tiaoxin-optimized.c:    29 | #define enc(a,b)        _mm_aesenc_si128(a,b)
tiaoxin-optimized.c:       |                         ^~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: tiaoxin-optimized.c:41:130: note: in expansion of macro 'enc'
tiaoxin-optimized.c:    41 | #define RT6( T , M ) tmp  = T[0];T[0] = enc(T[5],tmp);T[0] = xor(T[0], M);T[5] = T[4];T[4] = T[3];T[3] = T[2];T[2] = T[1];T[1] = enc(tmp,Z0);
tiaoxin-optimized.c:       |                                                                                                                                  ^~~
tiaoxin-optimized.c: tiaoxin-optimized.c:49:1: note: in expansion of macro 'RT6'
tiaoxin-optimized.c:    49 | RT6( T6, M2 );
tiaoxin-optimized.c:       | ^~~
tiaoxin-optimized.c: tiaoxin-optimized.c:143:9: note: in expansion of macro 'UPDATE'
tiaoxin-optimized.c:   143 |         UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
tiaoxin-optimized.c:       |         ^~~~~~
tiaoxin-optimized.c: In file included from tiaoxin-optimized.c:22:
tiaoxin-optimized.c: /usr/lib/gcc/x86_64-linux-gnu/11/include/wmmintrin.h:61:1: error: inlining failed in call to 'always_inline' '_mm_aesenc_si128': target specific option mismatch
tiaoxin-optimized.c:    61 | _mm_aesenc_si128 (__m128i __X, __m128i __Y)
tiaoxin-optimized.c:       | ^~~~~~~~~~~~~~~~
tiaoxin-optimized.c: tiaoxin-optimized.c:29:25: note: called from here
tiaoxin-optimized.c:    29 | #define enc(a,b)        _mm_aesenc_si128(a,b)
tiaoxin-optimized.c:       |                         ^~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: tiaoxin-optimized.c:41:41: note: in expansion of macro 'enc'
tiaoxin-optimized.c: ...

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