Implementation notes: aarch64, supercoplxc, crypto_hash/simd512

Computer: supercoplxc
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_hash
Primitive: simd512
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
16008048603 388 062132 1316 760optgcc_-funroll-loops_-O3_-fomit-frame-pointer2019090220190816
16128047155 388 059316 1316 760optgcc_-O3_-fomit-frame-pointer2019090220190816
16328051636 0 064961 896 760sphlibgcc_-funroll-loops_-O3_-fomit-frame-pointer2019090220190816
16416048923 388 062436 1316 760optgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090220190816
16728051284 0 063233 896 760sphlibgcc_-O3_-fomit-frame-pointer2019090220190816
17272046336 0 059633 896 760sphlibgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090220190816
18720045776 0 057713 896 760sphlibgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090220190816
19128048156 0 060977 896 744sphlibgcc_-funroll-loops_-O2_-fomit-frame-pointer2019090220190816
19960028952 0 042281 896 760sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090220190816
20120029316 0 042681 896 760sphlib-smallgcc_-funroll-loops_-O3_-fomit-frame-pointer2019090220190816
20224028732 0 040721 896 760sphlib-smallgcc_-O3_-fomit-frame-pointer2019090220190816
20528042788 0 055689 896 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090220190816
20984047491 388 063740 1316 760optgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090220190816
21088045828 0 056569 896 744sphlibgcc_-O2_-fomit-frame-pointer2019090220190816
21744024203 388 037204 1308 744optgcc_-funroll-loops_-O2_-fomit-frame-pointer2019090220190816
22408024339 388 037412 1308 744optgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090220190816
22504025588 0 038449 896 744sphlib-smallgcc_-funroll-loops_-O2_-fomit-frame-pointer2019090220190816
23176025492 0 038425 896 744sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090220190816
23192043652 0 056502 800 768sphlibclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019090220190816
24184028400 0 040369 896 760sphlib-smallgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090220190816
24368041488 0 051441 880 736sphlibgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090220190816
24408041488 0 051441 880 736sphlibgcc_-funroll-loops_-Os_-fomit-frame-pointer2019090220190816
24424024268 0 035041 896 744sphlib-smallgcc_-O2_-fomit-frame-pointer2019090220190816
25256027451 388 039981 1212 768optclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019090220190816
25464040780 0 051473 896 744sphlibgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090220190816
25816049804 0 062654 800 768sphlibclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019090220190816
25832049804 0 062598 800 768sphlibclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019090220190816
25952049804 0 062654 800 768sphlibclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019090220190816
25976049804 0 062654 800 768sphlibclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019090220190816
26016026876 0 039734 800 768sphlib-smallclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019090220190816
26648027631 388 040101 1212 768optclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019090220190816
26792027739 388 040261 1212 768optclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019090220190816
26824027739 388 040261 1212 768optclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019090220190816
26824027739 388 040261 1212 768optclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019090220190816
27128041488 0 051377 880 736sphlibgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090220190816
27248041488 0 051377 880 736sphlibgcc_-Os_-fomit-frame-pointer2019090220190816
27808023596 0 033577 880 736sphlib-smallgcc_-funroll-loops_-Os_-fomit-frame-pointer2019090220190816
27816023596 0 033577 880 736sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090220190816
27936027548 0 040406 800 768sphlib-smallclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019090220190816
27944027548 0 040406 800 768sphlib-smallclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019090220190816
27976027548 0 040406 800 768sphlib-smallclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019090220190816
28000027608 0 040414 800 768sphlib-smallclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019090220190816
29752023892 0 034617 896 744sphlib-smallgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090220190816
30064045704 0 059633 896 744sphlibgcc_-funroll-loops_-O_-fomit-frame-pointer2019090220190816
30160045704 0 059633 896 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019090220190816
31096014923 388 025836 1308 744optgcc_-O2_-fomit-frame-pointer2019090220190816
31512043140 0 053849 896 744sphlibgcc_-O_-fomit-frame-pointer2019090220190816
31512043140 0 053849 896 744sphlibgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019090220190816
31528023596 0 033513 880 736sphlib-smallgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090220190816
31552023596 0 033513 880 736sphlib-smallgcc_-Os_-fomit-frame-pointer2019090220190816
32496014859 388 025716 1308 744optgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090220190816
37632027672 0 041641 896 744sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019090220190816
37752027672 0 041641 896 744sphlib-smallgcc_-funroll-loops_-O_-fomit-frame-pointer2019090220190816
38904025160 0 035897 896 744sphlib-smallgcc_-O_-fomit-frame-pointer2019090220190816
38904025160 0 035897 896 744sphlib-smallgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019090220190816
40024013183 388 023220 1292 736optgcc_-Os_-fomit-frame-pointer2019090220190816
40040013183 388 023220 1292 736optgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090220190816
40856013215 388 023324 1292 736optgcc_-funroll-loops_-Os_-fomit-frame-pointer2019090220190816
40888013215 388 023324 1292 736optgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090220190816
41992029855 388 043972 1308 744optgcc_-funroll-loops_-O_-fomit-frame-pointer2019090220190816
42136029855 388 043972 1308 744optgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019090220190816
46552015719 388 026612 1308 744optgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019090220190816
46768015719 388 026612 1308 744optgcc_-O_-fomit-frame-pointer2019090220190816
115536095112 0 0112137 880 744sphlibgcc_-funroll-loops2019090220190816
116048095112 0 0112137 880 744sphlibcc2019090220190816
117104095112 0 0112137 880 744sphlibgcc2019090220190816
155232062120 0 079169 880 744sphlib-smallcc2019090220190816
155864062120 0 079169 880 744sphlib-smallgcc2019090220190816
156064062120 0 079169 880 744sphlib-smallgcc_-funroll-loops2019090220190816
354712037893 388 050940 1292 744optgcc_-funroll-loops2019090220190816
354880037893 388 050940 1292 744optgcc2019090220190816
355256037893 388 050940 1292 744optcc2019090220190816
757552012467 388 025988 1316 760refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019090220190816
76604007979 388 020940 1308 744refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019090220190816
784984011043 388 023188 1316 760refgcc_-O3_-fomit-frame-pointer2019090220190816
79922405007 388 015900 1308 744refgcc_-O2_-fomit-frame-pointer2019090220190816
844808019015 388 032101 1212 768refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019090220190816
917752012643 388 026132 1316 760refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090220190816
93574404387 388 014452 1292 736refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090220190816
94838404387 388 014452 1292 736refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019090220190816
999520017587 388 030613 1212 768refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019090220190816
1000376019019 388 032101 1212 768refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019090220190816
1006952019019 388 032101 1212 768refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019090220190816
1023040019019 388 032101 1212 768refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019090220190816
104346404371 388 014380 1292 736refgcc_-Os_-fomit-frame-pointer2019090220190816
104352004371 388 014380 1292 736refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090220190816
105925607995 388 021036 1308 744refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090220190816
1322456011147 388 027380 1316 760refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090220190816
133276805055 388 015884 1308 744refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090220190816
134806404851 388 015708 1308 744refgcc_-O_-fomit-frame-pointer2019090220190816
135239204851 388 015708 1308 744refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019090220190816
140174408055 388 022140 1308 744refgcc_-funroll-loops_-O_-fomit-frame-pointer2019090220190816
141090408055 388 022140 1308 744refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019090220190816
385030408041 388 021044 1292 744refgcc2019090220190816
386683208041 388 021044 1292 744refgcc_-funroll-loops2019090220190816
387960808041 388 021044 1292 744refcc2019090220190816

Compiler output

Implementation: ref
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
reference.c: reference.c:69:82: warning: expression result unused [-Wunused-value]
reference.c: state->A[j] = state->D[j] + w[j] + F(state->A[j], state->B[j], state->C[j]), s;
reference.c: ^
reference.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments ref
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments ref

Compiler output

Implementation: vect128
Security model: unknown
Compiler: cc
vector.c: In file included from vector.c:5:
vector.c: vector.h:252:2: error: #error "I don't know how to vectorize on this architecture."
vector.c: #error "I don't know how to vectorize on this architecture."
vector.c: ^~~~~
vector.c: vector.h:344:25: error: array type has incomplete element type 'union cv'
vector.c: static const union cv FFT64_Twiddle[] = {
vector.c: ^~~~~~~~~~~~~
vector.c: vector.h:355:25: error: array type has incomplete element type 'union cv'
vector.c: static const union cv FFT128_Twiddle[] = {
vector.c: ^~~~~~~~~~~~~~
vector.c: vector.h:367:25: error: array type has incomplete element type 'union cv'
vector.c: static const union cv FFT256_Twiddle[] = {
vector.c: ^~~~~~~~~~~~~~
vector.c: vector.c:24:20: error: variable 'V128' has initializer but incomplete type
vector.c: static const union cv V128 = CV(128);
vector.c: ^~
vector.c: vector.c:24:30: warning: implicit declaration of function 'CV' [-Wimplicit-function-declaration]
vector.c: static const union cv V128 = CV(128);
vector.c: ^~
vector.c: vector.c:25:20: error: variable 'V255' has initializer but incomplete type
vector.c: static const union cv V255 = CV(255);
vector.c: ^~
vector.c: vector.c:26:20: error: variable 'V257' has initializer but incomplete type
vector.c: static const union cv V257 = CV(257);
vector.c: ^~
vector.c: ...

Number of similar (compiler,implementation) pairs: 19, namely:
CompilerImplementations
cc vect128
gcc vect128
gcc -O2 -fomit-frame-pointer vect128
gcc -O3 -fomit-frame-pointer vect128
gcc -O -fomit-frame-pointer vect128
gcc -Os -fomit-frame-pointer vect128
gcc -fno-schedule-insns -O2 -fomit-frame-pointer vect128
gcc -fno-schedule-insns -O3 -fomit-frame-pointer vect128
gcc -fno-schedule-insns -O -fomit-frame-pointer vect128
gcc -fno-schedule-insns -Os -fomit-frame-pointer vect128
gcc -funroll-loops vect128
gcc -funroll-loops -O2 -fomit-frame-pointer vect128
gcc -funroll-loops -O3 -fomit-frame-pointer vect128
gcc -funroll-loops -O -fomit-frame-pointer vect128
gcc -funroll-loops -Os -fomit-frame-pointer vect128
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer vect128
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer vect128
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer vect128
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer vect128

Compiler output

Implementation: vect128
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
vector.c: In file included from vector.c:5:
vector.c: ./vector.h:252:2: error: "I don't know how to vectorize on this architecture."
vector.c: #error "I don't know how to vectorize on this architecture."
vector.c: ^
vector.c: ./vector.h:344:38: error: array has incomplete element type 'const union cv'
vector.c: static const union cv FFT64_Twiddle[] = {
vector.c: ^
vector.c: ./vector.h:344:22: note: forward declaration of 'union cv'
vector.c: static const union cv FFT64_Twiddle[] = {
vector.c: ^
vector.c: ./vector.h:355:39: error: array has incomplete element type 'const union cv'
vector.c: static const union cv FFT128_Twiddle[] = {
vector.c: ^
vector.c: ./vector.h:344:22: note: forward declaration of 'union cv'
vector.c: static const union cv FFT64_Twiddle[] = {
vector.c: ^
vector.c: ./vector.h:367:39: error: array has incomplete element type 'const union cv'
vector.c: static const union cv FFT256_Twiddle[] = {
vector.c: ^
vector.c: ./vector.h:344:22: note: forward declaration of 'union cv'
vector.c: static const union cv FFT64_Twiddle[] = {
vector.c: ^
vector.c: vector.c:24:30: warning: implicit declaration of function 'CV' is invalid in C99 [-Wimplicit-function-declaration]
vector.c: static const union cv V128 = CV(128);
vector.c: ^
vector.c: ...

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments vect128
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments vect128
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments vect128
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments vect128
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments vect128