Implementation notes: amd64, hydra3, crypto_scalarmult/nistp256

Computer: hydra3
Architecture: amd64
CPU ID: AuthenticAMD-00100fa0-178bfbff
SUPERCOP version: 20171218
Operation: crypto_scalarmult
Primitive: nistp256
TimeImplementationCompilerBenchmark dateSUPERCOP version
3581567mj32clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments2017111520171020
3599234mj32clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2017111520171020
3599579mj32clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2017111520171020
3602009mj32clang -O3 -fomit-frame-pointer -Qunused-arguments2017111520171020
3605623mj32clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2017111520171020
3606380mj32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2017111520171020
3668213mj32gcc -funroll-loops -O2 -fomit-frame-pointer2017111520171020
3671211mj32gcc -funroll-loops -m64 -O2 -fomit-frame-pointer2017111520171020
3686949mj32gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2017111520171020
3706558mj32gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2017111520171020
3708214mj32gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2017111520171020
3730391mj32gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2017111520171020
3736370mj32gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2017111520171020
3741509mj32gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2017111520171020
3742609mj32gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2017111520171020
3801057mj32gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2017111520171020
3801798mj32gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2017111520171020
3837132mj32gcc -march=nocona -O3 -fomit-frame-pointer2017111520171020
3842814mj32gcc -m64 -march=nocona -O3 -fomit-frame-pointer2017111520171020
3932348mj32gcc -funroll-loops -O3 -fomit-frame-pointer2017111520171020
3933044mj32gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2017111520171020
3944645mj32gcc -funroll-loops -m64 -O3 -fomit-frame-pointer2017111520171020
3947086mj32gcc -m64 -march=barcelona -O3 -fomit-frame-pointer2017111520171020
3948671mj32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2017111520171020
3951656mj32gcc -m64 -march=k8 -O3 -fomit-frame-pointer2017111520171020
3957347mj32gcc -march=k8 -O3 -fomit-frame-pointer2017111520171020
3964302mj32gcc -fno-schedule-insns -O3 -fomit-frame-pointer2017111520171020
3966153mj32gcc -march=barcelona -O3 -fomit-frame-pointer2017111520171020
3971395mj32gcc -O3 -fomit-frame-pointer2017111520171020
3972304mj32gcc -m64 -O3 -fomit-frame-pointer2017111520171020
3979604mj32gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2017111520171020
3983181mj32gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2017111520171020
3996394mj32gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2017111520171020
4042986mj32gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2017111520171020
4044672mj32gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2017111520171020
4869211mj32gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2017111520171020
4870295mj32gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2017111520171020
4884330mj32gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2017111520171020
4887185mj32gcc -funroll-loops -march=nocona -O -fomit-frame-pointer2017111520171020
4902335mj32gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2017111520171020
4952705mj32gcc -funroll-loops -march=k8 -O -fomit-frame-pointer2017111520171020
5059878mj32gcc -funroll-loops -m64 -O -fomit-frame-pointer2017111520171020
5082531mj32gcc -funroll-loops -O -fomit-frame-pointer2017111520171020
5089803mj32gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2017111520171020
6235560mj32gcc -march=barcelona -O2 -fomit-frame-pointer2017111520171020
6247904mj32gcc -m64 -march=barcelona -O2 -fomit-frame-pointer2017111520171020
6250364mj32gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2017111520171020
6259346mj32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2017111520171020
6372521mj32gcc -m64 -O2 -fomit-frame-pointer2017111520171020
6374028mj32gcc -fno-schedule-insns -O2 -fomit-frame-pointer2017111520171020
6375148mj32gcc -O2 -fomit-frame-pointer2017111520171020
6388270mj32gcc -m64 -march=k8 -O2 -fomit-frame-pointer2017111520171020
6465503mj32gcc -march=k8 -O2 -fomit-frame-pointer2017111520171020
6591110mj32gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2017111520171020
6595999mj32gcc -m64 -march=core2 -O2 -fomit-frame-pointer2017111520171020
6596487mj32gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2017111520171020
6611136mj32gcc -m64 -march=corei7 -O2 -fomit-frame-pointer2017111520171020
6836079mj32gcc -m64 -march=nocona -O2 -fomit-frame-pointer2017111520171020
6841375mj32gcc -march=nocona -O2 -fomit-frame-pointer2017111520171020
7060665mj32gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2017111520171020
7067389mj32gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2017111520171020
7147686mj32gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2017111520171020
7148439mj32gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2017111520171020
7164102mj32gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2017111520171020
7188414mj32gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2017111520171020
7192210mj32gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2017111520171020
7205710mj32gcc -funroll-loops -Os -fomit-frame-pointer2017111520171020
7576116mj32gcc -funroll-loops -m64 -Os -fomit-frame-pointer2017111520171020
7862629mj32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2017111520171020
7975506mj32gcc -march=k8 -Os -fomit-frame-pointer2017111520171020
7976214mj32gcc -fno-schedule-insns -Os -fomit-frame-pointer2017111520171020
7984885mj32gcc -m64 -Os -fomit-frame-pointer2017111520171020
7986918mj32gcc -m64 -march=corei7 -Os -fomit-frame-pointer2017111520171020
7995047mj32gcc -Os -fomit-frame-pointer2017111520171020
7995058mj32gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2017111520171020
7997883mj32gcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2017111520171020
8005953mj32gcc -m64 -march=barcelona -Os -fomit-frame-pointer2017111520171020
8008541mj32gcc -march=barcelona -Os -fomit-frame-pointer2017111520171020
8019288mj32gcc -m64 -march=core2 -Os -fomit-frame-pointer2017111520171020
8019346mj32gcc -m64 -march=k8 -Os -fomit-frame-pointer2017111520171020
8208202mj32gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2017111520171020
8353366mj32gcc -march=nocona -Os -fomit-frame-pointer2017111520171020
8496595mj32gcc -m64 -march=nocona -Os -fomit-frame-pointer2017111520171020
11031378mj32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2017111520171020
11133225mj32gcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2017111520171020
11148289mj32gcc -march=barcelona -O -fomit-frame-pointer2017111520171020
11212564mj32gcc -m64 -march=barcelona -O -fomit-frame-pointer2017111520171020
11425056mj32gcc -march=k8 -O -fomit-frame-pointer2017111520171020
11427626mj32gcc -m64 -march=k8 -O -fomit-frame-pointer2017111520171020
12248331mj32gcc -fno-schedule-insns -O -fomit-frame-pointer2017111520171020
12296102mj32gcc -O -fomit-frame-pointer2017111520171020
12501690mj32gcc -m64 -O -fomit-frame-pointer2017111520171020
12580975mj32gcc -m64 -march=nocona -O -fomit-frame-pointer2017111520171020
12583056mj32gcc -march=nocona -O -fomit-frame-pointer2017111520171020
13202628mj32gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2017111520171020
13221207mj32gcc -m64 -march=corei7 -O -fomit-frame-pointer2017111520171020
13256111mj32gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2017111520171020
13263848mj32gcc -m64 -march=core2 -O -fomit-frame-pointer2017111520171020
56159795mj32gcc -funroll-loops2017111520171020
56170657mj32gcc2017111520171020
56235279mj32cc2017111520171020

Test failure

Implementation: crypto_scalarmult/nistp256/mj32
Compiler: gcc -m64 -march=core2 -O3 -fomit-frame-pointer
error 111

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -m64 -march=core2 -O3 -fomit-frame-pointer mj32

Compiler output

Implementation: crypto_scalarmult/nistp256/mj32
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 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 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: 92, 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 -funroll-loops -m64 -O2 -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -O3 -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -O -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -Os -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer mj32
gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer mj32
gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer mj32
gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer mj32
gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer mj32
gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer mj32
gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer mj32
gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer mj32
gcc -funroll-loops -march=k8 -O -fomit-frame-pointer mj32
gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer mj32
gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer mj32
gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer mj32
gcc -funroll-loops -march=nocona -O -fomit-frame-pointer mj32
gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer mj32
gcc -m64 -O2 -fomit-frame-pointer mj32
gcc -m64 -O3 -fomit-frame-pointer mj32
gcc -m64 -O -fomit-frame-pointer mj32
gcc -m64 -Os -fomit-frame-pointer mj32
gcc -m64 -march=core2 -O2 -fomit-frame-pointer mj32
gcc -m64 -march=core2 -O3 -fomit-frame-pointer mj32
gcc -m64 -march=core2 -O -fomit-frame-pointer mj32
gcc -m64 -march=core2 -Os -fomit-frame-pointer mj32
gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer mj32
gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer mj32
gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer mj32
gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer mj32
gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer mj32
gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer mj32
gcc -m64 -march=corei7 -O2 -fomit-frame-pointer mj32
gcc -m64 -march=corei7 -O -fomit-frame-pointer mj32
gcc -m64 -march=corei7 -Os -fomit-frame-pointer mj32
gcc -m64 -march=k8 -O2 -fomit-frame-pointer mj32
gcc -m64 -march=k8 -O3 -fomit-frame-pointer mj32
gcc -m64 -march=k8 -O -fomit-frame-pointer mj32
gcc -m64 -march=k8 -Os -fomit-frame-pointer mj32
gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer mj32
gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer mj32
gcc -m64 -march=native -mtune=native -O -fomit-frame-pointer mj32
gcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer mj32
gcc -m64 -march=nocona -O2 -fomit-frame-pointer mj32
gcc -m64 -march=nocona -O3 -fomit-frame-pointer mj32
gcc -m64 -march=nocona -O -fomit-frame-pointer mj32
gcc -m64 -march=nocona -Os -fomit-frame-pointer mj32
gcc -march=barcelona -O2 -fomit-frame-pointer mj32
gcc -march=barcelona -O3 -fomit-frame-pointer mj32
gcc -march=barcelona -O -fomit-frame-pointer mj32
gcc -march=barcelona -Os -fomit-frame-pointer mj32
gcc -march=k8 -O2 -fomit-frame-pointer mj32
gcc -march=k8 -O3 -fomit-frame-pointer mj32
gcc -march=k8 -O -fomit-frame-pointer mj32
gcc -march=k8 -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
gcc -march=nocona -O2 -fomit-frame-pointer mj32
gcc -march=nocona -O3 -fomit-frame-pointer mj32
gcc -march=nocona -O -fomit-frame-pointer mj32
gcc -march=nocona -Os -fomit-frame-pointer mj32

Compiler output

Implementation: crypto_scalarmult/nistp256/mj32
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 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 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: 6, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments mj32
clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments mj32
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments mj32
clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments mj32
clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments mj32
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments mj32

Compiler output

Implementation: crypto_scalarmult/nistp256/mj32
Compiler: gcc -m64 -march=barcelona -O2 -fomit-frame-pointer
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 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 gep256.c: ^
gep256.c: gep256.c:87:45: note: declared here
gep256.c: static int isneutral_precomp(gep256_precomp p) {
gep256.c: ^
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 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 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: 4, namely:
CompilerImplementations
gcc -m64 -march=barcelona -O2 -fomit-frame-pointer mj32
gcc -m64 -march=barcelona -O3 -fomit-frame-pointer mj32
gcc -m64 -march=barcelona -O -fomit-frame-pointer mj32
gcc -m64 -march=barcelona -Os -fomit-frame-pointer mj32