Implementation notes: aarch64, hikey960, crypto_scalarmult/nistp256

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_scalarmult
Primitive: nistp256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
143904610280 30720 029304 31544 1600mj32clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019113020190816
200778413356 30720 034727 31640 1584mj32gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019113020190816
252247511180 30720 032703 31648 1616mj32gcc_-funroll-loops_-O3_-fomit-frame-pointer2019113020190816
253080011272 30720 032727 31648 1616mj32gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019113020190816
25557759720 30720 029527 31648 1616mj32gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019113020190816
269730010220 30720 029264 31544 1600mj32clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019113020190816
270562510220 30720 029264 31544 1600mj32clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019113020190816
34728219604 30720 029463 31648 1616mj32gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019113020190816
376290013356 30720 034727 31640 1584mj32gcc_-funroll-loops_-O_-fomit-frame-pointer2019113020190816
41375258204 30720 026447 31640 1584mj32gcc_-O2_-fomit-frame-pointer2019113020190816
449550011528 30720 032775 31640 1584mj32gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019113020190816
457042511476 30720 032727 31640 1584mj32gcc_-funroll-loops_-O2_-fomit-frame-pointer2019113020190816
50033258184 30720 026431 31640 1584mj32gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019113020190816
50247418304 30720 026471 31640 1584mj32gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019113020190816
546952510220 30720 029264 31544 1600mj32clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019113020190816
55444507880 30720 025227 31624 1584mj32gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019113020190816
64194577876 30720 025227 31624 1584mj32gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019113020190816
64487409596 30720 029471 31648 1616mj32gcc_-O3_-fomit-frame-pointer2019113020190816
77173807880 30720 025227 31624 1584mj32gcc_-Os_-fomit-frame-pointer2019113020190816
112900567840 30720 025219 31624 1584mj32gcc_-funroll-loops_-Os_-fomit-frame-pointer2019113020190816
113774797840 30720 025219 31624 1584mj32gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019113020190816
187418269520 30720 027695 31640 1584mj32gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019113020190816
189726759576 30720 027751 31640 1584mj32gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019113020190816
277318819520 30720 027695 31640 1584mj32gcc_-O_-fomit-frame-pointer2019113020190816
4174987523992 30720 046083 31624 1584mj32cc2019113020190816
4179982523992 30720 046083 31624 1584mj32gcc2019113020190816
5010012023992 30720 046083 31624 1584mj32gcc_-funroll-loops2019113020190816

Compiler output

Implementation: mj32
Security model: unknown
Compiler: cc
gep256.c: gep256.c: In function 'isneutral':
gep256.c: gep256.c:83:28: warning: 'sizeof' on array function parameter 'p' will return size of 'crypto_uint32 (*)[8] {aka unsigned int (*)[8]}' [-Wsizeof-array-argument]
gep256.c: for (i = 0; i < sizeof p; ++i) x |= ((unsigned char *)p)[i];
gep256.c: ^
gep256.c: gep256.c:78:29: note: declared here
gep256.c: static int isneutral(gep256 p) {
gep256.c: ^
gep256.c: gep256.c: In function 'isneutral_precomp':
gep256.c: gep256.c:92:28: warning: 'sizeof' on array function parameter 'p' will return size of 'crypto_uint32 (*)[8] {aka unsigned int (*)[8]}' [-Wsizeof-array-argument]
gep256.c: for (i = 0; i < sizeof p; ++i) x |= ((unsigned char *)p)[i];
gep256.c: ^
gep256.c: gep256.c:87:45: note: declared here
gep256.c: static int isneutral_precomp(gep256_precomp p) {
gep256.c: ^

Number of similar (compiler,implementation) pairs: 23, namely:
CompilerImplementations
cc mj32
gcc mj32
gcc -O2 -fomit-frame-pointer mj32
gcc -O3 -fomit-frame-pointer mj32
gcc -O -fomit-frame-pointer mj32
gcc -Os -fomit-frame-pointer mj32
gcc -fno-schedule-insns -O2 -fomit-frame-pointer mj32
gcc -fno-schedule-insns -O3 -fomit-frame-pointer mj32
gcc -fno-schedule-insns -O -fomit-frame-pointer mj32
gcc -fno-schedule-insns -Os -fomit-frame-pointer mj32
gcc -funroll-loops mj32
gcc -funroll-loops -O2 -fomit-frame-pointer mj32
gcc -funroll-loops -O3 -fomit-frame-pointer mj32
gcc -funroll-loops -O -fomit-frame-pointer mj32
gcc -funroll-loops -Os -fomit-frame-pointer mj32
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer mj32
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer mj32
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer mj32
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer mj32
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv mj32
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv mj32
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv mj32
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv mj32

Compiler output

Implementation: mj32
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
gep256.c: gep256.c:83:28: warning: sizeof on array function parameter will return size of 'fe *' (aka 'crypto_uint32 (*)[8]') instead of 'gep256' (aka 'fe [3]') [-Wsizeof-array-argument]
gep256.c: for (i = 0; i < sizeof p; ++i) x |= ((unsigned char *)p)[i];
gep256.c: ^
gep256.c: gep256.c:78:29: note: declared here
gep256.c: static int isneutral(gep256 p) {
gep256.c: ^
gep256.c: gep256.c:92:28: warning: sizeof on array function parameter will return size of 'fe *' (aka 'crypto_uint32 (*)[8]') instead of 'gep256_precomp' (aka 'fe [2]') [-Wsizeof-array-argument]
gep256.c: for (i = 0; i < sizeof p; ++i) x |= ((unsigned char *)p)[i];
gep256.c: ^
gep256.c: gep256.c:87:45: note: declared here
gep256.c: static int isneutral_precomp(gep256_precomp p) {
gep256.c: ^
gep256.c: 2 warnings generated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments mj32
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments mj32
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments mj32
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments mj32