Implementation notes: amd64, sliver, crypto_scalarmult/curve25519

Computer: sliver
Architecture: amd64
CPU ID: GenuineIntel-00040651-bfebfbff
SUPERCOP version: 20160731
Operation: crypto_scalarmult
Primitive: curve25519
TimeImplementationCompilerBenchmark dateSUPERCOP version
3052440donnagcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072520160718
3129450donnagcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072520160718
3130032donna_c64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072520160718
3571926donnagcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072520160718
3658656donnagcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072520160718
4127844donna_c64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072520160718
4278942donna_c64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072520160718
4282398donna_c64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072520160718
4401522donna_c64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072520160718
4568550ref10gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072520160718
4588620ref10gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072520160718
4719222ref10gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072520160718
4760874ref10gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072520160718
5695860ref10clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072520160718
49838700refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072520160718
66797958refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072520160718
72606078refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072520160718
78463932refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072520160718
79551894refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072520160718

Test failure

Implementation: crypto_scalarmult/curve25519/donna
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
error 111

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments donna

Compiler output

Implementation: crypto_scalarmult/curve25519/donna_c64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /tmp/try-anything-897fd4.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp/try-anything-910041.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments donna_c64

Compiler output

Implementation: crypto_scalarmult/curve25519/ref10
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /tmp/try-anything-982990.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp/try-anything-0669fd.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments ref10

Compiler output

Implementation: crypto_scalarmult/curve25519/ref
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /tmp/try-anything-aaf78c.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp/try-anything-0943a3.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments ref

Compiler output

Implementation: crypto_scalarmult/curve25519/donna
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /tmp/try-anything-f688d1.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments donna

Compiler output

Implementation: crypto_scalarmult/curve25519/amd64-51
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /usr/bin/ld: crypto_scalarmult_curve25519.a(fe25519_mul.o): relocation R_X86_64_32S against `crypto_scalarmult_curve25519_amd64_51_REDMASK51' can not be used when making a shared object; recompile with -fPIC
try.c: crypto_scalarmult_curve25519.a: could not read symbols: Bad value
try.c: clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments amd64-51

Compiler output

Implementation: crypto_scalarmult/curve25519/amd64-64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /usr/bin/ld: crypto_scalarmult_curve25519.a(fe25519_mul.o): relocation R_X86_64_32S against `crypto_scalarmult_curve25519_amd64_64_38' can not be used when making a shared object; recompile with -fPIC
try.c: crypto_scalarmult_curve25519.a: could not read symbols: Bad value
try.c: clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments amd64-64

Compiler output

Implementation: crypto_scalarmult/curve25519/sandy2x
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /usr/bin/ld: crypto_scalarmult_curve25519.a(fe51_mul.o): relocation R_X86_64_32S against `crypto_scalarmult_curve25519_sandy2x_REDMASK51' can not be used when making a shared object; recompile with -fPIC
try.c: crypto_scalarmult_curve25519.a: could not read symbols: Bad value
try.c: clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments sandy2x

Compiler output

Implementation: crypto_scalarmult/curve25519/sandy2x
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
ladder.S: ladder.S: Assembler messages:
ladder.S: ladder.S:807: Error: no such instruction: `blendps $12,%xmm11,%xmm10'
ladder.S: ladder.S:1032: Error: no such instruction: `vbroadcastss 0(%rsi),%xmm10'
ladder.S: ladder.S:1052: Error: no such instruction: `vpxor %xmm11,%xmm0,%xmm13'
ladder.S: ladder.S:1072: Error: no such instruction: `vpxor %xmm12,%xmm1,%xmm13'
ladder.S: ladder.S:1102: Error: no such instruction: `vpxor %xmm13,%xmm2,%xmm15'
ladder.S: ladder.S:1122: Error: no such instruction: `vpxor %xmm14,%xmm3,%xmm15'
ladder.S: ladder.S:1162: Error: no such instruction: `vpxor %xmm13,%xmm4,%xmm15'
ladder.S: ladder.S:1182: Error: no such instruction: `vpxor %xmm14,%xmm5,%xmm15'
ladder.S: ladder.S:1222: Error: no such instruction: `vpxor %xmm13,%xmm6,%xmm15'
ladder.S: ladder.S:1242: Error: no such instruction: `vpxor %xmm14,%xmm7,%xmm15'
ladder.S: ladder.S:1282: Error: no such instruction: `vpxor %xmm13,%xmm8,%xmm15'
ladder.S: ladder.S:1302: Error: no such instruction: `vpxor %xmm14,%xmm9,%xmm15'
ladder.S: ladder.S:1332: Error: no such instruction: `vpaddq crypto_scalarmult_curve25519_sandy2x_subc0,%xmm11,%xmm10'
ladder.S: ladder.S:1347: Error: no such instruction: `vpunpckhqdq %xmm10,%xmm11,%xmm12'
ladder.S: ladder.S:1352: Error: no such instruction: `vpunpcklqdq %xmm10,%xmm11,%xmm10'
ladder.S: ladder.S:1357: Error: no such instruction: `vpaddq %xmm1,%xmm0,%xmm11'
ladder.S: ladder.S:1372: Error: no such instruction: `vpunpckhqdq %xmm11,%xmm0,%xmm1'
ladder.S: ladder.S:1377: Error: no such instruction: `vpunpcklqdq %xmm11,%xmm0,%xmm0'
ladder.S: ladder.S:1382: Error: no such instruction: `vpmuludq %xmm0,%xmm10,%xmm11'
ladder.S: ladder.S:1387: Error: no such instruction: `vpmuludq %xmm1,%xmm10,%xmm13'
ladder.S: ladder.S:1402: Error: no such instruction: `vpmuludq %xmm0,%xmm12,%xmm14'
ladder.S: ladder.S:1417: Error: no such instruction: `vpmuludq %xmm1,%xmm12,%xmm0'
ladder.S: ladder.S:1427: Error: no such instruction: `vpaddq %xmm3,%xmm2,%xmm1'
ladder.S: ladder.S:1442: Error: no such instruction: `vpunpckhqdq %xmm1,%xmm2,%xmm3'
ladder.S: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv sandy2x
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv sandy2x
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv sandy2x
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv sandy2x

Compiler output

Implementation: crypto_scalarmult/curve25519/donna_c64
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
try.c: /tmp//ccLwAADK.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//cctJ7Dft.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv donna_c64

Compiler output

Implementation: crypto_scalarmult/curve25519/donna
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
try.c: /tmp//ccX2rUTt.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//cc41h5BF.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv donna

Compiler output

Implementation: crypto_scalarmult/curve25519/ref10
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
try.c: /tmp//ccrjanZS.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//ccGwkSvu.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv ref10

Compiler output

Implementation: crypto_scalarmult/curve25519/ref
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
try.c: /tmp//ccsudxx2.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//cchSB2vE.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv ref

Compiler output

Implementation: crypto_scalarmult/curve25519/amd64-51
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
try.c: /usr/bin/ld: crypto_scalarmult_curve25519.a(fe25519_mul.o): relocation R_X86_64_32S against `crypto_scalarmult_curve25519_amd64_51_REDMASK51' can not be used when making a shared object; recompile with -fPIC
try.c: crypto_scalarmult_curve25519.a: could not read symbols: Bad value
try.c: collect2: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv amd64-51
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv amd64-51
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv amd64-51
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv amd64-51

Compiler output

Implementation: crypto_scalarmult/curve25519/amd64-64
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
try.c: /usr/bin/ld: crypto_scalarmult_curve25519.a(fe25519_mul.o): relocation R_X86_64_32S against `crypto_scalarmult_curve25519_amd64_64_38' can not be used when making a shared object; recompile with -fPIC
try.c: crypto_scalarmult_curve25519.a: could not read symbols: Bad value
try.c: collect2: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv amd64-64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv amd64-64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv amd64-64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv amd64-64

Compiler output

Implementation: crypto_scalarmult/curve25519/ref10
Compiler: gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv
try.c: /tmp//cc7mh4q0.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//ccPwp3hU.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv ref10

Compiler output

Implementation: crypto_scalarmult/curve25519/donna
Compiler: gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv
try.c: /tmp//ccB3ct6M.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//cc6EZVWe.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv donna

Compiler output

Implementation: crypto_scalarmult/curve25519/ref
Compiler: gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv
try.c: /tmp//ccZ1IdbS.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//cctZwIOl.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv ref

Compiler output

Implementation: crypto_scalarmult/curve25519/donna_c64
Compiler: gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv
try.c: /tmp//ccfr5Ttt.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//ccKbY47g.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv donna_c64

Compiler output

Implementation: crypto_scalarmult/curve25519/ref
Compiler: gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv
try.c: /tmp//ccCflWc0.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//cc3Kngz4.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv ref

Compiler output

Implementation: crypto_scalarmult/curve25519/ref10
Compiler: gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv
try.c: /tmp//cctgr9XC.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//ccTES1vq.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv ref10

Compiler output

Implementation: crypto_scalarmult/curve25519/donna_c64
Compiler: gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv
try.c: /tmp//ccwWL0XI.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//cc6g1qpv.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv donna_c64

Compiler output

Implementation: crypto_scalarmult/curve25519/donna
Compiler: gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv
try.c: /tmp//ccwzmiUZ.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//ccmaK7dz.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv donna

Compiler output

Implementation: crypto_scalarmult/curve25519/donna
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv
try.c: /tmp//cc0HLPSB.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//ccRpI8kG.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv donna

Compiler output

Implementation: crypto_scalarmult/curve25519/ref10
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv
try.c: /tmp//ccPREPJU.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//cc9ex4vA.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv ref10

Compiler output

Implementation: crypto_scalarmult/curve25519/ref
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv
try.c: /tmp//ccTFw1Oj.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//ccMnH2j9.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv ref

Compiler output

Implementation: crypto_scalarmult/curve25519/donna_c64
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv
try.c: /tmp//ccTcr0YF.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: /tmp//ccbIbOTB.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv donna_c64