Implementation notes: amd64, cherry, crypto_hash/sha512

Computer: cherry
Microarchitecture: amd64; Silvermont (406c4)
Architecture: amd64
CPU ID: GenuineIntel-000406c4-bfebfbff
SUPERCOP version: 20240425
Operation: crypto_hash
Primitive: sha512
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
2918770 0 013371 820 888opensslclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
2919170 0 012963 820 888opensslclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
2919270 0 011723 820 888opensslclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
2919270 0 09747 780 920opensslgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
2919478 0 012512 804 920opensslgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
2919670 0 010209 812 888opensslclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
2920178 0 011312 804 920opensslgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
2920181 0 010759 796 920opensslgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
2922170 0 010705 812 888opensslclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
36386793 0 028616 812 888refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
36393967 0 029544 780 952refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
36400678 0 026990 804 888refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
36403703 0 027502 804 888refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
36404799 0 029856 812 888refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
36409793 0 030264 812 888refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
36559960 0 028376 780 952refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
36568622 0 026435 756 920refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
368918134 0 020504 780 952sphlib-smallgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
368978134 0 020504 780 952sphlibgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
37043629 0 027487 772 952refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
373154839 928 01664220 144668 10360cryptoppg++_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
373234766 768 01370999 144436 10264cryptoppclang++_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
373744729 704 01664494 144436 10360cryptoppg++_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
373754633 928 01663434 144668 10360cryptoppg++_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
373795257 0 015911 772 952sphlibgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
373835257 0 015911 772 952sphlib-smallgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
374154985 992 01372338 144444 10264cryptoppclang++_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
374443781 992 01661624 144668 10328cryptoppg++_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
374954935 992 01373906 144444 10264cryptoppclang++_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
374956313 0 017912 812 888sphlib-smallclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
374966313 0 019560 812 888sphlib-smallclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
375056313 0 019560 812 888sphlibclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
375246313 0 017912 812 888sphlibclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
378348597 1576 01378444 145028 10264cryptoppclang++_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
379974596 0 014235 756 920sphlibgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
379984596 0 014235 756 920sphlib-smallgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
380255289 0 015390 804 888sphlib-smallclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
380325289 0 015390 804 888sphlibclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
382386033 0 017232 780 952sphlib-smallgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
382686033 0 017232 780 952sphlibgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
386356208 0 019040 812 888sphlibclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
386616208 0 019040 812 888sphlib-smallclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
419935493 0 016134 804 888sphlibclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
421085493 0 016134 804 888sphlib-smallclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
435092356 0 015560 812 888compactclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
445772167 0 013720 812 888compactclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
447182342 0 015128 812 888compactclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
503585823 0 018128 780 952compactgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
506701821 0 012374 804 888compactclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425
522362082 0 013232 780 952compactgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
528491641 0 011219 756 920compactgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
540251760 0 012335 772 952compactgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042720240425
548401783 0 011822 804 888compactclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042720240425

Compiler output

Implementation: blocksplusavx
Security model: constbranchindex
Compiler: clang -march=native -O2 -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:33:8: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
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:34:8: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
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: ...

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

Compiler output

Implementation: blocksplusavx
Security model: constbranchindex
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.c: hash.c: In function 'crypto_hash_sha512_blocksplusavx_constbranchindex':
hash.c: hash.c:33:6: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
hash.c: 33 | X0 = load256(iv);
hash.c: | ^
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:51,
hash.c: from hash.c:1:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/avxintrin.h:926:1: error: inlining failed in call to 'always_inline' '_mm256_storeu_si256': target specific option mismatch
hash.c: 926 | _mm256_storeu_si256 (__m256i_u *__P, __m256i __A)
hash.c: | ^~~~~~~~~~~~~~~~~~~
hash.c: hash.c:23:24: note: called from here
hash.c: 23 | #define store256(x,y) (_mm256_storeu_si256((void *) (x),y))
hash.c: | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: hash.c:37:3: note: in expansion of macro 'store256'
hash.c: 37 | store256(h + 32,X1);
hash.c: | ^~~~~~~~
hash.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:51,
hash.c: from hash.c:1:
hash.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/avxintrin.h:926:1: error: inlining failed in call to 'always_inline' '_mm256_storeu_si256': target specific option mismatch
hash.c: 926 | _mm256_storeu_si256 (__m256i_u *__P, __m256i __A)
hash.c: | ^~~~~~~~~~~~~~~~~~~
hash.c: hash.c:23:24: note: called from here
hash.c: 23 | #define store256(x,y) (_mm256_storeu_si256((void *) (x),y))
hash.c: | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hash.c: hash.c:36:3: note: in expansion of macro 'store256'
hash.c: 36 | store256(h,X0);
hash.c: ...

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