Implementation notes: amd64, hertz, crypto_aead/aes128marble4rv1

Computer: hertz
Microarchitecture: amd64; Zen 4 (a60f12)
Architecture: amd64
CPU ID: AuthenticAMD-00a60f12-178bfbff
SUPERCOP version: 20240716
Operation: crypto_aead
Primitive: aes128marble4rv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
21558829572 0 045075 828 1096T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716
24512825629 0 039422 804 1064T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024071620240716

Compiler output


aes_core.c: aes_core.c:892:12: warning: unused variable 'status' [-Wunused-variable]
aes_core.c:   892 |         int i, j, status;
aes_core.c:       |                   ^~~~~~
aes_core.c: 1 warning generated.
encrypt.c: encrypt.c:34:2: error: call to undeclared library function 'free' with type 'void (void *)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
encrypt.c:    34 |         free(cxt);
encrypt.c:       |         ^
encrypt.c: encrypt.c:34:2: note: include the header <stdlib.h> or explicitly provide a declaration for 'free'
encrypt.c: encrypt.c:19:16: warning: unused variable 'tag' [-Wunused-variable]
encrypt.c:    19 |         unsigned char tag[CRYPTO_ABYTES];
encrypt.c:       |                       ^~~
encrypt.c: 1 warning and 1 error 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


aes_core.c: aes_core.c: In function 'AES_set_4round_decrypt_key':
aes_core.c: aes_core.c:892:19: warning: unused variable 'status' [-Wunused-variable]
aes_core.c:   892 |         int i, j, status;
aes_core.c:       |                   ^~~~~~
encrypt.c: encrypt.c: In function 'crypto_aead_aes128marble4rv1_ref_timingleaks_encrypt':
encrypt.c: encrypt.c:34:9: warning: implicit declaration of function 'free' [-Wimplicit-function-declaration]
encrypt.c:    34 |         free(cxt);
encrypt.c:       |         ^~~~
encrypt.c: encrypt.c:5:1: note: include '<stdlib.h>' or provide a declaration of 'free'
encrypt.c:     4 | #include "marble.h"
encrypt.c:   +++ |+#include <stdlib.h>
encrypt.c:     5 |
encrypt.c: encrypt.c:34:9: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch]
encrypt.c:    34 |         free(cxt);
encrypt.c:       |         ^~~~
encrypt.c: encrypt.c:34:9: note: include '<stdlib.h>' or provide a declaration of 'free'
encrypt.c: encrypt.c:19:23: warning: unused variable 'tag' [-Wunused-variable]
encrypt.c:    19 |         unsigned char tag[CRYPTO_ABYTES];
encrypt.c:       |                       ^~~
encrypt.c: encrypt.c: In function 'crypto_aead_aes128marble4rv1_ref_timingleaks_decrypt':
encrypt.c: encrypt.c:67:9: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch]
encrypt.c:    67 |         free(cxt);
encrypt.c:       |         ^~~~
encrypt.c: encrypt.c:67:9: note: include '<stdlib.h>' or provide a declaration of 'free'
marble.c: marble.c: In function 'ae_encrypt':
marble.c: marble.c:223:14: warning: unused variable 'temp' [-Wunused-variable]
marble.c:   223 |         byte temp[SLEN];
marble.c:       |              ^~~~
marble.c: marble.c: In function 'ae_decrypt':
marble.c: marble.c:281:14: warning: unused variable 'temp' [-Wunused-variable]
marble.c:   281 |         byte temp[SLEN];
marble.c:       |              ^~~~

Number of similar (implementation,compiler) pairs: 2, namely:
ImplementationCompiler
T:refgcc -march=native -mtune=native -O2 -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


aes_core.c: aes_core.c: In function 'AES_set_4round_decrypt_key':
aes_core.c: aes_core.c:892:19: warning: unused variable 'status' [-Wunused-variable]
aes_core.c:   892 |         int i, j, status;
aes_core.c:       |                   ^~~~~~
encrypt.c: encrypt.c: In function 'crypto_aead_aes128marble4rv1_ref_timingleaks_encrypt':
encrypt.c: encrypt.c:34:9: warning: implicit declaration of function 'free' [-Wimplicit-function-declaration]
encrypt.c:    34 |         free(cxt);
encrypt.c:       |         ^~~~
encrypt.c: encrypt.c:5:1: note: include '<stdlib.h>' or provide a declaration of 'free'
encrypt.c:     4 | #include "marble.h"
encrypt.c:   +++ |+#include <stdlib.h>
encrypt.c:     5 |
encrypt.c: encrypt.c:34:9: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch]
encrypt.c:    34 |         free(cxt);
encrypt.c:       |         ^~~~
encrypt.c: encrypt.c:34:9: note: include '<stdlib.h>' or provide a declaration of 'free'
encrypt.c: encrypt.c:19:23: warning: unused variable 'tag' [-Wunused-variable]
encrypt.c:    19 |         unsigned char tag[CRYPTO_ABYTES];
encrypt.c:       |                       ^~~
encrypt.c: encrypt.c: In function 'crypto_aead_aes128marble4rv1_ref_timingleaks_decrypt':
encrypt.c: encrypt.c:67:9: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch]
encrypt.c:    67 |         free(cxt);
encrypt.c:       |         ^~~~
encrypt.c: encrypt.c:67:9: note: include '<stdlib.h>' or provide a declaration of 'free'
marble.c: marble.c: In function 'ae_encrypt':
marble.c: marble.c:223:14: warning: unused variable 'temp' [-Wunused-variable]
marble.c:   223 |         byte temp[SLEN];
marble.c:       |              ^~~~
marble.c: marble.c: In function 'ae_decrypt':
marble.c: marble.c:281:14: warning: unused variable 'temp' [-Wunused-variable]
marble.c:   281 |         byte temp[SLEN];
marble.c:       |              ^~~~
marble.c: In function 'rotate1',
marble.c:     inlined from 'mix' at marble.c:150:2:
marble.c: marble.c:142:22: warning: writing 32 bytes into a region of size 16 [-Wstringop-overflow=]
marble.c:   142 |                 x[i] = (x[i] << 1) ^ (x[i+1] >> 7);
marble.c:       |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
marble.c: marble.c: In function 'mix':
marble.c: marble.c:148:14: note: destination object 'temp' of size 16
marble.c:   148 |         byte temp[SLEN];
marble.c:       |              ^~~~
marble.c: In function 'rotate1',
marble.c:     inlined from 'mix' at marble.c:150:2:
marble.c: marble.c:142:22: warning: writing 32 bytes into a region of size 0 [-Wstringop-overflow=]
marble.c:   142 |                 x[i] = (x[i] << 1) ^ (x[i+1] >> 7);
marble.c:       |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
marble.c: marble.c: In function 'mix':
marble.c: marble.c:148:14: note: at offset [32, 48] into destination object 'temp' of size 16
marble.c:   148 |         byte temp[SLEN];
marble.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


aes_core.o AES_decrypt T
aes_core.o AES_decrypt_4round T
aes_core.o AES_encrypt T
aes_core.o AES_encrypt_4round T
aes_core.o AES_set_4round_decrypt_key T
aes_core.o AES_set_decrypt_key T
aes_core.o AES_set_encrypt_key T
aes_core.o print_state T
marble.o Dec T
marble.o Division2 T
marble.o Enc T
marble.o Time2 T
marble.o Time3 T
marble.o Time7 T
marble.o Trans T
marble.o XLS T
marble.o ae_decrypt T
marble.o ae_encrypt T
marble.o ae_init T
marble.o invTrans T
marble.o invXLS T
marble.o mix T
marble.o process_ad T
marble.o rotate1 T
utils.o ae_allocate T
utils.o pstate T
utils.o pstate2 T
utils.o xor_bytes T
utils.o xor_bytes2 T

Number of similar (implementation,compiler) pairs: 2, namely:
ImplementationCompiler
T:refgcc -march=native -mtune=native -O2 -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)