Implementation notes: aarch64, hikey960, crypto_hash/simd512

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_hash
Primitive: simd512
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
028911 388 042589 1332 744optgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
044700 0 057938 920 744sphlibgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
031460 0 043322 920 776sphlib-smallgcc_-O3_-fomit-frame-pointer2019112720190816
022656 0 032230 904 744sphlib-smallgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
5552526772 0 040242 920 744sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
6660054675 388 068381 1340 776optgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
6660052043 388 064117 1340 776optgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
6660044972 0 058442 920 776sphlibgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
7492533700 0 047218 920 776sphlib-smallgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
8325042084 0 052314 920 744sphlibgcc_-O2_-fomit-frame-pointer2019112720190816
8325040676 0 050238 904 744sphlibgcc_-Os_-fomit-frame-pointer2019112720190816
8325040676 0 050238 904 744sphlibgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
8325024296 0 035432 816 760sphlib-smallclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
8742344888 0 058346 920 744sphlibgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
9157544888 0 058346 920 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
9157525196 0 038442 920 744sphlib-smallgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
9346034572 0 048058 920 776sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
9990012431 388 022225 1316 744optgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
9990048612 0 059712 816 760sphlibclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
9990048612 0 059736 816 760sphlibclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
9990022668 0 032906 920 744sphlib-smallgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
10523748612 0 059736 816 760sphlibclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
10659640676 0 050238 904 744sphlibgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
10659624296 0 035432 816 760sphlib-smallclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
10822528911 388 042589 1332 744optgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
10822523864 0 034130 920 744sphlib-smallgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
11693042892 0 056170 920 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
11693042028 0 052258 920 744sphlibgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
12436241916 0 052178 920 744sphlibgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
12487512431 388 022257 1316 744optgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
12487512431 388 022257 1316 744optgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
13320014795 388 025277 1332 744optgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
13320046644 0 060146 920 776sphlibgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
13320040680 0 050278 904 744sphlibgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
13321614711 388 025189 1332 744optgcc_-O_-fomit-frame-pointer2019112720190816
13321614711 388 025189 1332 744optgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
13324546188 0 058034 920 776sphlibgcc_-O3_-fomit-frame-pointer2019112720190816
14152552111 388 064189 1340 776optgcc_-O3_-fomit-frame-pointer2019112720190816
14152546140 0 057978 920 776sphlibgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
14986844484 0 056306 920 776sphlibgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
15324912467 388 022257 1316 744optgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
15817519239 388 030595 1228 760optclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
15817519239 388 030595 1228 760optclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
15817522656 0 032230 904 744sphlib-smallgcc_-Os_-fomit-frame-pointer2019112720190816
15817523140 0 033338 920 744sphlib-smallgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
15817531444 0 043298 920 776sphlib-smallgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
16370213491 388 023941 1332 744optgcc_-O2_-fomit-frame-pointer2019112720190816
16650023864 0 034130 920 744sphlib-smallgcc_-O_-fomit-frame-pointer2019112720190816
16652041916 0 052178 920 744sphlibgcc_-O_-fomit-frame-pointer2019112720190816
17482523787 388 037245 1332 744optgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
17482541944 0 052210 920 744sphlibgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
17484613483 388 023893 1332 744optgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
17484652395 388 064453 1340 776optgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
18315040156 0 050346 920 744sphlibgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
18315032268 0 044106 920 776sphlib-smallgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
18315025900 0 039186 920 744sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
18708824296 0 035432 816 760sphlib-smallclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
18729022700 0 032938 920 744sphlib-smallgcc_-O2_-fomit-frame-pointer2019112720190816
19980024196 0 035312 816 760sphlib-smallclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
21047422656 0 032262 904 744sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
21645022656 0 032262 904 744sphlib-smallgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
22477519239 388 030595 1228 760optclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
23365019231 388 030563 1228 760optclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
24142522656 0 032230 904 744sphlib-smallgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
24872413427 388 023877 1332 744optgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
28038023915 388 037413 1332 744optgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
28425612431 388 022225 1316 744optgcc_-Os_-fomit-frame-pointer2019112720190816
29970023900 0 034170 920 744sphlib-smallgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
30438048612 0 059736 816 760sphlibclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
34132594136 0 0106654 904 744sphlibcc2019112720190816
34132594136 0 0106654 904 744sphlibgcc_-funroll-loops2019112720190816
37384054391 388 068125 1340 776optgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
37387040680 0 050278 904 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
53280026772 0 040242 920 744sphlib-smallgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
60803661008 0 073534 904 744sphlib-smallcc2019112720190816
68265061008 0 073534 904 744sphlib-smallgcc_-funroll-loops2019112720190816
76590036733 388 049473 1316 744optgcc2019112720190816
93240094136 0 0106654 904 744sphlibgcc2019112720190816
107575636733 388 049473 1316 744optcc2019112720190816
107575636733 388 049473 1316 744optgcc_-funroll-loops2019112720190816
123210061008 0 073534 904 744sphlib-smallgcc2019112720190816
30805274147 388 014629 1332 744refgcc_-O_-fomit-frame-pointer2019112720190816
31445827431 388 021109 1332 744refgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
38378253763 388 013585 1316 744refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
383782512343 388 026045 1340 776refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
422910010679 388 022043 1228 760refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
43956007647 388 021109 1332 744refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
440392512383 388 026117 1340 776refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
481185010327 388 022405 1340 776refgcc_-O3_-fomit-frame-pointer2019112720190816
482017510679 388 022043 1228 760refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
51916924115 388 014565 1332 744refgcc_-O2_-fomit-frame-pointer2019112720190816
53613003763 388 013553 1316 744refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
53696253763 388 013553 1316 744refgcc_-Os_-fomit-frame-pointer2019112720190816
53696253763 388 013553 1316 744refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
65601004115 388 014565 1332 744refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
657675010247 388 022317 1340 776refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
66433503763 388 013585 1316 744refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
674686110679 388 022027 1228 760refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
677024710679 388 022043 1228 760refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
75341257647 388 021149 1332 744refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
80097054107 388 014517 1332 744refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
81032494147 388 014629 1332 744refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
92740504167 388 014653 1332 744refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
111971257431 388 021109 1332 744refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
1485011010183 388 022237 1340 776refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
148968827521 388 020257 1316 744refgcc2019112720190816
246253507521 388 020257 1316 744refgcc_-funroll-loops2019112720190816
443398567521 388 020257 1316 744refcc2019112720190816

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: 4, 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

Compiler output

Implementation: vect128
Security model: unknown
Compiler: cc
vector.c: In file included from vector.c:5:0:
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: 23, 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
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv vect128
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv vect128
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv vect128
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv 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: 4, 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