Implementation notes: amd64, glyme, crypto_scalarmult/nistp256

Computer: glyme
Architecture: amd64
CPU ID: GenuineIntel-00020652-bfebfbff
SUPERCOP version: 201720170105
Operation: crypto_scalarmult
Primitive: nistp256
TimeImplementationCompilerBenchmark dateSUPERCOP version
3488508mj32gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2017020520170105
3489396mj32gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2017020520170105
3509004mj32gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2017020520170105
3509492mj32gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2017020520170105
3561424mj32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2017020520170105
3603916mj32gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2017020520170105
3604280mj32gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2017020520170105
3604340mj32gcc -march=barcelona -O3 -fomit-frame-pointer2017020520170105
3604356mj32gcc -m64 -march=barcelona -O3 -fomit-frame-pointer2017020520170105
3607008mj32gcc -funroll-loops -m64 -O3 -fomit-frame-pointer2017020520170105
3607064mj32gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2017020520170105
3610432mj32gcc -m64 -march=nocona -O3 -fomit-frame-pointer2017020520170105
3611888mj32gcc -march=nocona -O3 -fomit-frame-pointer2017020520170105
3616116mj32gcc -funroll-loops -O3 -fomit-frame-pointer2017020520170105
3622036mj32gcc -march=k8 -O3 -fomit-frame-pointer2017020520170105
3622392mj32gcc -m64 -march=k8 -O3 -fomit-frame-pointer2017020520170105
3647256mj32gcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer2017020520170105
3647296mj32gcc -m64 -march=corei7 -O3 -fomit-frame-pointer2017020520170105
3647460mj32gcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer2017020520170105
3647680mj32gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2017020520170105
3649984mj32gcc -m64 -march=core2 -O3 -fomit-frame-pointer2017020520170105
3679620mj32gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2017020520170105
3680152mj32gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2017020520170105
3693884mj32gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2017020520170105
3711520mj32gcc -funroll-loops -m64 -O2 -fomit-frame-pointer2017020520170105
3719684mj32gcc -funroll-loops -O2 -fomit-frame-pointer2017020520170105
3725692mj32gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2017020520170105
3728084mj32gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2017020520170105
3728328mj32gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2017020520170105
3731840mj32gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2017020520170105
3779688mj32gcc -O3 -fomit-frame-pointer2017020520170105
3782896mj32clang -O3 -fomit-frame-pointer -Qunused-arguments2017020520170105
3783008mj32clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments2017020520170105
3783204mj32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2017020520170105
3784500mj32clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2017020520170105
3784644mj32clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2017020520170105
3784812mj32gcc -m64 -O3 -fomit-frame-pointer2017020520170105
3791892mj32clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2017020520170105
3794284mj32gcc -fno-schedule-insns -O3 -fomit-frame-pointer2017020520170105
5070444mj32gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2017020520170105
5099624mj32gcc -funroll-loops -march=nocona -O -fomit-frame-pointer2017020520170105
5131048mj32gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2017020520170105
5161428mj32gcc -funroll-loops -m64 -O -fomit-frame-pointer2017020520170105
5176752mj32gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2017020520170105
5195172mj32gcc -funroll-loops -O -fomit-frame-pointer2017020520170105
5208276mj32gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2017020520170105
5255840mj32gcc -m64 -march=barcelona -O2 -fomit-frame-pointer2017020520170105
5257676mj32gcc -march=barcelona -O2 -fomit-frame-pointer2017020520170105
5272436mj32gcc -funroll-loops -march=k8 -O -fomit-frame-pointer2017020520170105
5294120mj32gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2017020520170105
5303060mj32gcc -m64 -O2 -fomit-frame-pointer2017020520170105
5303488mj32gcc -fno-schedule-insns -O2 -fomit-frame-pointer2017020520170105
5304040mj32gcc -O2 -fomit-frame-pointer2017020520170105
5309896mj32gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2017020520170105
5311220mj32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2017020520170105
5312080mj32gcc -m64 -march=corei7 -O2 -fomit-frame-pointer2017020520170105
5314600mj32gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2017020520170105
5315296mj32gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2017020520170105
5319340mj32gcc -m64 -march=core2 -O2 -fomit-frame-pointer2017020520170105
5353120mj32gcc -march=k8 -O2 -fomit-frame-pointer2017020520170105
5358312mj32gcc -m64 -march=k8 -O2 -fomit-frame-pointer2017020520170105
5524000mj32gcc -m64 -march=nocona -O2 -fomit-frame-pointer2017020520170105
5525576mj32gcc -march=nocona -O2 -fomit-frame-pointer2017020520170105
5807132mj32gcc -march=k8 -Os -fomit-frame-pointer2017020520170105
5807924mj32gcc -m64 -march=k8 -Os -fomit-frame-pointer2017020520170105
5832512mj32gcc -march=barcelona -Os -fomit-frame-pointer2017020520170105
5832744mj32gcc -m64 -march=barcelona -Os -fomit-frame-pointer2017020520170105
5833192mj32gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2017020520170105
5838472mj32gcc -Os -fomit-frame-pointer2017020520170105
5838676mj32gcc -m64 -Os -fomit-frame-pointer2017020520170105
5845536mj32gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2017020520170105
5850248mj32gcc -m64 -march=core2 -Os -fomit-frame-pointer2017020520170105
5850988mj32gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2017020520170105
5851108mj32gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2017020520170105
5860500mj32gcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2017020520170105
5860616mj32gcc -m64 -march=corei7 -Os -fomit-frame-pointer2017020520170105
5866548mj32gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2017020520170105
5872664mj32gcc -fno-schedule-insns -Os -fomit-frame-pointer2017020520170105
5877508mj32gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2017020520170105
5885180mj32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2017020520170105
5892684mj32gcc -funroll-loops -m64 -Os -fomit-frame-pointer2017020520170105
5899108mj32gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2017020520170105
5902724mj32gcc -funroll-loops -Os -fomit-frame-pointer2017020520170105
5915748mj32gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2017020520170105
5917220mj32gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2017020520170105
5994648mj32gcc -m64 -march=nocona -Os -fomit-frame-pointer2017020520170105
5994912mj32gcc -march=nocona -Os -fomit-frame-pointer2017020520170105
11353104mj32gcc -m64 -march=k8 -O -fomit-frame-pointer2017020520170105
11374148mj32gcc -O -fomit-frame-pointer2017020520170105
11380116mj32gcc -m64 -O -fomit-frame-pointer2017020520170105
11385620mj32gcc -fno-schedule-insns -O -fomit-frame-pointer2017020520170105
11392684mj32gcc -march=k8 -O -fomit-frame-pointer2017020520170105
11430724mj32gcc -march=nocona -O -fomit-frame-pointer2017020520170105
11449120mj32gcc -m64 -march=nocona -O -fomit-frame-pointer2017020520170105
11481960mj32gcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2017020520170105
11490004mj32gcc -m64 -march=corei7 -O -fomit-frame-pointer2017020520170105
11490112mj32gcc -m64 -march=core2 -O -fomit-frame-pointer2017020520170105
11498940mj32gcc -march=barcelona -O -fomit-frame-pointer2017020520170105
11503444mj32gcc -m64 -march=barcelona -O -fomit-frame-pointer2017020520170105
11511928mj32gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2017020520170105
11514008mj32gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2017020520170105
11581432mj32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2017020520170105
57269964mj32cc2017020520170105
63811568mj32gcc -funroll-loops2017020520170105
63939040mj32gcc2017020520170105

Compiler output

Implementation: crypto_scalarmult/nistp256/mj32
Compiler: cc
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: 7, namely:
CompilerImplementations
cc mj32
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
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: 94, namely:
CompilerImplementations
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 -O3 -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 -O3 -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 -O3 -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: 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