Implementation notes: aarch64, hikey960, crypto_hash/simd256

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_hash
Primitive: simd256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
023787 388 037245 1332 744optgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
054391 388 068125 1340 776optgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
042084 0 052314 920 744sphlibgcc_-O2_-fomit-frame-pointer2019112720190816
044888 0 058346 920 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
022700 0 032938 920 744sphlib-smallgcc_-O2_-fomit-frame-pointer2019112720190816
022656 0 032230 904 744sphlib-smallgcc_-Os_-fomit-frame-pointer2019112720190816
022656 0 032262 904 744sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
4995044972 0 058442 920 776sphlibgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
5329848612 0 059712 816 760sphlibclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
5827552111 388 064189 1340 776optgcc_-O3_-fomit-frame-pointer2019112720190816
5827540156 0 050346 920 744sphlibgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
6218142028 0 052258 920 744sphlibgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
6660048612 0 059736 816 760sphlibclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
6660033700 0 047218 920 776sphlib-smallgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
7492541916 0 052178 920 744sphlibgcc_-O_-fomit-frame-pointer2019112720190816
7492546140 0 057978 920 776sphlibgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
7492540676 0 050238 904 744sphlibgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
7994740676 0 050238 904 744sphlibgcc_-Os_-fomit-frame-pointer2019112720190816
7994740676 0 050238 904 744sphlibgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
8325044484 0 056306 920 776sphlibgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
8325046644 0 060146 920 776sphlibgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
8325025900 0 039186 920 744sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
8742322656 0 032230 904 744sphlib-smallgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
8883013491 388 023941 1332 744optgcc_-O2_-fomit-frame-pointer2019112720190816
9157523864 0 034130 920 744sphlib-smallgcc_-O_-fomit-frame-pointer2019112720190816
9157526772 0 040242 920 744sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
9990028911 388 042589 1332 744optgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
9990046188 0 058034 920 776sphlibgcc_-O3_-fomit-frame-pointer2019112720190816
9990044700 0 057938 920 744sphlibgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
11655014711 388 025189 1332 744optgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
11693025196 0 038442 920 744sphlib-smallgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
12487534572 0 048058 920 776sphlib-smallgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
12862348612 0 059736 816 760sphlibclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
12902223915 388 037413 1332 744optgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
13320012431 388 022225 1316 744optgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
13320012431 388 022257 1316 744optgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
13320040680 0 050278 904 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
13320022668 0 032906 920 744sphlib-smallgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
13321640680 0 050278 904 744sphlibgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
13737922656 0 032230 904 744sphlib-smallgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
14031631444 0 043298 920 776sphlib-smallgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
14567032268 0 044106 920 776sphlib-smallgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
15200919239 388 030595 1228 760optclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
15817528911 388 042589 1332 744optgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
15817524296 0 035432 816 760sphlib-smallclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
15817524296 0 035432 816 760sphlib-smallclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
16357642892 0 056170 920 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
16650019231 388 030563 1228 760optclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
16650013427 388 023877 1332 744optgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
16650052043 388 064117 1340 776optgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
16650024296 0 035432 816 760sphlib-smallclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
17482544888 0 058346 920 744sphlibgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
17539524196 0 035312 816 760sphlib-smallclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
18315041916 0 052178 920 744sphlibgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
18692031460 0 043322 920 776sphlib-smallgcc_-O3_-fomit-frame-pointer2019112720190816
18708814711 388 025189 1332 744optgcc_-O_-fomit-frame-pointer2019112720190816
18733552395 388 064453 1340 776optgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
19147541944 0 052210 920 744sphlibgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
19149823140 0 033338 920 744sphlib-smallgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
19878112431 388 022225 1316 744optgcc_-Os_-fomit-frame-pointer2019112720190816
19980019239 388 030595 1228 760optclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
21026713483 388 023893 1332 744optgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
23310026772 0 040242 920 744sphlib-smallgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
24555322656 0 032262 904 744sphlib-smallgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
24561723864 0 034130 920 744sphlib-smallgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
24975014795 388 025277 1332 744optgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
27472519239 388 030595 1228 760optclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
29137594136 0 0106654 904 744sphlibcc2019112720190816
29137594136 0 0106654 904 744sphlibgcc2019112720190816
30401812467 388 022257 1316 744optgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
30802554675 388 068381 1340 776optgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
31635012431 388 022257 1316 744optgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
35079048612 0 059736 816 760sphlibclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
35079023900 0 034170 920 744sphlib-smallgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
38715961008 0 073534 904 744sphlib-smallgcc_-funroll-loops2019112720190816
39127561008 0 073534 904 744sphlib-smallcc2019112720190816
74101494136 0 0106654 904 744sphlibgcc_-funroll-loops2019112720190816
101729136733 388 049473 1316 744optcc2019112720190816
12791524115 388 014565 1332 744refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
152009061008 0 073534 904 744sphlib-smallgcc2019112720190816
16816503763 388 013585 1316 744refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
189832810679 388 022027 1228 760refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
19480503763 388 013585 1316 744refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
228105036733 388 049473 1316 744optgcc_-funroll-loops2019112720190816
233932510247 388 022317 1340 776refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
242257510679 388 022043 1228 760refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
25138894167 388 014653 1332 744refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
254907412383 388 026117 1340 776refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
264735012343 388 026045 1340 776refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
26723253763 388 013553 1316 744refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
26806503763 388 013553 1316 744refgcc_-Os_-fomit-frame-pointer2019112720190816
26806503763 388 013553 1316 744refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
27472507431 388 021109 1332 744refgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
28412124107 388 014517 1332 744refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
336483036733 388 049473 1316 744optgcc2019112720190816
33648307647 388 021149 1332 744refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
34798504115 388 014565 1332 744refgcc_-O2_-fomit-frame-pointer2019112720190816
349650010679 388 022043 1228 760refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
373870010183 388 022237 1340 776refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
40709254147 388 014629 1332 744refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
45328107647 388 021109 1332 744refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
485992010327 388 022405 1340 776refgcc_-O3_-fomit-frame-pointer2019112720190816
56616804147 388 014629 1332 744refgcc_-O_-fomit-frame-pointer2019112720190816
57359257431 388 021109 1332 744refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
672966010679 388 022043 1228 760refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
156426757521 388 020257 1316 744refgcc2019112720190816
156569277521 388 020257 1316 744refgcc_-funroll-loops2019112720190816
213556107521 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