Implementation notes: aarch64, supercoplxc, crypto_scalarmult/nistp256

Computer: supercoplxc
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_scalarmult
Primitive: nistp256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
504088010924 30720 031673 31624 1584mj32gcc_-O3_-fomit-frame-pointer2019092520190816
507928012756 30720 034881 31624 1584mj32gcc_-funroll-loops_-O3_-fomit-frame-pointer2019092520190816
536288012892 30720 034929 31624 1584mj32gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019092520190816
539784011044 30720 031729 31624 1584mj32gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019092520190816
555288012712 30720 034361 31616 1568mj32gcc_-funroll-loops_-O2_-fomit-frame-pointer2019092520190816
594496012940 30720 034633 31616 1568mj32gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019092520190816
612792015040 30720 035510 31528 1600mj32clang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019092520190816
666608014940 30720 035406 31528 1600mj32clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019092520190816
666608014940 30720 035406 31528 1600mj32clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019092520190816
667440014940 30720 035350 31528 1600mj32clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019092520190816
693968014940 30720 035406 31528 1600mj32clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019092520190816
128748809708 30720 029281 31616 1568mj32gcc_-O2_-fomit-frame-pointer2019092520190816
130705609820 30720 029281 31616 1568mj32gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019092520190816
1378384014776 30720 036473 31616 1568mj32gcc_-funroll-loops_-O_-fomit-frame-pointer2019092520190816
1416376014776 30720 036473 31616 1568mj32gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019092520190816
144842409276 30720 026833 31600 1560mj32gcc_-funroll-loops_-Os_-fomit-frame-pointer2019092520190816
146012809276 30720 026833 31600 1560mj32gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019092520190816
152562409276 30720 026769 31600 1560mj32gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019092520190816
152789609276 30720 026769 31600 1560mj32gcc_-Os_-fomit-frame-pointer2019092520190816
2408600010968 30720 029441 31616 1568mj32gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019092520190816
2411832010968 30720 029441 31616 1568mj32gcc_-O_-fomit-frame-pointer2019092520190816
13283184025452 30720 047737 31600 1576mj32cc2019092520190816
13304080025452 30720 047737 31600 1576mj32gcc2019092520190816
13356056025452 30720 047737 31600 1576mj32gcc_-funroll-loops2019092520190816

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

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: 5, 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
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments mj32