Implementation notes: amd64, mace, crypto_scalarmult/nistp256

Computer: mace
Architecture: amd64
CPU ID: AuthenticAMD-00040fb2-178bfbff
SUPERCOP version: 20170105
Operation: crypto_scalarmult
Primitive: nistp256
TimeImplementationCompilerBenchmark dateSUPERCOP version
4469460mj32gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2016111620161009
4483889mj32gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2016111620161009
4617175mj32gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2016111620161009
4617243mj32gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2016111620161009
4630904mj32clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016111620161009
4637914mj32clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments2016111620161009
4684222mj32clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016111620161009
4688609mj32clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016111620161009
4689757mj32gcc -march=nocona -O3 -fomit-frame-pointer2016111620161009
4698260mj32gcc -m64 -march=nocona -O3 -fomit-frame-pointer2016111620161009
4700857mj32clang -O3 -fomit-frame-pointer -Qunused-arguments2016111620161009
4704227mj32gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2016111620161009
4704607mj32clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016111620161009
4716863mj32gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2016111620161009
4875309mj32gcc -march=k8 -O3 -fomit-frame-pointer2016111620161009
4882323mj32gcc -m64 -march=k8 -O3 -fomit-frame-pointer2016111620161009
4890426mj32gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016111620161009
4890991mj32gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2016111620161009
4897197mj32gcc -m64 -march=barcelona -O3 -fomit-frame-pointer2016111620161009
4897212mj32gcc -march=barcelona -O3 -fomit-frame-pointer2016111620161009
4930806mj32gcc -O3 -fomit-frame-pointer2016111620161009
4934184mj32gcc -fno-schedule-insns -O3 -fomit-frame-pointer2016111620161009
4939112mj32gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2016111620161009
4951551mj32gcc -m64 -O3 -fomit-frame-pointer2016111620161009
4952417mj32gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2016111620161009
4972842mj32gcc -funroll-loops -m64 -O3 -fomit-frame-pointer2016111620161009
4980503mj32gcc -funroll-loops -O3 -fomit-frame-pointer2016111620161009
4980870mj32gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2016111620161009
5012217mj32gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2016111620161009
5018907mj32gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2016111620161009
5027036mj32gcc -funroll-loops -O2 -fomit-frame-pointer2016111620161009
5030429mj32gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2016111620161009
5032246mj32gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2016111620161009
5035449mj32gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2016111620161009
5048315mj32gcc -funroll-loops -m64 -O2 -fomit-frame-pointer2016111620161009
5921454mj32gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2016111620161009
5931638mj32gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2016111620161009
6034790mj32gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2016111620161009
6034931mj32gcc -funroll-loops -march=k8 -O -fomit-frame-pointer2016111620161009
6633640mj32gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2016111620161009
6650463mj32gcc -funroll-loops -m64 -O -fomit-frame-pointer2016111620161009
6659322mj32gcc -funroll-loops -O -fomit-frame-pointer2016111620161009
6907655mj32gcc -march=barcelona -O2 -fomit-frame-pointer2016111620161009
6930318mj32gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2016111620161009
6939863mj32gcc -m64 -march=barcelona -O2 -fomit-frame-pointer2016111620161009
6940551mj32gcc -march=k8 -O2 -fomit-frame-pointer2016111620161009
6953451mj32gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016111620161009
6958698mj32gcc -m64 -march=k8 -O2 -fomit-frame-pointer2016111620161009
7001538mj32gcc -march=nocona -O2 -fomit-frame-pointer2016111620161009
7002344mj32gcc -m64 -march=nocona -O2 -fomit-frame-pointer2016111620161009
7118488mj32gcc -O2 -fomit-frame-pointer2016111620161009
7120847mj32gcc -m64 -O2 -fomit-frame-pointer2016111620161009
7120923mj32gcc -fno-schedule-insns -O2 -fomit-frame-pointer2016111620161009
7182770mj32gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2016111620161009
7183563mj32gcc -funroll-loops -march=nocona -O -fomit-frame-pointer2016111620161009
7331179mj32gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2016111620161009
7385524mj32gcc -m64 -march=core2 -O2 -fomit-frame-pointer2016111620161009
7392081mj32gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2016111620161009
7410178mj32gcc -m64 -march=corei7 -O2 -fomit-frame-pointer2016111620161009
7992738mj32gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2016111620161009
7994970mj32gcc -funroll-loops -Os -fomit-frame-pointer2016111620161009
8003199mj32gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2016111620161009
8015352mj32gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2016111620161009
8029664mj32gcc -funroll-loops -m64 -Os -fomit-frame-pointer2016111620161009
8035333mj32gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2016111620161009
8035515mj32gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2016111620161009
8185057mj32gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2016111620161009
8189475mj32gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2016111620161009
9375194mj32gcc -march=nocona -Os -fomit-frame-pointer2016111620161009
9383468mj32gcc -m64 -march=nocona -Os -fomit-frame-pointer2016111620161009
9401591mj32gcc -march=barcelona -Os -fomit-frame-pointer2016111620161009
9407248mj32gcc -m64 -march=barcelona -Os -fomit-frame-pointer2016111620161009
9425719mj32gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016111620161009
9443743mj32gcc -march=k8 -Os -fomit-frame-pointer2016111620161009
9444154mj32gcc -Os -fomit-frame-pointer2016111620161009
9445106mj32gcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2016111620161009
9454589mj32gcc -m64 -Os -fomit-frame-pointer2016111620161009
9457078mj32gcc -fno-schedule-insns -Os -fomit-frame-pointer2016111620161009
9464884mj32gcc -m64 -march=k8 -Os -fomit-frame-pointer2016111620161009
9472214mj32gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2016111620161009
9475228mj32gcc -m64 -march=corei7 -Os -fomit-frame-pointer2016111620161009
9477765mj32gcc -m64 -march=core2 -Os -fomit-frame-pointer2016111620161009
9490925mj32gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2016111620161009
13311430mj32gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016111620161009
13486878mj32gcc -march=barcelona -O -fomit-frame-pointer2016111620161009
13487647mj32gcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2016111620161009
13491490mj32gcc -m64 -march=barcelona -O -fomit-frame-pointer2016111620161009
13501051mj32gcc -m64 -march=k8 -O -fomit-frame-pointer2016111620161009
13501585mj32gcc -march=k8 -O -fomit-frame-pointer2016111620161009
13921542mj32gcc -m64 -march=core2 -O -fomit-frame-pointer2016111620161009
13921877mj32gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2016111620161009
13932337mj32gcc -m64 -march=corei7 -O -fomit-frame-pointer2016111620161009
14038198mj32gcc -O -fomit-frame-pointer2016111620161009
14041862mj32gcc -march=nocona -O -fomit-frame-pointer2016111620161009
14042605mj32gcc -m64 -march=nocona -O -fomit-frame-pointer2016111620161009
14043364mj32gcc -m64 -O -fomit-frame-pointer2016111620161009
14047230mj32gcc -fno-schedule-insns -O -fomit-frame-pointer2016111620161009
14202184mj32gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2016111620161009
68044369mj32gcc2016111620161009
68072131mj32gcc -funroll-loops2016111620161009
68087816mj32cc2016111620161009

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