Implementation notes: x86, floodyberry, crypto_scalarmult/curve25519

Computer: floodyberry
Architecture: x86
CPU ID: GenuineIntel-00010676-bfebfbff
SUPERCOP version: 20140505
Operation: crypto_scalarmult
Primitive: curve25519
TimeImplementationCompilerBenchmark dateSUPERCOP version
2443362athlongcc -m32 -O2 -fomit-frame-pointer2014050820140505
2452187athlongcc -m32 -O3 -fomit-frame-pointer2014050820140505
2452688athlonicc -m32 -O1 -static -xHost -fomit-frame-pointer2014050820140505
2453713athlonicc -m32 -O3 -static -xHost -fomit-frame-pointer2014050820140505
2455950athlonclang -O1 -march=native -m32 -fomit-frame-pointer2014050820140505
2457125athlongcc -m32 -march=native -mtune=native -O2 -fomit-frame-pointer2014050820140505
2461562athlongcc -m32 -march=native -mtune=native -O3 -fomit-frame-pointer2014050820140505
4471950ref10icc -m32 -O3 -static -xHost -fomit-frame-pointer2014050820140505
4552400ref10icc -m32 -O1 -static -xHost -fomit-frame-pointer2014050820140505
4757575ref10clang -O1 -march=native -m32 -fomit-frame-pointer2014050820140505
6786175ref10gcc -m32 -O2 -fomit-frame-pointer2014050820140505
6795688ref10gcc -m32 -O3 -fomit-frame-pointer2014050820140505
6796163ref10gcc -m32 -march=native -mtune=native -O3 -fomit-frame-pointer2014050820140505
6833700ref10gcc -m32 -march=native -mtune=native -O2 -fomit-frame-pointer2014050820140505
43966913refgcc -m32 -O3 -fomit-frame-pointer2014050820140505
44572125refgcc -m32 -march=native -mtune=native -O2 -fomit-frame-pointer2014050820140505
45181487refgcc -m32 -O2 -fomit-frame-pointer2014050820140505
47580912reficc -m32 -O3 -static -xHost -fomit-frame-pointer2014050820140505
48744037refclang -O1 -march=native -m32 -fomit-frame-pointer2014050820140505
50166050reficc -m32 -O1 -static -xHost -fomit-frame-pointer2014050820140505
50436925refgcc -m32 -march=native -mtune=native -O3 -fomit-frame-pointer2014050820140505

Test failure

Implementation: crypto_scalarmult/curve25519/athlon
Compiler: clang -O3 -march=native -m32 -fomit-frame-pointer
error 111

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
clang -O3 -march=native -m32 -fomit-frame-pointer athlon ref ref10

Compiler output

Implementation: crypto_scalarmult/curve25519/donna_c64
Compiler: clang -O1 -march=native -m32 -fomit-frame-pointer
smult.c: 0 libLLVM-3.4.so.1 0x00007f12fe833012 llvm::sys::PrintStackTrace(_IO_FILE*) + 34
smult.c: 1 libLLVM-3.4.so.1 0x00007f12fe8333a1
smult.c: 2 libpthread.so.0 0x00007f12fd699cb0
smult.c: 3 libLLVM-3.4.so.1 0x00007f12fe75563f llvm::SelectionDAG::getNode(unsigned int, llvm::SDLoc, llvm::EVT, llvm::SDValue) + 1279
smult.c: 4 libLLVM-3.4.so.1 0x00007f12fe769ab2
smult.c: 5 libLLVM-3.4.so.1 0x00007f12fe76912a
smult.c: 6 libLLVM-3.4.so.1 0x00007f12fe772c5e llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const + 3630
smult.c: 7 libLLVM-3.4.so.1 0x00007f12fe7c8e1f llvm::TargetLowering::makeLibCall(llvm::SelectionDAG&, llvm::RTLIB::Libcall, llvm::EVT, llvm::SDValue const*, unsigned int, bool, llvm::SDLoc) const + 1087
smult.c: 8 libLLVM-3.4.so.1 0x00007f12fe6da06d
smult.c: 9 libLLVM-3.4.so.1 0x00007f12fe6e552e
smult.c: 10 libLLVM-3.4.so.1 0x00007f12fe6f6bd2
smult.c: 11 libLLVM-3.4.so.1 0x00007f12fe6f7250 llvm::SelectionDAG::LegalizeTypes() + 1248
smult.c: 12 libLLVM-3.4.so.1 0x00007f12fe7ac5a9 llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 233
smult.c: 13 libLLVM-3.4.so.1 0x00007f12fe7b22ab llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 1579
smult.c: 14 libLLVM-3.4.so.1 0x00007f12fe7b3585 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 757
smult.c: 15 libLLVM-3.4.so.1 0x00007f12fe16678c llvm::FPPassManager::runOnFunction(llvm::Function&) + 540
smult.c: 16 libLLVM-3.4.so.1 0x00007f12fe16682b llvm::FPPassManager::runOnModule(llvm::Module&) + 43
smult.c: 17 libLLVM-3.4.so.1 0x00007f12fe16636e llvm::MPPassManager::runOnModule(llvm::Module&) + 542
smult.c: 18 libLLVM-3.4.so.1 0x00007f12fe1664f0 llvm::PassManagerImpl::run(llvm::Module&) + 176
smult.c: 19 clang 0x00000000007008ee clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::Module*, clang::BackendAction, llvm::raw_ostream*) + 4622
smult.c: 20 clang 0x00000000006fdf90
smult.c: 21 clang 0x0000000000870c94 clang::ParseAST(clang::Sema&, bool, bool) + 372
smult.c: 22 clang 0x000000000059dfca clang::FrontendAction::Execute() + 202
smult.c: 23 clang 0x000000000057e72d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 285
smult.c: 24 clang 0x0000000000566d0a clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1562
smult.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O1 -march=native -m32 -fomit-frame-pointer donna_c64

Compiler output

Implementation: crypto_scalarmult/curve25519/athlon
Compiler: clang -O1 -march=native -m32 -fomit-frame-pointer
smult.c: smult.c:20:11: warning: implicit declaration of function 'crypto_scalarmult_curve25519_athlon_square' is invalid in C99 [-Wimplicit-function-declaration]
smult.c: /* 2 */ square(z2,z);
smult.c: ^
smult.c: smult.c:4:16: note: expanded from macro 'square'
smult.c: #define square crypto_scalarmult_curve25519_athlon_square
smult.c: ^
smult.c: smult.c:23:11: warning: implicit declaration of function 'crypto_scalarmult_curve25519_athlon_mult' is invalid in C99 [-Wimplicit-function-declaration]
smult.c: /* 9 */ mult(z9,t0,z);
smult.c: ^
smult.c: smult.c:3:14: note: expanded from macro 'mult'
smult.c: #define mult crypto_scalarmult_curve25519_athlon_mult
smult.c: ^
smult.c: smult.c:84:3: warning: implicit declaration of function 'crypto_scalarmult_curve25519_athlon_init' is invalid in C99 [-Wimplicit-function-declaration]
smult.c: crypto_scalarmult_curve25519_athlon_init();
smult.c: ^
smult.c: smult.c:85:3: warning: implicit declaration of function 'crypto_scalarmult_curve25519_athlon_todouble' is invalid in C99 [-Wimplicit-function-declaration]
smult.c: crypto_scalarmult_curve25519_athlon_todouble(work,p);
smult.c: ^
smult.c: smult.c:86:3: warning: implicit declaration of function 'crypto_scalarmult_curve25519_athlon_mainloop' is invalid in C99 [-Wimplicit-function-declaration]
smult.c: crypto_scalarmult_curve25519_athlon_mainloop(work,e);
smult.c: ^
smult.c: smult.c:89:3: warning: implicit declaration of function 'crypto_scalarmult_curve25519_athlon_fromdouble' is invalid in C99 [-Wimplicit-function-declaration]
smult.c: crypto_scalarmult_curve25519_athlon_fromdouble(q,work + 20);
smult.c: ^
smult.c: 6 warnings generated.
const.s: clang: warning: argument unused during compilation: '-fomit-frame-pointer'
const.s: clang: warning: argument unused during compilation: '-D SUPERCOP'
const.s: clang: warning: argument unused during compilation: '-I .'
const.s: clang: warning: argument unused during compilation: '-I /home/bloom/supercop-20140505/supercop-data/floodyberry/x86/include'
fromdouble.s: clang: warning: argument unused during compilation: '-fomit-frame-pointer'
fromdouble.s: clang: warning: argument unused during compilation: '-D SUPERCOP'
fromdouble.s: clang: warning: argument unused during compilation: '-I .'
fromdouble.s: clang: warning: argument unused during compilation: '-I /home/bloom/supercop-20140505/supercop-data/floodyberry/x86/include'
init.s: clang: warning: argument unused during compilation: '-fomit-frame-pointer'
init.s: clang: warning: argument unused during compilation: '-D SUPERCOP'
init.s: clang: warning: argument unused during compilation: '-I .'
init.s: clang: warning: argument unused during compilation: '-I /home/bloom/supercop-20140505/supercop-data/floodyberry/x86/include'
mainloop.s: clang: warning: argument unused during compilation: '-fomit-frame-pointer'
mainloop.s: clang: warning: argument unused during compilation: '-D SUPERCOP'
mainloop.s: clang: warning: argument unused during compilation: '-I .'
mainloop.s: clang: warning: argument unused during compilation: '-I /home/bloom/supercop-20140505/supercop-data/floodyberry/x86/include'
mult.s: clang: warning: argument unused during compilation: '-fomit-frame-pointer'
mult.s: clang: warning: argument unused during compilation: '-D SUPERCOP'
mult.s: clang: warning: argument unused during compilation: '-I .'
mult.s: clang: warning: argument unused during compilation: '-I /home/bloom/supercop-20140505/supercop-data/floodyberry/x86/include'
square.s: clang: warning: argument unused during compilation: '-fomit-frame-pointer'
square.s: clang: warning: argument unused during compilation: '-D SUPERCOP'
square.s: clang: warning: argument unused during compilation: '-I .'
square.s: clang: warning: argument unused during compilation: '-I /home/bloom/supercop-20140505/supercop-data/floodyberry/x86/include'
todouble.s: clang: warning: argument unused during compilation: '-fomit-frame-pointer'
todouble.s: clang: warning: argument unused during compilation: '-D SUPERCOP'
todouble.s: clang: warning: argument unused during compilation: '-I .'
todouble.s: clang: warning: argument unused during compilation: '-I /home/bloom/supercop-20140505/supercop-data/floodyberry/x86/include'

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -O1 -march=native -m32 -fomit-frame-pointer athlon
clang -O3 -march=native -m32 -fomit-frame-pointer athlon

Compiler output

Implementation: crypto_scalarmult/curve25519/donna_c64
Compiler: clang -O3 -march=native -m32 -fomit-frame-pointer
smult.c: 0 libLLVM-3.4.so.1 0x00007f5614c1b012 llvm::sys::PrintStackTrace(_IO_FILE*) + 34
smult.c: 1 libLLVM-3.4.so.1 0x00007f5614c1b3a1
smult.c: 2 libpthread.so.0 0x00007f5613a81cb0
smult.c: 3 libLLVM-3.4.so.1 0x00007f5614b3d63f llvm::SelectionDAG::getNode(unsigned int, llvm::SDLoc, llvm::EVT, llvm::SDValue) + 1279
smult.c: 4 libLLVM-3.4.so.1 0x00007f5614b51ab2
smult.c: 5 libLLVM-3.4.so.1 0x00007f5614b5112a
smult.c: 6 libLLVM-3.4.so.1 0x00007f5614b5ac5e llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const + 3630
smult.c: 7 libLLVM-3.4.so.1 0x00007f5614bb0e1f llvm::TargetLowering::makeLibCall(llvm::SelectionDAG&, llvm::RTLIB::Libcall, llvm::EVT, llvm::SDValue const*, unsigned int, bool, llvm::SDLoc) const + 1087
smult.c: 8 libLLVM-3.4.so.1 0x00007f5614ac206d
smult.c: 9 libLLVM-3.4.so.1 0x00007f5614acd52e
smult.c: 10 libLLVM-3.4.so.1 0x00007f5614adebd2
smult.c: 11 libLLVM-3.4.so.1 0x00007f5614adf250 llvm::SelectionDAG::LegalizeTypes() + 1248
smult.c: 12 libLLVM-3.4.so.1 0x00007f5614b945a9 llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 233
smult.c: 13 libLLVM-3.4.so.1 0x00007f5614b9a2ab llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 1579
smult.c: 14 libLLVM-3.4.so.1 0x00007f5614b9b585 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 757
smult.c: 15 libLLVM-3.4.so.1 0x00007f561454e78c llvm::FPPassManager::runOnFunction(llvm::Function&) + 540
smult.c: 16 libLLVM-3.4.so.1 0x00007f561454e82b llvm::FPPassManager::runOnModule(llvm::Module&) + 43
smult.c: 17 libLLVM-3.4.so.1 0x00007f561454e36e llvm::MPPassManager::runOnModule(llvm::Module&) + 542
smult.c: 18 libLLVM-3.4.so.1 0x00007f561454e4f0 llvm::PassManagerImpl::run(llvm::Module&) + 176
smult.c: 19 clang 0x00000000007008ee clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::Module*, clang::BackendAction, llvm::raw_ostream*) + 4622
smult.c: 20 clang 0x00000000006fdf90
smult.c: 21 clang 0x0000000000870c94 clang::ParseAST(clang::Sema&, bool, bool) + 372
smult.c: 22 clang 0x000000000059dfca clang::FrontendAction::Execute() + 202
smult.c: 23 clang 0x000000000057e72d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 285
smult.c: 24 clang 0x0000000000566d0a clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1562
smult.c: ...

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

Compiler output

Implementation: crypto_scalarmult/curve25519/donna_c64
Compiler: gcc -m32 -O2 -fomit-frame-pointer
smult.c: smult.c:34:1: error: unable to emulate 'TI'
smult.c: smult.c: In function 'fscalar_product':
smult.c: smult.c:76:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:79:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:82:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:85:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:88:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c: In function 'fmul':
smult.c: smult.c:132:19: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:133:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:134:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:135:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:136:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c: In function 'fsquare_times':
smult.c: smult.c:173:21: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:174:5: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:175:5: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:176:5: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:177:5: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c: In function 'fcontract':
smult.c: smult.c:213:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:214:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:215:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:216:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: smult.c:217:3: warning: right shift count >gt;= width of type [enabled by default]
smult.c: ...

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

Compiler output

Implementation: crypto_scalarmult/curve25519/donna_c64
Compiler: icc -m32 -O1 -static -xHost -fomit-frame-pointer
smult.c: smult.c(34): error: there is no type with the width specified
smult.c: typedef unsigned uint128_t __attribute__((mode(TI)));
smult.c: ^
smult.c:
smult.c: smult.c(40): warning #3415: the "always_inline" attribute is ignored on non-inline functions
smult.c: static void force_inline
smult.c: ^
smult.c:
smult.c: smult.c(55): warning #3415: the "always_inline" attribute is ignored on non-inline functions
smult.c: static void force_inline
smult.c: ^
smult.c:
smult.c: smult.c(69): warning #3415: the "always_inline" attribute is ignored on non-inline functions
smult.c: static void force_inline
smult.c: ^
smult.c:
smult.c: smult.c(99): warning #3415: the "always_inline" attribute is ignored on non-inline functions
smult.c: static void force_inline
smult.c: ^
smult.c:
smult.c: smult.c(148): warning #3415: the "always_inline" attribute is ignored on non-inline functions
smult.c: static void force_inline
smult.c: ^
smult.c:
smult.c: compilation aborted for smult.c (code 2)

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
icc -m32 -O1 -static -xHost -fomit-frame-pointer donna_c64
icc -m32 -O3 -static -xHost -fomit-frame-pointer donna_c64

Compiler output

Implementation: crypto_scalarmult/curve25519/athlon
Compiler: icc -m32 -O1 -static -xHost -fomit-frame-pointer
try.c: ld: warning: skipping incompatible /opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/libirc.a while searching for irc
try.c: ld: warning: skipping incompatible /opt/intel/composer_xe_2013_sp1.0.080/ipp/../compiler/lib/intel64/libirc.a while searching for irc
try.c: ld: warning: skipping incompatible /opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/libirc.a while searching for irc
try.c: ld: warning: skipping incompatible /opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/libirc.a while searching for irc
try.c: ld: warning: skipping incompatible /opt/intel/composer_xe_2013_sp1.0.080/ipp/../compiler/lib/intel64/libirc.a while searching for irc
try.c: ld: warning: skipping incompatible /opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/libirc.a while searching for irc
measure.c: ld: warning: skipping incompatible /opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/libirc.a while searching for irc
measure.c: ld: warning: skipping incompatible /opt/intel/composer_xe_2013_sp1.0.080/ipp/../compiler/lib/intel64/libirc.a while searching for irc
measure.c: ld: warning: skipping incompatible /opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/libirc.a while searching for irc

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
icc -m32 -O1 -static -xHost -fomit-frame-pointer athlon ref ref10
icc -m32 -O3 -static -xHost -fomit-frame-pointer athlon ref ref10