Implementation notes: amd64, genji154, crypto_dh/surf2113

Computer: genji154
Architecture: amd64
CPU ID: GenuineIntel-00050671-bfebfbff
SUPERCOP version: 20170228
Operation: crypto_dh
Primitive: surf2113
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
4152265? ? ?? ? ?mpfqgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2017022620170105
4224350? ? ?? ? ?mpfqgcc_-m64_-march=native_-mtune=native_-O3_-fomit-frame-pointer2017022620170105
4309136? ? ?? ? ?mpfqgcc_-m64_-march=native_-mtune=native_-O2_-fomit-frame-pointer2017022620170105
4351984? ? ?? ? ?mpfqgcc_-m64_-march=native_-mtune=native_-O_-fomit-frame-pointer2017022620170105
4424264? ? ?? ? ?mpfqgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2017022620170105
4630990? ? ?? ? ?mpfqgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2017022620170105
4747080? ? ?? ? ?mpfqgcc_-m64_-march=core2_-msse4.1_-O2_-fomit-frame-pointer2017022620170105
4747808? ? ?? ? ?mpfqgcc_-m64_-march=native_-mtune=native_-Os_-fomit-frame-pointer2017022620170105
4748510? ? ?? ? ?mpfqgcc_-m64_-march=core2_-O2_-fomit-frame-pointer2017022620170105
4749706? ? ?? ? ?mpfqgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2017022620170105
4795583? ? ?? ? ?mpfqgcc_-m64_-march=core2_-msse4_-O2_-fomit-frame-pointer2017022620170105
4906213? ? ?? ? ?mpfqgcc_-O2_-fomit-frame-pointer2017022620170105
4912323? ? ?? ? ?mpfqgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2017022620170105
4942678? ? ?? ? ?mpfqgcc_-march=nocona_-O2_-fomit-frame-pointer2017022620170105
4946344? ? ?? ? ?mpfqgcc_-m64_-march=core2_-msse4_-O_-fomit-frame-pointer2017022620170105
4951622? ? ?? ? ?mpfqgcc_-m64_-march=nocona_-O2_-fomit-frame-pointer2017022620170105
4960813? ? ?? ? ?mpfqgcc_-funroll-loops_-march=nocona_-O_-fomit-frame-pointer2017022620170105
4962594? ? ?? ? ?mpfqgcc_-march=barcelona_-O2_-fomit-frame-pointer2017022620170105
4987827? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-Os_-fomit-frame-pointer2017022620170105
4995978? ? ?? ? ?mpfqgcc_-m64_-march=core2_-O_-fomit-frame-pointer2017022620170105
5015946? ? ?? ? ?mpfqgcc_-m64_-O2_-fomit-frame-pointer2017022620170105
5046652? ? ?? ? ?mpfqgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2017022620170105
5047965? ? ?? ? ?mpfqgcc_-m64_-march=k8_-O2_-fomit-frame-pointer2017022620170105
5080218? ? ?? ? ?mpfqgcc_-m64_-march=core2_-msse4_-Os_-fomit-frame-pointer2017022620170105
5089188? ? ?? ? ?mpfqgcc_-m64_-march=core2_-msse4.1_-Os_-fomit-frame-pointer2017022620170105
5091736? ? ?? ? ?mpfqgcc_-m64_-march=barcelona_-O2_-fomit-frame-pointer2017022620170105
5098730? ? ?? ? ?mpfqgcc_-m64_-march=nocona_-O_-fomit-frame-pointer2017022620170105
5103345? ? ?? ? ?mpfqgcc_-m64_-march=core2_-Os_-fomit-frame-pointer2017022620170105
5104151? ? ?? ? ?mpfqgcc_-funroll-loops_-Os_-fomit-frame-pointer2017022620170105
5111067? ? ?? ? ?mpfqgcc_-m64_-march=core2_-msse4.1_-O_-fomit-frame-pointer2017022620170105
5117125? ? ?? ? ?mpfqgcc_-march=k8_-O2_-fomit-frame-pointer2017022620170105
5131243? ? ?? ? ?mpfqgcc_-march=nocona_-Os_-fomit-frame-pointer2017022620170105
5149651? ? ?? ? ?mpfqgcc_-funroll-loops_-march=k8_-Os_-fomit-frame-pointer2017022620170105
5161897? ? ?? ? ?mpfqgcc_-funroll-loops_-march=nocona_-Os_-fomit-frame-pointer2017022620170105
5174637? ? ?? ? ?mpfqgcc_-m64_-march=nocona_-Os_-fomit-frame-pointer2017022620170105
5198505? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=barcelona_-Os_-fomit-frame-pointer2017022620170105
5198726? ? ?? ? ?mpfqgcc_-march=nocona_-O_-fomit-frame-pointer2017022620170105
5216016? ? ?? ? ?mpfqgcc_-m64_-Os_-fomit-frame-pointer2017022620170105
5217095? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=k8_-Os_-fomit-frame-pointer2017022620170105
5221671? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=nocona_-Os_-fomit-frame-pointer2017022620170105
5235165? ? ?? ? ?mpfqgcc_-m64_-march=core2_-O3_-fomit-frame-pointer2017022620170105
5251246? ? ?? ? ?mpfqgcc_-funroll-loops_-march=barcelona_-Os_-fomit-frame-pointer2017022620170105
5258123? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=barcelona_-O_-fomit-frame-pointer2017022620170105
5283642? ? ?? ? ?mpfqgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2017022620170105
5312788? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=nocona_-O_-fomit-frame-pointer2017022620170105
5326672? ? ?? ? ?mpfqgcc_-m64_-march=core2_-msse4_-O3_-fomit-frame-pointer2017022620170105
5334693? ? ?? ? ?mpfqgcc_-Os_-fomit-frame-pointer2017022620170105
5342740? ? ?? ? ?mpfqgcc_-funroll-loops_-march=barcelona_-O_-fomit-frame-pointer2017022620170105
5367453? ? ?? ? ?mpfqgcc_-m64_-march=core-avx2_-Os_-fomit-frame-pointer2017022620170105
5370807? ? ?? ? ?mpfqgcc_-m64_-march=k8_-Os_-fomit-frame-pointer2017022620170105
5375695? ? ?? ? ?mpfqgcc_-m64_-march=barcelona_-Os_-fomit-frame-pointer2017022620170105
5389475? ? ?? ? ?mpfqgcc_-m64_-march=corei7-avx_-Os_-fomit-frame-pointer2017022620170105
5398055? ? ?? ? ?mpfqgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2017022620170105
5406375? ? ?? ? ?mpfqgcc_-march=k8_-Os_-fomit-frame-pointer2017022620170105
5450562? ? ?? ? ?mpfqgcc_-m64_-march=core-avx-i_-Os_-fomit-frame-pointer2017022620170105
5487352? ? ?? ? ?mpfqgcc_-m64_-march=barcelona_-O_-fomit-frame-pointer2017022620170105
5500833? ? ?? ? ?mpfqgcc_-march=barcelona_-O_-fomit-frame-pointer2017022620170105
5506670? ? ?? ? ?mpfqgcc_-m64_-march=core2_-msse4.1_-O3_-fomit-frame-pointer2017022620170105
5534919? ? ?? ? ?mpfqgcc_-O3_-fomit-frame-pointer2017022620170105
5553522? ? ?? ? ?mpfqgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2017022620170105
5595941? ? ?? ? ?mpfqgcc_-march=barcelona_-Os_-fomit-frame-pointer2017022620170105
5598502? ? ?? ? ?mpfqgcc_-O_-fomit-frame-pointer2017022620170105
5635812? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-O_-fomit-frame-pointer2017022620170105
5652556? ? ?? ? ?mpfqgcc_-m64_-O3_-fomit-frame-pointer2017022620170105
5678374? ? ?? ? ?mpfqgcc_-funroll-loops_-march=k8_-O_-fomit-frame-pointer2017022620170105
5680623? ? ?? ? ?mpfqgcc_-march=k8_-O_-fomit-frame-pointer2017022620170105
5683574? ? ?? ? ?mpfqgcc_-m64_-O_-fomit-frame-pointer2017022620170105
5685927? ? ?? ? ?mpfqgcc_-m64_-march=k8_-O_-fomit-frame-pointer2017022620170105
5725603? ? ?? ? ?mpfqgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2017022620170105
5768802? ? ?? ? ?mpfqgcc_-m64_-march=corei7_-Os_-fomit-frame-pointer2017022620170105
5801822? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=k8_-O_-fomit-frame-pointer2017022620170105
5919992? ? ?? ? ?mpfqgcc_-funroll-loops_-O_-fomit-frame-pointer2017022620170105
6204640? ? ?? ? ?mpfqgcc_-march=nocona_-O3_-fomit-frame-pointer2017022620170105
6269744? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=k8_-O3_-fomit-frame-pointer2017022620170105
6342609? ? ?? ? ?mpfqgcc_-m64_-march=nocona_-O3_-fomit-frame-pointer2017022620170105
6400095? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=barcelona_-O3_-fomit-frame-pointer2017022620170105
6419283? ? ?? ? ?mpfqgcc_-funroll-loops_-march=k8_-O3_-fomit-frame-pointer2017022620170105
6479226? ? ?? ? ?mpfqgcc_-funroll-loops_-march=barcelona_-O3_-fomit-frame-pointer2017022620170105
6520345? ? ?? ? ?mpfqgcc_-funroll-loops_-march=barcelona_-O2_-fomit-frame-pointer2017022620170105
6540482? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=barcelona_-O2_-fomit-frame-pointer2017022620170105
6571383? ? ?? ? ?mpfqgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2017022620170105
6587594? ? ?? ? ?mpfqgcc_-funroll-loops_-O2_-fomit-frame-pointer2017022620170105
6597357? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-O2_-fomit-frame-pointer2017022620170105
6767657? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=k8_-O2_-fomit-frame-pointer2017022620170105
6885723? ? ?? ? ?mpfqgcc_-funroll-loops_-march=k8_-O2_-fomit-frame-pointer2017022620170105
6945705? ? ?? ? ?mpfqgcc_-funroll-loops_-march=nocona_-O2_-fomit-frame-pointer2017022620170105
7154953? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=nocona_-O2_-fomit-frame-pointer2017022620170105
7427628? ? ?? ? ?mpfqgcc_-march=barcelona_-O3_-fomit-frame-pointer2017022620170105
7451210? ? ?? ? ?mpfqgcc_-m64_-march=barcelona_-O3_-fomit-frame-pointer2017022620170105
7589543? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-march=nocona_-O3_-fomit-frame-pointer2017022620170105
7627854? ? ?? ? ?mpfqgcc_-funroll-loops_-O3_-fomit-frame-pointer2017022620170105
7636733? ? ?? ? ?mpfqgcc_-funroll-loops_-m64_-O3_-fomit-frame-pointer2017022620170105
7754422? ? ?? ? ?mpfqgcc_-march=k8_-O3_-fomit-frame-pointer2017022620170105
7757282? ? ?? ? ?mpfqgcc_-m64_-march=k8_-O3_-fomit-frame-pointer2017022620170105
7770386? ? ?? ? ?mpfqgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2017022620170105
7822139? ? ?? ? ?mpfqgcc_-m64_-march=corei7-avx_-O2_-fomit-frame-pointer2017022620170105
7866755? ? ?? ? ?mpfqgcc_-funroll-loops_-march=nocona_-O3_-fomit-frame-pointer2017022620170105
7929740? ? ?? ? ?mpfqgcc_-m64_-march=core-avx2_-O2_-fomit-frame-pointer2017022620170105
8196448? ? ?? ? ?mpfqgcc_-m64_-march=core-avx-i_-O2_-fomit-frame-pointer2017022620170105
8491483? ? ?? ? ?mpfqgcc_-m64_-march=core-avx2_-O_-fomit-frame-pointer2017022620170105
8951878? ? ?? ? ?mpfqgcc_-m64_-march=core-avx-i_-O_-fomit-frame-pointer2017022620170105
8966607? ? ?? ? ?mpfqgcc_-m64_-march=corei7-avx_-O_-fomit-frame-pointer2017022620170105
9891076? ? ?? ? ?mpfqgcc_-m64_-march=core-avx-i_-O3_-fomit-frame-pointer2017022620170105
9898616? ? ?? ? ?mpfqgcc_-m64_-march=corei7-avx_-O3_-fomit-frame-pointer2017022620170105
11033620? ? ?? ? ?mpfqgcc_-m64_-march=core-avx2_-O3_-fomit-frame-pointer2017022620170105
16505307? ? ?? ? ?mpfqgcc_-m64_-march=corei7_-O2_-fomit-frame-pointer2017022620170105
17784546? ? ?? ? ?mpfqgcc_-m64_-march=corei7_-O3_-fomit-frame-pointer2017022620170105
18159362? ? ?? ? ?mpfqgcc_-m64_-march=corei7_-O_-fomit-frame-pointer2017022620170105
22359428? ? ?? ? ?mpfqgcc_-funroll-loops2017022620170105
22392422? ? ?? ? ?mpfqgcc2017022620170105
22872681? ? ?? ? ?mpfqcc2017022620170105

Compiler output

Implementation: crypto_dh/surf2113/mpfq
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
Surf2_113.c: In file included from Surf2_113.c:11:
Surf2_113.c: In file included from ./field.h:1:
Surf2_113.c: In file included from ./mpfq_2_113.h:5:
Surf2_113.c: ./x86_64/mpfq_2_113.h:714:14: error: use of unknown builtin '__builtin_ia32_pslldqi128' [-Wimplicit-function-declaration]
Surf2_113.c: r.s = t0 ^ SHLD(t1, 64);
Surf2_113.c: ^
Surf2_113.c: ./x86_64/mpfq_2_113.h:571:25: note: expanded from macro 'SHLD'
Surf2_113.c: #define SHLD(x,r) (v2di)__builtin_ia32_pslldqi128 ((gcc43bugfix) (x),(r))
Surf2_113.c: ^
Surf2_113.c: ./x86_64/mpfq_2_113.h:714:14: error: invalid conversion between vector type 'v2di' (vector of 2 'uint64_t' values) and integer type 'int' of different size
Surf2_113.c: r.s = t0 ^ SHLD(t1, 64);
Surf2_113.c: ^~~~~~~~~~~~
Surf2_113.c: ./x86_64/mpfq_2_113.h:571:19: note: expanded from macro 'SHLD'
Surf2_113.c: #define SHLD(x,r) (v2di)__builtin_ia32_pslldqi128 ((gcc43bugfix) (x),(r))
Surf2_113.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Surf2_113.c: ./x86_64/mpfq_2_113.h:721:14: error: use of unknown builtin '__builtin_ia32_psrldqi128' [-Wimplicit-function-declaration]
Surf2_113.c: r.s = t2 ^ SHRD(t1, 64);
Surf2_113.c: ^
Surf2_113.c: ./x86_64/mpfq_2_113.h:572:25: note: expanded from macro 'SHRD'
Surf2_113.c: #define SHRD(x,r) (v2di)__builtin_ia32_psrldqi128 ((gcc43bugfix) (x),(r))
Surf2_113.c: ^
Surf2_113.c: ./x86_64/mpfq_2_113.h:721:14: error: invalid conversion between vector type 'v2di' (vector of 2 'uint64_t' values) and integer type 'int' of different size
Surf2_113.c: r.s = t2 ^ SHRD(t1, 64);
Surf2_113.c: ^~~~~~~~~~~~
Surf2_113.c: ./x86_64/mpfq_2_113.h:572:19: note: expanded from macro 'SHRD'
Surf2_113.c: ...

Number of similar (compiler,implementation) pairs: 10, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments mpfq
clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments mpfq
clang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer -Qunused-arguments mpfq
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments mpfq
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments mpfq
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments mpfq
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments mpfq
clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments mpfq
clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments mpfq
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments mpfq

Compiler output

Implementation: crypto_dh/surf2113/mpfq
Compiler: icc
try.c: crypto_dh_surf2113.a(keysharing.o): In function `mpfq_2_113_mul_ur':
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psrlqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psrlqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psrlqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psrlqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psrlqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psrlqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psrlqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psrlqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psrlqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psrlqi128'
try.c: keysharing.c:(.text+0x...): undefined reference to `__builtin_ia32_psllqi128'
try.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
icc mpfq
icc -no-vec mpfq
icc -xMIC-AVX512 -O2 -fomit-frame-pointer mpfq
icc -xMIC-AVX512 -O3 -fomit-frame-pointer mpfq