Implementation notes: amd64, comet, crypto_hash/sha512

Computer: comet
Microarchitecture: amd64; CometLake (806ec)
Architecture: amd64
CPU ID: GenuineIntel-000806ec-bfebfbff
SUPERCOP version: 20230530
Operation: crypto_hash
Primitive: sha512
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
889770 0 013533 820 896opensslclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022100620221005
890870 0 09857 812 928opensslgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022100620221005
8912654 0 019519 828 920blocksplusavxgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
8912607 0 016448 804 888refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
8913492 0 020034 812 920blocksplusavxclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
8913492 0 020034 812 920blocksplusavxclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
891370 0 014317 820 928opensslclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022100620221005
8915473 0 015626 804 920blocksplusavxgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
891870 0 010499 812 896opensslclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022100620221005
892079 0 010837 828 928opensslgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022100620221005
892276 0 013622 836 928opensslgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022100620221005
8925499 0 016582 820 920blocksplusavxgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
892670 0 014173 820 928opensslclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022100620221005
892670 0 014173 820 928opensslclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2022100620221005
8930670 0 020138 812 920refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
8931492 0 020066 812 920blocksplusavxclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
8931478 0 016344 804 888blocksplusavxclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
8938944 0 019799 828 920refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
894776 0 011053 828 928opensslgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2022100620221005
8962518 0 016902 820 920blocksplusavxgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
8975815 0 019682 812 888refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
9056670 0 020314 812 920refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
9071670 0 020138 812 920refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
9310709 0 017062 820 920refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
9313619 0 015770 804 920refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
9383642 0 016734 820 920refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
126257357 0 020847 828 920sphlibgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
128147357 0 020847 828 920sphlib-smallgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
131454758 704 01542804 144316 10424cryptoppg++_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032420210323
131494962 992 01252187 144348 10360cryptoppclang++_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021032420210323
131614962 992 01252187 144348 10360cryptoppclang++_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021032420210323
131834755 768 01248560 144340 10328cryptoppclang++_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021032420210323
131905015 0 015750 820 920sphlibgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
131985015 0 015750 820 920sphlib-smallgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
132154868 704 01540522 144316 10424cryptoppg++_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032420210323
132354915 992 01252263 144348 10360cryptoppclang++_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021032420210323
132394335 704 01539701 144324 10424cryptoppg++_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032420210323
132563749 768 01538354 144332 10392cryptoppg++_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032420210323
134504498 0 014266 804 920sphlib-smallgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
134614498 0 014266 804 920sphlibgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
140275838 0 019866 812 920sphlibclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
140275838 0 019898 812 920sphlib-smallclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
140755838 0 019898 812 920sphlib-smallclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
140795838 0 019866 812 920sphlibclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
141395838 0 020010 812 920sphlibclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
141914858 0 015224 804 888sphlibclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
143045838 0 020026 812 920sphlib-smallclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
144295736 0 016694 820 920sphlib-smallgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
144305736 0 016694 820 920sphlibgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
144764858 0 015256 804 888sphlib-smallclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
159526235 0 019626 812 888sphlibclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
159586235 0 019642 812 888sphlib-smallclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114

Compiler output

Implementation: blocksplusavx
Security model: constbranchindex
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
hash.c: hash.c:33:8: error: always_inline function '_mm256_loadu_si256' requires target feature 'avx', but would be inlined into function 'crypto_hash_sha512_blocksplusavx_constbranchindex' that is compiled without support for 'avx'
hash.c: X0 = load256(iv);
hash.c: ^
hash.c: hash.c:22:21: note: expanded from macro 'load256'
hash.c: #define load256(x) (_mm256_loadu_si256((void *) (x)))
hash.c: ^
hash.c: hash.c:34:8: error: always_inline function '_mm256_loadu_si256' requires target feature 'avx', but would be inlined into function 'crypto_hash_sha512_blocksplusavx_constbranchindex' that is compiled without support for 'avx'
hash.c: X1 = load256(iv + 32);
hash.c: ^
hash.c: hash.c:22:21: note: expanded from macro 'load256'
hash.c: #define load256(x) (_mm256_loadu_si256((void *) (x)))
hash.c: ^
hash.c: hash.c:36:3: error: always_inline function '_mm256_storeu_si256' requires target feature 'avx', but would be inlined into function 'crypto_hash_sha512_blocksplusavx_constbranchindex' that is compiled without support for 'avx'
hash.c: store256(h,X0);
hash.c: ^
hash.c: hash.c:23:24: note: expanded from macro 'store256'
hash.c: #define store256(x,y) (_mm256_storeu_si256((void *) (x),y))
hash.c: ^
hash.c: hash.c:37:3: error: always_inline function '_mm256_storeu_si256' requires target feature 'avx', but would be inlined into function 'crypto_hash_sha512_blocksplusavx_constbranchindex' that is compiled without support for 'avx'
hash.c: store256(h + 32,X1);
hash.c: ^
hash.c: hash.c:23:24: note: expanded from macro 'store256'
hash.c: #define store256(x,y) (_mm256_storeu_si256((void *) (x),y))
hash.c: ^
hash.c: hash.c:47:5: error: always_inline function '_mm256_storeu_si256' requires target feature 'avx', but would be inlined into function 'crypto_hash_sha512_blocksplusavx_constbranchindex' that is compiled without support for 'avx'
hash.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE blocksplusavx

Compiler output

Implementation: rust_crypto
Security model: constbranchindex
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: error[E0277]: the trait bound `&mut [u8; 64]: std::convert::TryFrom<&mut [u8]>` is not satisfied
try.c: --> src/bin/measure.rs:17:29
try.c: |
try.c: 17 | let out:&mut[u8;64] = out.try_into().unwrap();
try.c: | ^^^^^^^^ the trait `std::convert::TryFrom<&mut [u8]>` is not implemented for `&mut [u8; 64]`
try.c: |
try.c: = help: the following implementations were found:
try.c: <&'a [T; _] as std::convert::TryFrom<&'a [T]>>
try.c: <&'a mut [T; _] as std::convert::TryFrom<&'a mut [T]>>
try.c: <[T; _] as std::convert::TryFrom<&[T]>>
try.c: = note: required because of the requirements on the impl of `std::convert::TryInto<&mut [u8; 64]>` for `&mut [u8]`
try.c:
try.c: error: aborting due to previous error
try.c:
try.c: For more information about this error, try `rustc --explain E0277`.
try.c: error: could not compile `crypto_hash_sha512`.
try.c:
try.c: To learn more, run the command again with --verbose.

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

Compiler output

Implementation: rust_crypto
Security model: constbranchindex
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: error[E0277]: the trait bound `&mut [u8; 64]: std::convert::TryFrom<&mut [u8]>` is not satisfied
try.c: --> src/bin/try-small.rs:17:29
try.c: |
try.c: 17 | let out:&mut[u8;64] = out.try_into().unwrap();
try.c: | ^^^^^^^^ the trait `std::convert::TryFrom<&mut [u8]>` is not implemented for `&mut [u8; 64]`
try.c: |
try.c: = help: the following implementations were found:
try.c: <&'a [T; _] as std::convert::TryFrom<&'a [T]>>
try.c: <&'a mut [T; _] as std::convert::TryFrom<&'a mut [T]>>
try.c: <[T; _] as std::convert::TryFrom<&[T]>>
try.c: = note: required because of the requirements on the impl of `std::convert::TryInto<&mut [u8; 64]>` for `&mut [u8]`
try.c:
try.c: error: aborting due to previous error
try.c:
try.c: For more information about this error, try `rustc --explain E0277`.
try.c: error: could not compile `crypto_hash_sha512`.
try.c:
try.c: To learn more, run the command again with --verbose.

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE rust_crypto
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE rust_crypto
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE rust_crypto
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE rust_crypto
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE rust_crypto
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE rust_sha2
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE rust_sha2
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE rust_sha2

Compiler output

Implementation: rust_crypto
Security model: constbranchindex
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: error[E0277]: the trait bound `&mut [u8; 64]: std::convert::TryFrom<&mut [u8]>` is not satisfied
try.c: --> src/bin/try.rs:17:29
try.c: |
try.c: 17 | let out:&mut[u8;64] = out.try_into().unwrap();
try.c: | ^^^^^^^^ the trait `std::convert::TryFrom<&mut [u8]>` is not implemented for `&mut [u8; 64]`
try.c: |
try.c: = help: the following implementations were found:
try.c: <&'a [T; _] as std::convert::TryFrom<&'a [T]>>
try.c: <&'a mut [T; _] as std::convert::TryFrom<&'a mut [T]>>
try.c: <[T; _] as std::convert::TryFrom<&[T]>>
try.c: = note: required because of the requirements on the impl of `std::convert::TryInto<&mut [u8; 64]>` for `&mut [u8]`
try.c:
try.c: error: aborting due to previous error
try.c:
try.c: For more information about this error, try `rustc --explain E0277`.
try.c: error: could not compile `crypto_hash_sha512`.
try.c:
try.c: To learn more, run the command again with --verbose.

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