Implementation notes: amd64, hertz, crypto_hash/blake2b

Computer: hertz
Microarchitecture: amd64; Zen 4 (a60f12)
Architecture: amd64
CPU ID: AuthenticAMD-00a60f12-178bfbff
SUPERCOP version: 20240425
Operation: crypto_hash
Primitive: blake2b
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
537816044 0 027773 804 968T:regsgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121920231217
539016044 0 029805 804 1032T:regsgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121920231217
55811475 0 013024 820 968T:moon/avx2/64clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
559415053 0 032695 828 968T:regsclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
561915053 0 032807 828 968T:regsclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
562114185 0 024384 780 936T:regsgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121920231217
565214888 0 026392 820 968T:regsclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
56931469 0 019215 828 968T:moon/avx2/64clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
56941544 0 014917 804 1032T:moon/avx2/64gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
56951544 0 012829 804 968T:moon/avx2/64gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
56971469 0 019343 828 968T:moon/avx2/64clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
57791542 0 011416 780 936T:moon/avx2/64gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
598911616 0 024989 820 1032T:avxiccgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121920231217
599311360 0 022920 852 968T:avxiccclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
599511360 0 029159 860 968T:avxiccclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
600411616 0 021496 796 936T:avxiccgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121920231217
60743833 0 021511 828 968T:moon/avx/64clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
609211360 0 029047 860 968T:avxiccclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
610011616 0 022957 820 968T:avxiccgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121920231217
62443968 0 015245 804 968T:moon/avx/64gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
62473968 0 017333 804 1032T:moon/avx/64gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
62543833 0 021639 828 968T:moon/avx/64clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
62703839 0 015352 820 968T:moon/avx/64clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
63153966 0 013808 780 936T:moon/avx/64gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425

Test failure

Implementation: T:moon/xop/64
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
error 111

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:moon/xop/64
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:moon/xop/64
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:moon/xop/64
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:moon/xop/64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:moon/xop/64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:moon/xop/64

Compiler output

Implementation: T:avx2-1
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
blake2b.c: In file included from blake2b.c:14:
blake2b.c: ./blake2.h:89:23: error: size of array element of type 'blake2s_state' (aka 'struct __blake2s_state') (185 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 89 | blake2s_state S[8][1];
blake2b.c: | ^
blake2b.c: ./blake2.h:90:20: error: size of array element of type 'blake2s_state' (aka 'struct __blake2s_state') (185 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 90 | blake2s_state R[1];
blake2b.c: | ^
blake2b.c: ./blake2.h:97:23: error: size of array element of type 'blake2b_state' (aka 'struct __blake2b_state') (361 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 97 | blake2b_state S[4][1];
blake2b.c: | ^
blake2b.c: ./blake2.h:98:20: error: size of array element of type 'blake2b_state' (aka 'struct __blake2b_state') (361 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 98 | blake2b_state R[1];
blake2b.c: | ^
blake2b.c: 4 errors generated.

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx2-1
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx2-1
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx2-1

Compiler output

Implementation: T:avx2-1
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
blake2b.c: In file included from blake2b.c:14:
blake2b.c: blake2.h:89:5: error: size of array element is not a multiple of its alignment
blake2b.c: 89 | blake2s_state S[8][1];
blake2b.c: | ^~~~~~~~~~~~~
blake2b.c: blake2.h:90:5: error: size of array element is not a multiple of its alignment
blake2b.c: 90 | blake2s_state R[1];
blake2b.c: | ^~~~~~~~~~~~~
blake2b.c: blake2.h:97:5: error: size of array element is not a multiple of its alignment
blake2b.c: 97 | blake2b_state S[4][1];
blake2b.c: | ^~~~~~~~~~~~~
blake2b.c: blake2.h:98:5: error: size of array element is not a multiple of its alignment
blake2b.c: 98 | blake2b_state R[1];
blake2b.c: | ^~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avx2-1
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avx2-1
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avx2-1

Compiler output

Implementation: T:avx2-2
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
blake2b.c: In file included from blake2b.c:15:
blake2b.c: ./blake2.h:89:23: error: size of array element of type 'blake2s_state' (aka 'struct __blake2s_state') (185 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 89 | blake2s_state S[8][1];
blake2b.c: | ^
blake2b.c: ./blake2.h:90:20: error: size of array element of type 'blake2s_state' (aka 'struct __blake2s_state') (185 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 90 | blake2s_state R[1];
blake2b.c: | ^
blake2b.c: ./blake2.h:97:23: error: size of array element of type 'blake2b_state' (aka 'struct __blake2b_state') (361 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 97 | blake2b_state S[4][1];
blake2b.c: | ^
blake2b.c: ./blake2.h:98:20: error: size of array element of type 'blake2b_state' (aka 'struct __blake2b_state') (361 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 98 | blake2b_state R[1];
blake2b.c: | ^
blake2b.c: 4 errors generated.

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx2-2
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx2-2
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx2-2
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx2-3
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx2-3
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx2-3

Compiler output

Implementation: T:avx2-2
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
blake2b.c: In file included from blake2b.c:15:
blake2b.c: blake2.h:89:5: error: size of array element is not a multiple of its alignment
blake2b.c: 89 | blake2s_state S[8][1];
blake2b.c: | ^~~~~~~~~~~~~
blake2b.c: blake2.h:90:5: error: size of array element is not a multiple of its alignment
blake2b.c: 90 | blake2s_state R[1];
blake2b.c: | ^~~~~~~~~~~~~
blake2b.c: blake2.h:97:5: error: size of array element is not a multiple of its alignment
blake2b.c: 97 | blake2b_state S[4][1];
blake2b.c: | ^~~~~~~~~~~~~
blake2b.c: blake2.h:98:5: error: size of array element is not a multiple of its alignment
blake2b.c: 98 | blake2b_state R[1];
blake2b.c: | ^~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avx2-2
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avx2-2
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avx2-2
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avx2-3
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avx2-3
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avx2-3

Compiler output

Implementation: T:avxicc
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: /usr/bin/ld: libcrypto_hash_blake2b.a(blake2b.o): warning: relocation in read-only section `.eh_frame'
try.c: /usr/bin/ld: warning: creating DT_TEXTREL in a PIE
try.c: /usr/bin/ld: libcrypto_hash_blake2b.a(blake2b.o): warning: relocation in read-only section `.eh_frame'
try.c: /usr/bin/ld: warning: creating DT_TEXTREL in a PIE
measure.c: /usr/bin/ld: libcrypto_hash_blake2b.a(blake2b.o): warning: relocation in read-only section `.eh_frame'
measure.c: /usr/bin/ld: warning: creating DT_TEXTREL in a PIE

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avxicc
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avxicc
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avxicc
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avxicc
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avxicc
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:avxicc

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
blake2b-ref.c: In file included from blake2b-ref.c:19:
blake2b-ref.c: ./blake2.h:101:23: error: size of array element of type 'blake2s_state' (aka 'struct __blake2s_state') (185 bytes) isn't a multiple of its alignment (64 bytes)
blake2b-ref.c: 101 | blake2s_state S[8][1];
blake2b-ref.c: | ^
blake2b-ref.c: ./blake2.h:102:20: error: size of array element of type 'blake2s_state' (aka 'struct __blake2s_state') (185 bytes) isn't a multiple of its alignment (64 bytes)
blake2b-ref.c: 102 | blake2s_state R[1];
blake2b-ref.c: | ^
blake2b-ref.c: ./blake2.h:109:23: error: size of array element of type 'blake2b_state' (aka 'struct __blake2b_state') (361 bytes) isn't a multiple of its alignment (64 bytes)
blake2b-ref.c: 109 | blake2b_state S[4][1];
blake2b-ref.c: | ^
blake2b-ref.c: ./blake2.h:110:20: error: size of array element of type 'blake2b_state' (aka 'struct __blake2b_state') (361 bytes) isn't a multiple of its alignment (64 bytes)
blake2b-ref.c: 110 | blake2b_state R[1];
blake2b-ref.c: | ^
blake2b-ref.c: blake2b-ref.c:342:18: error: size of array element of type 'blake2b_state' (aka 'struct __blake2b_state') (361 bytes) isn't a multiple of its alignment (64 bytes)
blake2b-ref.c: 342 | blake2b_state S[1];
blake2b-ref.c: | ^
blake2b-ref.c: 5 errors generated.

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ref
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ref
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ref

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
blake2b-ref.c: In file included from blake2b-ref.c:19:
blake2b-ref.c: blake2.h:101:5: error: size of array element is not a multiple of its alignment
blake2b-ref.c: 101 | blake2s_state S[8][1];
blake2b-ref.c: | ^~~~~~~~~~~~~
blake2b-ref.c: blake2.h:102:5: error: size of array element is not a multiple of its alignment
blake2b-ref.c: 102 | blake2s_state R[1];
blake2b-ref.c: | ^~~~~~~~~~~~~
blake2b-ref.c: blake2.h:109:5: error: size of array element is not a multiple of its alignment
blake2b-ref.c: 109 | blake2b_state S[4][1];
blake2b-ref.c: | ^~~~~~~~~~~~~
blake2b-ref.c: blake2.h:110:5: error: size of array element is not a multiple of its alignment
blake2b-ref.c: 110 | blake2b_state R[1];
blake2b-ref.c: | ^~~~~~~~~~~~~
blake2b-ref.c: blake2b-ref.c: In function 'blake2b':
blake2b-ref.c: blake2b-ref.c:342:3: error: size of array element is not a multiple of its alignment
blake2b-ref.c: 342 | blake2b_state S[1];
blake2b-ref.c: | ^~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref

Compiler output

Implementation: T:xmm
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
blake2b.c: In file included from blake2b.c:5:
blake2b.c: ./blake2.h:89:23: error: size of array element of type 'blake2s_state' (aka 'struct __blake2s_state') (185 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 89 | blake2s_state S[8][1];
blake2b.c: | ^
blake2b.c: ./blake2.h:90:20: error: size of array element of type 'blake2s_state' (aka 'struct __blake2s_state') (185 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 90 | blake2s_state R[1];
blake2b.c: | ^
blake2b.c: ./blake2.h:97:23: error: size of array element of type 'blake2b_state' (aka 'struct __blake2b_state') (361 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 97 | blake2b_state S[4][1];
blake2b.c: | ^
blake2b.c: ./blake2.h:98:20: error: size of array element of type 'blake2b_state' (aka 'struct __blake2b_state') (361 bytes) isn't a multiple of its alignment (64 bytes)
blake2b.c: 98 | blake2b_state R[1];
blake2b.c: | ^
blake2b.c: 4 errors generated.

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:xmm
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:xmm
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:xmm
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ymm
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ymm
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ymm

Compiler output

Implementation: T:xmm
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
blake2b.c: In file included from blake2b.c:5:
blake2b.c: blake2.h:89:5: error: size of array element is not a multiple of its alignment
blake2b.c: 89 | blake2s_state S[8][1];
blake2b.c: | ^~~~~~~~~~~~~
blake2b.c: blake2.h:90:5: error: size of array element is not a multiple of its alignment
blake2b.c: 90 | blake2s_state R[1];
blake2b.c: | ^~~~~~~~~~~~~
blake2b.c: blake2.h:97:5: error: size of array element is not a multiple of its alignment
blake2b.c: 97 | blake2b_state S[4][1];
blake2b.c: | ^~~~~~~~~~~~~
blake2b.c: blake2.h:98:5: error: size of array element is not a multiple of its alignment
blake2b.c: 98 | blake2b_state R[1];
blake2b.c: | ^~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:xmm
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:xmm
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:xmm
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ymm
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ymm
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ymm