Implementation notes: amd64, hertz, crypto_aead/hs1sivlov2

Computer: hertz
Microarchitecture: amd64; Zen 4 (a60f12)
Architecture: amd64
CPU ID: AuthenticAMD-00a60f12-178bfbff
SUPERCOP version: 20240716
Operation: crypto_aead
Primitive: hs1sivlov2
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
40398858 0 030469 820 1096T:fastergcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
504321026 0 048022 844 1096T:dolbeau/amd64-sseclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
50687999 0 028880 836 1096T:dolbeau/amd64-sseclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
507321026 0 048134 844 1096T:dolbeau/amd64-sseclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
1185211097 0 038190 844 1096T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
119439241 0 036446 844 1096T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
186213459 0 024520 836 1096T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716

Checksum failure


c422ef7bb1cf281e8edeea6eb53ea49e2a2df942cf721efaca6f3d089d301186

Number of similar (implementation,compiler) pairs: 2, namely:
ImplementationCompiler
T:dolbeau/amd64-ssegcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)
T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)

Test failure


error 111
crypto_aead_decrypt allows trivial forgeries

Number of similar (implementation,compiler) pairs: 3, namely:
ImplementationCompiler
T:dolbeau/amd64-ssegcc -march=native -mtune=native -O3 -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)

Test failure


error 111
crypto_aead_decrypt returns nonzero

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:dolbeau/amd64-ssegcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)

Test failure


error 111

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

Compiler output


encrypt.c: In file included from encrypt.c:194:
encrypt.c: ./c128.h:62:11: warning: unused variable 't_6' [-Wunused-variable]
encrypt.c:    62 |   __m128i t_6;
encrypt.c:       |           ^~~
encrypt.c: ./c128.h:63:11: warning: unused variable 't_7' [-Wunused-variable]
encrypt.c:    63 |   __m128i t_7;
encrypt.c:       |           ^~~
encrypt.c: ./c128.h:70:11: warning: unused variable 't_14' [-Wunused-variable]
encrypt.c:    70 |   __m128i t_14;
encrypt.c:       |           ^~~~
encrypt.c: ./c128.h:71:11: warning: unused variable 't_15' [-Wunused-variable]
encrypt.c:    71 |   __m128i t_15;
encrypt.c:       |           ^~~~
encrypt.c: In file included from encrypt.c:234:
encrypt.c: ./u16.h:191:13: warning: unused variable 'gvv' [-Wunused-variable]
encrypt.c:   191 |     __m512i gvv = _mm512_set_epi64(776,768,520,512,264,256,8,0);
encrypt.c:       |             ^~~
encrypt.c: ./u16.h:144:11: warning: unused variable 't_0' [-Wunused-variable]
encrypt.c:   144 |   __m512i t_0;
encrypt.c:       |           ^~~
encrypt.c: ./u16.h:145:11: warning: unused variable 't_1' [-Wunused-variable]
encrypt.c:   145 |   __m512i t_1;
encrypt.c:       |           ^~~
encrypt.c: ./u16.h:146:11: warning: unused variable 't_2' [-Wunused-variable]
encrypt.c:   146 |   __m512i t_2;
encrypt.c: ...

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

Compiler output


encrypt.c: encrypt.c:85: warning: "_bswap64" redefined
encrypt.c:    85 | #define _bswap64(a) __builtin_bswap64(a)
encrypt.c:       |
encrypt.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/13/include/x86gprintrin.h:33,
encrypt.c:                  from /usr/lib/gcc/x86_64-linux-gnu/13/include/immintrin.h:27,
encrypt.c:                  from encrypt.c:54:
encrypt.c: /usr/lib/gcc/x86_64-linux-gnu/13/include/ia32intrin.h:273: note: this is the location of the previous definition
encrypt.c:   273 | #define _bswap64(a)             __bswapq(a)
encrypt.c:       |
encrypt.c: encrypt.c:86: warning: "_bswap" redefined
encrypt.c:    86 | #define _bswap(a) __builtin_bswap(a)
encrypt.c:       |
encrypt.c: /usr/lib/gcc/x86_64-linux-gnu/13/include/ia32intrin.h:307: note: this is the location of the previous definition
encrypt.c:   307 | #define _bswap(a)               __bswapd(a)
encrypt.c:       |
encrypt.c: In file included from encrypt.c:194:
encrypt.c: c128.h: In function 'chacha_noxor128':
encrypt.c: c128.h:71:11: warning: unused variable 't_15' [-Wunused-variable]
encrypt.c:    71 |   __m128i t_15;
encrypt.c:       |           ^~~~
encrypt.c: c128.h:70:11: warning: unused variable 't_14' [-Wunused-variable]
encrypt.c:    70 |   __m128i t_14;
encrypt.c:       |           ^~~~
encrypt.c: c128.h:63:11: warning: unused variable 't_7' [-Wunused-variable]
encrypt.c:    63 |   __m128i t_7;
encrypt.c: ...

Number of similar (implementation,compiler) pairs: 6, namely:
ImplementationCompiler
T:dolbeau/amd64-avx2gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)
T:dolbeau/amd64-avx2gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)
T:dolbeau/amd64-avx2gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)
T:dolbeau/amd64-avx512gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)
T:dolbeau/amd64-avx512gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)
T:dolbeau/amd64-avx512gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.2.0)

Compiler output


encrypt.c: In file included from encrypt.c:190:
encrypt.c: ./c128.h:62:11: warning: unused variable 't_6' [-Wunused-variable]
encrypt.c:    62 |   __m128i t_6;
encrypt.c:       |           ^~~
encrypt.c: ./c128.h:63:11: warning: unused variable 't_7' [-Wunused-variable]
encrypt.c:    63 |   __m128i t_7;
encrypt.c:       |           ^~~
encrypt.c: ./c128.h:70:11: warning: unused variable 't_14' [-Wunused-variable]
encrypt.c:    70 |   __m128i t_14;
encrypt.c:       |           ^~~~
encrypt.c: ./c128.h:71:11: warning: unused variable 't_15' [-Wunused-variable]
encrypt.c:    71 |   __m128i t_15;
encrypt.c:       |           ^~~~
encrypt.c: encrypt.c:502:12: warning: variable 'atot' set but not used [-Wunused-but-set-variable]
encrypt.c:   502 |   unsigned atot, mtot, arnd64, mrnd64;
encrypt.c:       |            ^
encrypt.c: encrypt.c:502:18: warning: variable 'mtot' set but not used [-Wunused-but-set-variable]
encrypt.c:   502 |   unsigned atot, mtot, arnd64, mrnd64;
encrypt.c:       |                  ^
encrypt.c: 6 warnings generated.

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

Compiler output


encrypt.c: In file included from encrypt.c:190:
encrypt.c: c128.h: In function 'chacha_noxor128':
encrypt.c: c128.h:71:11: warning: unused variable 't_15' [-Wunused-variable]
encrypt.c:    71 |   __m128i t_15;
encrypt.c:       |           ^~~~
encrypt.c: c128.h:70:11: warning: unused variable 't_14' [-Wunused-variable]
encrypt.c:    70 |   __m128i t_14;
encrypt.c:       |           ^~~~
encrypt.c: c128.h:63:11: warning: unused variable 't_7' [-Wunused-variable]
encrypt.c:    63 |   __m128i t_7;
encrypt.c:       |           ^~~
encrypt.c: c128.h:62:11: warning: unused variable 't_6' [-Wunused-variable]
encrypt.c:    62 |   __m128i t_6;
encrypt.c:       |           ^~~
encrypt.c: encrypt.c: In function 'hs1_data':
encrypt.c: encrypt.c:502:18: warning: variable 'mtot' set but not used [-Wunused-but-set-variable]
encrypt.c:   502 |   unsigned atot, mtot, arnd64, mrnd64;
encrypt.c:       |                  ^~~~
encrypt.c: encrypt.c:502:12: warning: variable 'atot' set but not used [-Wunused-but-set-variable]
encrypt.c:   502 |   unsigned atot, mtot, arnd64, mrnd64;
encrypt.c:       |            ^~~~

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

Compiler output


hs1.c: In function 'xor16',
hs1.c:     inlined from 'xor_copy_chacha_key' at hs1.c:886:9,
hs1.c:     inlined from 'hs1_gen_siv' at hs1.c:973:5:
hs1.c: hs1.c:58:46: warning: 'chacha_state' is used uninitialized [-Wuninitialized]
hs1.c:    58 | static void xor16 (void *d, const void *s) { *(T *)d ^= *(T *)s; }
hs1.c:       |                                              ^~~~~~~
hs1.c: hs1.c: In function 'hs1_gen_siv':
hs1.c: hs1.c:936:50: note: 'chacha_state' declared here
hs1.c:   936 |     __attribute__ ((aligned(32))) chacha_state_t chacha_state;
hs1.c:       |                                                  ^~~~~~~~~~~~
hs1.c: In function 'xor16',
hs1.c:     inlined from 'xor_copy_chacha_key' at hs1.c:886:9,
hs1.c:     inlined from 'hs1siv_decrypt' at hs1.c:1023:5:
hs1.c: hs1.c:58:46: warning: 'chacha_state' may be used uninitialized [-Wmaybe-uninitialized]
hs1.c:    58 | static void xor16 (void *d, const void *s) { *(T *)d ^= *(T *)s; }
hs1.c:       |                                              ^~~~~~~
hs1.c: hs1.c: In function 'hs1siv_decrypt':
hs1.c: hs1.c:1011:50: note: 'chacha_state' declared here
hs1.c:  1011 |     __attribute__ ((aligned(32))) chacha_state_t chacha_state;
hs1.c:       |                                                  ^~~~~~~~~~~~
hs1.c: In function 'xor16',
hs1.c:     inlined from 'xor_copy_chacha_key' at hs1.c:886:9,
hs1.c:     inlined from 'hs1' at hs1.c:1062:5:
hs1.c: hs1.c:58:46: warning: 'chacha_state' is used uninitialized [-Wuninitialized]
hs1.c:    58 | static void xor16 (void *d, const void *s) { *(T *)d ^= *(T *)s; }
hs1.c: ...

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

Compiler output


encrypt.c: encrypt.c:326:14: warning: unused variable 'k' [-Wunused-variable]
encrypt.c:   326 |     unsigned k = (HS1_SIV_HASH_RNDS > 4 ? 1 : 2);
encrypt.c:       |              ^
encrypt.c: 1 warning generated.

Number of similar (implementation,compiler) pairs: 3, 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))

Compiler output


encrypt.c: encrypt.c: In function 'hs1_hash':
encrypt.c: encrypt.c:326:14: warning: unused variable 'k' [-Wunused-variable]
encrypt.c:   326 |     unsigned k = (HS1_SIV_HASH_RNDS > 4 ? 1 : 2);
encrypt.c:       |              ^

Number of similar (implementation,compiler) pairs: 3, namely:
ImplementationCompiler
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)

Namespace violations


chacha_moon.o _chacha_blocks T
chacha_moon.o chacha_blocks T
hs1.o hash_finalize T
hs1.o hash_step T
hs1.o hs1 T
hs1.o hs1_bzero T
hs1.o hs1_gen_siv T
hs1.o hs1_memcpy T
hs1.o hs1_setup T
hs1.o hs1siv_decrypt T
hs1.o hs1siv_encrypt T
hs1.o poly_finalize T

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

Namespace violations


encrypt.o chacha T
encrypt.o chacha_ivsetup T
encrypt.o chacha_keysetup T
encrypt.o hs1 T
encrypt.o hs1_hash T
encrypt.o hs1siv_chacha256 T
encrypt.o hs1siv_decrypt T
encrypt.o hs1siv_encrypt T
encrypt.o hs1siv_subkeygen T
encrypt.o prf_hash2 T

Number of similar (implementation,compiler) pairs: 3, 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))