Implementation notes: amd64, speed2supercop, crypto_hash/essence256

Computer: speed2supercop
Microarchitecture: amd64; Haswell+AES (306c3)
Architecture: amd64
CPU ID: GenuineIntel-000306c3-1fc9cbf5
SUPERCOP version: 20240625
Operation: crypto_hash
Primitive: essence256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
6497225529 3168 037685 3928 800T:gccgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
7611613724 3168 026326 3968 728T:gccclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
771969210 3168 019381 3928 800T:gccgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
780689316 3168 019270 3968 728T:gccclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
8186413195 3168 027182 3968 744T:gccclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
8371212308 3168 026102 3968 744T:gccclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
956607547 3168 016464 3904 768T:gccgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
1217528384 3168 018300 3920 800T:gccgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
1263249007 3168 019673 3968 792T:gccclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625

Compiler output


essence_L_tables.c: In file included from essence_L_tables.c:12:
essence_L_tables.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
essence_L_tables.c: #ifndef _ESSENCE_API_H_
essence_L_tables.c:         ^~~~~~~~~~~~~~~
essence_L_tables.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
essence_L_tables.c: #define _ESSENCE_H_API_
essence_L_tables.c:         ^~~~~~~~~~~~~~~
essence_L_tables.c:         _ESSENCE_API_H_
essence_L_tables.c: 1 warning generated.
essence_api.c: In file included from essence_api.c:11:
essence_api.c: In file included from ./essence.h:11:
essence_api.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
essence_api.c: #ifndef _ESSENCE_API_H_
essence_api.c:         ^~~~~~~~~~~~~~~
essence_api.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
essence_api.c: #define _ESSENCE_H_API_
essence_api.c:         ^~~~~~~~~~~~~~~
essence_api.c:         _ESSENCE_API_H_
essence_api.c: essence_api.c:68:9: warning: unused variable 'byte_array' [-Wunused-variable]
essence_api.c:   byte *byte_array;
essence_api.c:         ^
essence_api.c: essence_api.c:542:13: warning: unused variable 'root_hash' [-Wunused-variable]
essence_api.c:   uint64_t *root_hash;
essence_api.c:             ^
essence_api.c: essence_api.c:543:12: warning: unused variable 'blocks_per_tree' [-Wunused-variable]
essence_api.c:   int i,j, blocks_per_tree, leaf_num, level, level_mask;
essence_api.c:            ^
essence_api.c: essence_api.c:543:29: warning: unused variable 'leaf_num' [-Wunused-variable]
essence_api.c:   int i,j, blocks_per_tree, leaf_num, level, level_mask;
essence_api.c:                             ^
essence_api.c: essence_api.c:543:39: warning: unused variable 'level' [-Wunused-variable]
essence_api.c:   int i,j, blocks_per_tree, leaf_num, level, level_mask;
essence_api.c:                                       ^
essence_api.c: essence_api.c:543:46: warning: unused variable 'level_mask' [-Wunused-variable]
essence_api.c: ...
essence_compress_256.c: In file included from essence_compress_256.c:11:
essence_compress_256.c: In file included from ./essence.h:11:
essence_compress_256.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
essence_compress_256.c: #ifndef _ESSENCE_API_H_
essence_compress_256.c:         ^~~~~~~~~~~~~~~
essence_compress_256.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
essence_compress_256.c: #define _ESSENCE_H_API_
essence_compress_256.c:         ^~~~~~~~~~~~~~~
essence_compress_256.c:         _ESSENCE_API_H_
essence_compress_256.c: 1 warning generated.
essence_compress_256_dual.c: In file included from essence_compress_256_dual.c:11:
essence_compress_256_dual.c: In file included from ./essence.h:11:
essence_compress_256_dual.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
essence_compress_256_dual.c: #ifndef _ESSENCE_API_H_
essence_compress_256_dual.c:         ^~~~~~~~~~~~~~~
essence_compress_256_dual.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
essence_compress_256_dual.c: #define _ESSENCE_H_API_
essence_compress_256_dual.c:         ^~~~~~~~~~~~~~~
essence_compress_256_dual.c:         _ESSENCE_API_H_
essence_compress_256_dual.c: 1 warning generated.
essence_compress_512.c: In file included from essence_compress_512.c:10:
essence_compress_512.c: In file included from ./essence.h:11:
essence_compress_512.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
essence_compress_512.c: #ifndef _ESSENCE_API_H_
essence_compress_512.c:         ^~~~~~~~~~~~~~~
essence_compress_512.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
essence_compress_512.c: #define _ESSENCE_H_API_
essence_compress_512.c:         ^~~~~~~~~~~~~~~
essence_compress_512.c:         _ESSENCE_API_H_
essence_compress_512.c: 1 warning generated.
hash.c: In file included from hash.c:2:
hash.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
hash.c: #ifndef _ESSENCE_API_H_
hash.c:         ^~~~~~~~~~~~~~~
hash.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
hash.c: #define _ESSENCE_H_API_
hash.c:         ^~~~~~~~~~~~~~~
hash.c:         _ESSENCE_API_H_
hash.c: 1 warning generated.

Number of similar (implementation,compiler) pairs: 5, namely:
ImplementationCompiler
T:gccclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:gccclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:gccclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:gccclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:gccclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))

Compiler output


essence_api.c: essence_api.c: In function 'Init':
essence_api.c: essence_api.c:68:9: warning: unused variable 'byte_array' [-Wunused-variable]
essence_api.c:    68 |   byte *byte_array;
essence_api.c:       |         ^~~~~~~~~~
essence_api.c: essence_api.c: In function 'Merge_Tree_512':
essence_api.c: essence_api.c:543:46: warning: unused variable 'level_mask' [-Wunused-variable]
essence_api.c:   543 |   int i,j, blocks_per_tree, leaf_num, level, level_mask;
essence_api.c:       |                                              ^~~~~~~~~~
essence_api.c: essence_api.c:543:39: warning: unused variable 'level' [-Wunused-variable]
essence_api.c:   543 |   int i,j, blocks_per_tree, leaf_num, level, level_mask;
essence_api.c:       |                                       ^~~~~
essence_api.c: essence_api.c:543:29: warning: unused variable 'leaf_num' [-Wunused-variable]
essence_api.c:   543 |   int i,j, blocks_per_tree, leaf_num, level, level_mask;
essence_api.c:       |                             ^~~~~~~~
essence_api.c: essence_api.c:543:12: warning: unused variable 'blocks_per_tree' [-Wunused-variable]
essence_api.c:   543 |   int i,j, blocks_per_tree, leaf_num, level, level_mask;
essence_api.c:       |            ^~~~~~~~~~~~~~~
essence_api.c: essence_api.c:542:13: warning: unused variable 'root_hash' [-Wunused-variable]
essence_api.c:   542 |   uint64_t *root_hash;
essence_api.c:       |             ^~~~~~~~~
essence_api.c: essence_api.c: In function 'Merge_Tree_256':
essence_api.c: essence_api.c:764:46: warning: unused variable 'level_mask' [-Wunused-variable]
essence_api.c:   764 |   int i,j, blocks_per_tree, leaf_num, level, level_mask;
essence_api.c:       |                                              ^~~~~~~~~~
essence_api.c: essence_api.c:764:39: warning: unused variable 'level' [-Wunused-variable]
essence_api.c: ...
essence_compress_256.c: In file included from essence_compress_256.c:11:
essence_compress_256.c: essence_compress_256.c: In function 'essence_compress_256':
essence_compress_256.c: essence.h:142:7: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
essence_compress_256.c:   142 |    (d)&(((a)&((((((~(b)) ^ (e)) & (~(g))) ^ (b)) ^ (e)) ^               \
essence_compress_256.c:       |    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256.c:   143 |               (((f) ^ (g)) & ((((((b) ^ (f)) ^ (c)) & (f)) ^ (b)) &     \
essence_compress_256.c:       |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256.c:   144 |                               ((((b) ^ (f)) & (~(e))) ^ (b)))))) ^      \
essence_compress_256.c:       |                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256.c:   145 |         ((((e) ^ ((((b) ^ (f)) & (~(e))) ^ (b))) &                      \
essence_compress_256.c:       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256.c:   146 |           (((((~(g)) ^ (b)) ^ (c)) ^ (f)) &                             \
essence_compress_256.c:       |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256.c:   147 |            (((((b) ^ (f)) ^ (c)) &                                      \
essence_compress_256.c:       |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256.c:   148 |              (f)) ^ (((((~(b)) ^ (e)) & (~(g))) ^                       \
essence_compress_256.c:       |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256.c:   149 |                       (b)) ^ (e))))) ^                                  \
essence_compress_256.c:       |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256.c:   150 |          ((((b) ^ ((f) ^ (g))) ^ (c)) ^ (e)))) ^                        \
essence_compress_256.c:       |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256.c: essence_compress_256.c:97:22: note: in expansion of macro 'F_func_Boyar_Peralta'
essence_compress_256.c:    97 |           F.v4ui32 = F_func_Boyar_Peralta(r[6].v4ui32,
essence_compress_256.c:       |                      ^~~~~~~~~~~~~~~~~~~~
essence_compress_256_dual.c: In file included from essence_compress_256_dual.c:11:
essence_compress_256_dual.c: essence_compress_256_dual.c: In function 'essence_compress_256_dual':
essence_compress_256_dual.c: essence.h:142:7: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
essence_compress_256_dual.c:   142 |    (d)&(((a)&((((((~(b)) ^ (e)) & (~(g))) ^ (b)) ^ (e)) ^               \
essence_compress_256_dual.c:       |    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256_dual.c:   143 |               (((f) ^ (g)) & ((((((b) ^ (f)) ^ (c)) & (f)) ^ (b)) &     \
essence_compress_256_dual.c:       |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256_dual.c:   144 |                               ((((b) ^ (f)) & (~(e))) ^ (b)))))) ^      \
essence_compress_256_dual.c:       |                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256_dual.c:   145 |         ((((e) ^ ((((b) ^ (f)) & (~(e))) ^ (b))) &                      \
essence_compress_256_dual.c:       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256_dual.c:   146 |           (((((~(g)) ^ (b)) ^ (c)) ^ (f)) &                             \
essence_compress_256_dual.c:       |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256_dual.c:   147 |            (((((b) ^ (f)) ^ (c)) &                                      \
essence_compress_256_dual.c:       |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256_dual.c:   148 |              (f)) ^ (((((~(b)) ^ (e)) & (~(g))) ^                       \
essence_compress_256_dual.c:       |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256_dual.c:   149 |                       (b)) ^ (e))))) ^                                  \
essence_compress_256_dual.c:       |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256_dual.c:   150 |          ((((b) ^ ((f) ^ (g))) ^ (c)) ^ (e)))) ^                        \
essence_compress_256_dual.c:       |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_256_dual.c: essence_compress_256_dual.c:122:22: note: in expansion of macro 'F_func_Boyar_Peralta'
essence_compress_256_dual.c:   122 |           F.v4ui32 = F_func_Boyar_Peralta(r[6].v4ui32,
essence_compress_256_dual.c:       |                      ^~~~~~~~~~~~~~~~~~~~
essence_compress_512.c: In file included from essence_compress_512.c:10:
essence_compress_512.c: essence_compress_512.c: In function 'essence_compress_512':
essence_compress_512.c: essence.h:142:7: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
essence_compress_512.c:   142 |    (d)&(((a)&((((((~(b)) ^ (e)) & (~(g))) ^ (b)) ^ (e)) ^               \
essence_compress_512.c:       |    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_512.c:   143 |               (((f) ^ (g)) & ((((((b) ^ (f)) ^ (c)) & (f)) ^ (b)) &     \
essence_compress_512.c:       |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_512.c:   144 |                               ((((b) ^ (f)) & (~(e))) ^ (b)))))) ^      \
essence_compress_512.c:       |                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_512.c:   145 |         ((((e) ^ ((((b) ^ (f)) & (~(e))) ^ (b))) &                      \
essence_compress_512.c:       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_512.c:   146 |           (((((~(g)) ^ (b)) ^ (c)) ^ (f)) &                             \
essence_compress_512.c:       |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_512.c:   147 |            (((((b) ^ (f)) ^ (c)) &                                      \
essence_compress_512.c:       |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_512.c:   148 |              (f)) ^ (((((~(b)) ^ (e)) & (~(g))) ^                       \
essence_compress_512.c:       |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_512.c:   149 |                       (b)) ^ (e))))) ^                                  \
essence_compress_512.c:       |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_512.c:   150 |          ((((b) ^ ((f) ^ (g))) ^ (c)) ^ (e)))) ^                        \
essence_compress_512.c:       |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
essence_compress_512.c: essence_compress_512.c:99:22: note: in expansion of macro 'F_func_Boyar_Peralta'
essence_compress_512.c:    99 |           F.v2ui64 = F_func_Boyar_Peralta(r[6].v2ui64,
essence_compress_512.c:       |                      ^~~~~~~~~~~~~~~~~~~~

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