Implementation notes: amd64, hydra1, crypto_scalarmult/nistp256

Computer: hydra1
Architecture: amd64
CPU ID: AuthenticAMD-00100fa0-178bfbff
SUPERCOP version: 20161220
Operation: crypto_scalarmult
Primitive: nistp256
TimeImplementationCompilerBenchmark dateSUPERCOP version
4014461mj32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016102420161009
4018772mj32clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments2016102420161009
4035704mj32clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016102420161009
4036323mj32clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016102420161009
4039485mj32clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016102420161009
4044098mj32clang -O3 -fomit-frame-pointer -Qunused-arguments2016102420161009
4108408mj32gcc -funroll-loops -O2 -fomit-frame-pointer2016102420161009
4108545mj32gcc -funroll-loops -m64 -O2 -fomit-frame-pointer2016102420161009
4114059mj32gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2016102420161009
4146723mj32gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2016102420161009
4147075mj32gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2016102420161009
4182046mj32gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2016102420161009
4182054mj32gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2016102420161009
4195088mj32gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2016102420161009
4201890mj32gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2016102420161009
4277531mj32gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2016102420161009
4278404mj32gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2016102420161009
4295954mj32gcc -m64 -march=nocona -O3 -fomit-frame-pointer2016102420161009
4299206mj32gcc -march=nocona -O3 -fomit-frame-pointer2016102420161009
4401448mj32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016102420161009
4408848mj32gcc -m64 -march=k8 -O3 -fomit-frame-pointer2016102420161009
4417872mj32gcc -funroll-loops -m64 -O3 -fomit-frame-pointer2016102420161009
4423795mj32gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2016102420161009
4426341mj32gcc -funroll-loops -O3 -fomit-frame-pointer2016102420161009
4427470mj32gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2016102420161009
4428501mj32gcc -march=k8 -O3 -fomit-frame-pointer2016102420161009
4428643mj32gcc -m64 -march=barcelona -O3 -fomit-frame-pointer2016102420161009
4429555mj32gcc -march=barcelona -O3 -fomit-frame-pointer2016102420161009
4435499mj32gcc -O3 -fomit-frame-pointer2016102420161009
4443035mj32gcc -m64 -O3 -fomit-frame-pointer2016102420161009
4457711mj32gcc -fno-schedule-insns -O3 -fomit-frame-pointer2016102420161009
4468458mj32gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2016102420161009
4490608mj32gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2016102420161009
4537384mj32gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2016102420161009
4552755mj32gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2016102420161009
5509758mj32gcc -funroll-loops -march=k8 -O -fomit-frame-pointer2016102420161009
5523466mj32gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2016102420161009
5560930mj32gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2016102420161009
5590974mj32gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2016102420161009
5697477mj32gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2016102420161009
5741653mj32gcc -funroll-loops -march=nocona -O -fomit-frame-pointer2016102420161009
5953818mj32gcc -funroll-loops -O -fomit-frame-pointer2016102420161009
5955580mj32gcc -funroll-loops -m64 -O -fomit-frame-pointer2016102420161009
5959095mj32gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2016102420161009
6987966mj32gcc -m64 -march=k8 -O2 -fomit-frame-pointer2016102420161009
6988714mj32gcc -march=k8 -O2 -fomit-frame-pointer2016102420161009
6994270mj32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016102420161009
6998301mj32gcc -march=barcelona -O2 -fomit-frame-pointer2016102420161009
6998756mj32gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2016102420161009
7000493mj32gcc -march=nocona -O2 -fomit-frame-pointer2016102420161009
7001067mj32gcc -m64 -march=barcelona -O2 -fomit-frame-pointer2016102420161009
7016709mj32gcc -m64 -march=nocona -O2 -fomit-frame-pointer2016102420161009
7155276mj32gcc -m64 -O2 -fomit-frame-pointer2016102420161009
7155816mj32gcc -fno-schedule-insns -O2 -fomit-frame-pointer2016102420161009
7161983mj32gcc -O2 -fomit-frame-pointer2016102420161009
7401168mj32gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2016102420161009
7406995mj32gcc -m64 -march=core2 -O2 -fomit-frame-pointer2016102420161009
7407963mj32gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2016102420161009
7423504mj32gcc -m64 -march=corei7 -O2 -fomit-frame-pointer2016102420161009
7727875mj32gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2016102420161009
7735219mj32gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2016102420161009
7870644mj32gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2016102420161009
7879119mj32gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2016102420161009
7887171mj32gcc -funroll-loops -m64 -Os -fomit-frame-pointer2016102420161009
7887883mj32gcc -funroll-loops -Os -fomit-frame-pointer2016102420161009
7889966mj32gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2016102420161009
7894365mj32gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2016102420161009
7903851mj32gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2016102420161009
9041781mj32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016102420161009
9181400mj32gcc -m64 -march=nocona -Os -fomit-frame-pointer2016102420161009
9184392mj32gcc -m64 -march=k8 -Os -fomit-frame-pointer2016102420161009
9198095mj32gcc -m64 -march=core2 -Os -fomit-frame-pointer2016102420161009
9199734mj32gcc -m64 -Os -fomit-frame-pointer2016102420161009
9201423mj32gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2016102420161009
9201947mj32gcc -m64 -march=corei7 -Os -fomit-frame-pointer2016102420161009
9202757mj32gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2016102420161009
9205632mj32gcc -march=k8 -Os -fomit-frame-pointer2016102420161009
9206525mj32gcc -Os -fomit-frame-pointer2016102420161009
9207432mj32gcc -fno-schedule-insns -Os -fomit-frame-pointer2016102420161009
9214479mj32gcc -march=nocona -Os -fomit-frame-pointer2016102420161009
9214732mj32gcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2016102420161009
9221200mj32gcc -m64 -march=barcelona -Os -fomit-frame-pointer2016102420161009
9234034mj32gcc -march=barcelona -Os -fomit-frame-pointer2016102420161009
12727275mj32gcc -O -fomit-frame-pointer2016102420161009
12730992mj32gcc -fno-schedule-insns -O -fomit-frame-pointer2016102420161009
12743195mj32gcc -m64 -O -fomit-frame-pointer2016102420161009
12775597mj32gcc -march=nocona -O -fomit-frame-pointer2016102420161009
12831291mj32gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2016102420161009
12833552mj32gcc -m64 -march=corei7 -O -fomit-frame-pointer2016102420161009
12855362mj32gcc -m64 -march=core2 -O -fomit-frame-pointer2016102420161009
12857644mj32gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2016102420161009
13169598mj32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016102420161009
13211787mj32gcc -m64 -march=nocona -O -fomit-frame-pointer2016102420161009
13579608mj32gcc -m64 -march=k8 -O -fomit-frame-pointer2016102420161009
13585439mj32gcc -march=k8 -O -fomit-frame-pointer2016102420161009
13684563mj32gcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2016102420161009
13686296mj32gcc -march=barcelona -O -fomit-frame-pointer2016102420161009
13715200mj32gcc -m64 -march=barcelona -O -fomit-frame-pointer2016102420161009
62541693mj32gcc -funroll-loops2016102420161009
62565151mj32cc2016102420161009
62630408mj32gcc2016102420161009

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