Implementation notes: amd64, hertz, crypto_aead/pi32cipher128v2

Computer: hertz
Microarchitecture: amd64; Zen 4 (a60f12)
Architecture: amd64
CPU ID: AuthenticAMD-00a60f12-178bfbff
SUPERCOP version: 20240716
Operation: crypto_aead
Primitive: pi32cipher128v2
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
4228116101 8 031756 820 1096T:goptvgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
4325221414 8 039076 820 1160T:goptvgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
935608272 8 022375 796 1064T:goptvgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
1244847262 8 028655 836 1096T:ref3clang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
1274547569 8 029071 836 1096T:ref3clang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
1306078896 8 030279 836 1096T:ref2clang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
1373578864 8 030359 836 1096T:ref2clang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
1904447040 8 022660 820 1096T:ref3gcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
1906379993 8 027636 820 1160T:ref3gcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
1927384992 8 018991 796 1064T:ref3gcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
1958184411 8 019712 828 1096T:ref3clang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
5021675538 8 019559 796 1064T:ref2gcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
8775474880 8 020200 828 1096T:ref2clang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
99745620376 8 038052 820 1160T:ref2gcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
10159037109 8 022780 820 1096T:ref2gcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716

Compiler output


pi-cipher.c: pi-cipher.c:286:9: error: use of unknown builtin '__builtin_shuffle' [-Wimplicit-function-declaration]
pi-cipher.c:   286 |         n_t += __builtin_shuffle(y, g_mask);
pi-cipher.c:       |                ^
pi-cipher.c: pi-cipher.c:305:9: error: use of unknown builtin '__builtin_shuffle' [-Wimplicit-function-declaration]
pi-cipher.c:   305 |         m_t += __builtin_shuffle(x, g_mask);
pi-cipher.c:       |                ^
pi-cipher.c: pi-cipher.c:354:9: error: use of unknown builtin '__builtin_shuffle' [-Wimplicit-function-declaration]
pi-cipher.c:   354 |         m_t += __builtin_shuffle(x, g_mask);
pi-cipher.c:       |                ^
pi-cipher.c: 3 errors generated.

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

Compiler output


pi-cipher.c: pi-cipher.c: In function 'pi32_init':
pi-cipher.c: pi-cipher.c:842:5: warning: 'pi' accessing 64 bytes in a region of size 16 [-Wstringop-overflow=]
pi-cipher.c:   842 |     pi(ctx->cis);
pi-cipher.c:       |     ^~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:842:5: note: referencing argument 1 of type 'word_t[4][4]' {aka 'unsigned int[4][4]'}
pi-cipher.c: pi-cipher.c:649:13: note: in a call to function 'pi'
pi-cipher.c:   649 | static void pi(
pi-cipher.c:       |             ^~

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

Compiler output


encrypt.c: encrypt.c:250:12: warning: unused variable 'x0' [-Wunused-variable]
encrypt.c:   250 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |            ^~
encrypt.c: encrypt.c:250:16: warning: unused variable 'x1' [-Wunused-variable]
encrypt.c:   250 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                ^~
encrypt.c: encrypt.c:250:20: warning: unused variable 'x2' [-Wunused-variable]
encrypt.c:   250 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                    ^~
encrypt.c: encrypt.c:250:24: warning: unused variable 'x3' [-Wunused-variable]
encrypt.c:   250 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                        ^~
encrypt.c: encrypt.c:250:28: warning: unused variable 'y0' [-Wunused-variable]
encrypt.c:   250 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                            ^~
encrypt.c: encrypt.c:250:32: warning: unused variable 'y1' [-Wunused-variable]
encrypt.c:   250 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                                ^~
encrypt.c: encrypt.c:250:36: warning: unused variable 'y2' [-Wunused-variable]
encrypt.c:   250 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                                    ^~
encrypt.c: encrypt.c:250:40: warning: unused variable 'y3' [-Wunused-variable]
encrypt.c:   250 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                                        ^~
encrypt.c: encrypt.c:250:44: warning: unused variable 'z0' [-Wunused-variable]
encrypt.c: ...

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

Compiler output


encrypt.c: encrypt.c:31:33: warning: multi-line comment [-Wcomment]
encrypt.c:    31 | #define bSMN CRYPTO_NSECBYTES/W // Offset for storing ciphertext after encrypted SMN\
encrypt.c:       |                                 ^
encrypt.c: encrypt.c: In function 'crypto_aead_pi32cipher128v2_optimized_nonSSE_timingleaks_encrypt':
encrypt.c: encrypt.c:266:42: warning: unused variable 'j1' [-Wunused-variable]
encrypt.c:   266 |  unsigned long long i, j, jj, ii, b, i1, j1, a;
encrypt.c:       |                                          ^~
encrypt.c: encrypt.c:266:31: warning: unused variable 'ii' [-Wunused-variable]
encrypt.c:   266 |  unsigned long long i, j, jj, ii, b, i1, j1, a;
encrypt.c:       |                               ^~
encrypt.c: encrypt.c:262:31: warning: variable 'CommonInternalState8' set but not used [-Wunused-but-set-variable]
encrypt.c:   262 |  u_int8_t   *InternalState8, *CommonInternalState8, *tempTag8;
encrypt.c:       |                               ^~~~~~~~~~~~~~~~~~~~
encrypt.c: encrypt.c:252:50: warning: variable 'k32' set but not used [-Wunused-but-set-variable]
encrypt.c:   252 |  u_int32_t *c32, *m32, *ad32, *nsec32, *npub32, *k32;
encrypt.c:       |                                                  ^~~
encrypt.c: encrypt.c:252:41: warning: variable 'npub32' set but not used [-Wunused-but-set-variable]
encrypt.c:   252 |  u_int32_t *c32, *m32, *ad32, *nsec32, *npub32, *k32;
encrypt.c:       |                                         ^~~~~~
encrypt.c: encrypt.c:250:56: warning: unused variable 'z3' [-Wunused-variable]
encrypt.c:   250 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                                                        ^~
encrypt.c: encrypt.c:250:52: warning: unused variable 'z2' [-Wunused-variable]
encrypt.c:   250 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                                                    ^~
encrypt.c: ...

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

Compiler output


encrypt.c: encrypt.c:134:62: warning: unused variable 't12' [-Wunused-variable]
encrypt.c:   134 |  u_int32_t t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13;
encrypt.c:       |                                                              ^~~
encrypt.c: encrypt.c:134:67: warning: unused variable 't13' [-Wunused-variable]
encrypt.c:   134 |  u_int32_t t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13;
encrypt.c:       |                                                                   ^~~
encrypt.c: encrypt.c:136:12: warning: unused variable 'x0' [-Wunused-variable]
encrypt.c:   136 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |            ^~
encrypt.c: encrypt.c:136:16: warning: unused variable 'x1' [-Wunused-variable]
encrypt.c:   136 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                ^~
encrypt.c: encrypt.c:136:20: warning: unused variable 'x2' [-Wunused-variable]
encrypt.c:   136 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                    ^~
encrypt.c: encrypt.c:136:24: warning: unused variable 'x3' [-Wunused-variable]
encrypt.c:   136 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                        ^~
encrypt.c: encrypt.c:136:28: warning: unused variable 'y0' [-Wunused-variable]
encrypt.c:   136 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                            ^~
encrypt.c: encrypt.c:136:32: warning: unused variable 'y1' [-Wunused-variable]
encrypt.c:   136 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                                ^~
encrypt.c: encrypt.c:136:36: warning: unused variable 'y2' [-Wunused-variable]
encrypt.c: ...

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 'crypto_aead_pi32cipher128v2_ref_timingleaks_encrypt':
encrypt.c: encrypt.c:152:42: warning: unused variable 'j1' [-Wunused-variable]
encrypt.c:   152 |  unsigned long long i, j, jj, ii, b, i1, j1, a;
encrypt.c:       |                                          ^~
encrypt.c: encrypt.c:148:31: warning: variable 'CommonInternalState8' set but not used [-Wunused-but-set-variable]
encrypt.c:   148 |  u_int8_t   *InternalState8, *CommonInternalState8, *tempTag8;
encrypt.c:       |                               ^~~~~~~~~~~~~~~~~~~~
encrypt.c: encrypt.c:138:50: warning: variable 'k32' set but not used [-Wunused-but-set-variable]
encrypt.c:   138 |  u_int32_t *c32, *m32, *ad32, *nsec32, *npub32, *k32;
encrypt.c:       |                                                  ^~~
encrypt.c: encrypt.c:138:41: warning: variable 'npub32' set but not used [-Wunused-but-set-variable]
encrypt.c:   138 |  u_int32_t *c32, *m32, *ad32, *nsec32, *npub32, *k32;
encrypt.c:       |                                         ^~~~~~
encrypt.c: encrypt.c:136:56: warning: unused variable 'z3' [-Wunused-variable]
encrypt.c:   136 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                                                        ^~
encrypt.c: encrypt.c:136:52: warning: unused variable 'z2' [-Wunused-variable]
encrypt.c:   136 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                                                    ^~
encrypt.c: encrypt.c:136:48: warning: unused variable 'z1' [-Wunused-variable]
encrypt.c:   136 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                                                ^~
encrypt.c: encrypt.c:136:44: warning: unused variable 'z0' [-Wunused-variable]
encrypt.c:   136 |  u_int32_t x0, x1, x2, x3, y0, y1, y2, y3, z0, z1, z2, z3;
encrypt.c:       |                                            ^~
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)

Compiler output


pi-cipher.c: pi-cipher.c: In function 'mu':
pi-cipher.c: pi-cipher.c:226:5: warning: 'phi' reading 8 bytes from a region of size 4 [-Wstringop-overread]
pi-cipher.c:   226 |     phi(t, x, mu_const, mu_v_const, mu_rot_const);
pi-cipher.c:       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:226:5: note: referencing argument 4 of type 'const uint8_t[8]' {aka 'const unsigned char[8]'}
pi-cipher.c: pi-cipher.c:226:5: note: referencing argument 5 of type 'const uint8_t[4]' {aka 'const unsigned char[4]'}
pi-cipher.c: pi-cipher.c:175:13: note: in a call to function 'phi'
pi-cipher.c:   175 | static void phi(
pi-cipher.c:       |             ^~~
pi-cipher.c: pi-cipher.c: In function 'ny':
pi-cipher.c: pi-cipher.c:237:5: warning: 'phi' reading 8 bytes from a region of size 4 [-Wstringop-overread]
pi-cipher.c:   237 |     phi(dest, x, ny_const, ny_v_const, ny_rot_const);
pi-cipher.c:       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:237:5: note: referencing argument 4 of type 'const uint8_t[8]' {aka 'const unsigned char[8]'}
pi-cipher.c: pi-cipher.c:237:5: note: referencing argument 5 of type 'const uint8_t[4]' {aka 'const unsigned char[4]'}
pi-cipher.c: pi-cipher.c:175:13: note: in a call to function 'phi'
pi-cipher.c:   175 | static void phi(
pi-cipher.c:       |             ^~~

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

Namespace violations


pi-cipher.o PI_DECRYPT_BLOCK_Q T
pi-cipher.o pi32_decrypt_block T
pi-cipher.o pi32_decrypt_last_block T
pi-cipher.o pi32_decrypt_simple T
pi-cipher.o pi32_decrypt_smn T
pi-cipher.o pi32_encrypt_block T
pi-cipher.o pi32_encrypt_block_q T
pi-cipher.o pi32_encrypt_last_block T
pi-cipher.o pi32_encrypt_simple T
pi-cipher.o pi32_encrypt_smn T
pi-cipher.o pi32_extract_tag T
pi-cipher.o pi32_init T
pi-cipher.o pi32_process_ad_block T
pi-cipher.o pi32_process_ad_block_q T
pi-cipher.o pi32_process_ad_last_block T
pi-cipher.o pi_cipher_name D

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

Namespace violations


pi-cipher.o pi32_decrypt_block T
pi-cipher.o pi32_decrypt_last_block T
pi-cipher.o pi32_decrypt_simple T
pi-cipher.o pi32_decrypt_smn T
pi-cipher.o pi32_encrypt_block T
pi-cipher.o pi32_encrypt_last_block T
pi-cipher.o pi32_encrypt_simple T
pi-cipher.o pi32_extract_tag T
pi-cipher.o pi32_init T
pi-cipher.o pi32_process_ad_block T
pi-cipher.o pi32_process_ad_last_block T
pi-cipher.o pi32_process_smn T
pi-cipher.o pi_cipher_name D

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

Namespace violations


pi-cipher.o pi32_decrypt_block T
pi-cipher.o pi32_decrypt_last_block T
pi-cipher.o pi32_decrypt_simple T
pi-cipher.o pi32_decrypt_smn T
pi-cipher.o pi32_encrypt_block T
pi-cipher.o pi32_encrypt_last_block T
pi-cipher.o pi32_encrypt_simple T
pi-cipher.o pi32_encrypt_smn T
pi-cipher.o pi32_extract_tag T
pi-cipher.o pi32_init T
pi-cipher.o pi32_process_ad_block T
pi-cipher.o pi32_process_ad_last_block T
pi-cipher.o pi_cipher_name D

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