Implementation notes: amd64, bolero, crypto_dh/surf2113

Computer: bolero
Architecture: amd64
CPU ID: GenuineIntel-000406f1-bfebfbff
SUPERCOP version: 20190110
Operation: crypto_dh
Primitive: surf2113
TimeImplementationCompilerBenchmark dateSUPERCOP version
2293836mpfqgcc -fno-schedule-insns -O -fomit-frame-pointer2018082120180818
2294844mpfqgcc -O -fomit-frame-pointer2018082120180818
2296184mpfqgcc -m64 -O -fomit-frame-pointer2018082120180818
2297956mpfqgcc -m64 -march=barcelona -O -fomit-frame-pointer2018082120180818
2298648mpfqgcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2018082120180818
2300924mpfqgcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2018082120180818
2301668mpfqgcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2018082120180818
2302584mpfqgcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2018082120180818
2306128mpfqgcc -m64 -march=nocona -O -fomit-frame-pointer2018082120180818
2306300mpfqgcc -march=k8 -O -fomit-frame-pointer2018082120180818
2306724mpfqgcc -m64 -march=core2 -O -fomit-frame-pointer2018082120180818
2308568mpfqgcc -march=nocona -O -fomit-frame-pointer2018082120180818
2310928mpfqgcc -funroll-loops -O -fomit-frame-pointer2018082120180818
2312012mpfqgcc -m64 -march=k8 -O -fomit-frame-pointer2018082120180818
2312272mpfqgcc -funroll-loops -m64 -O -fomit-frame-pointer2018082120180818
2320916mpfqgcc -march=barcelona -O -fomit-frame-pointer2018082120180818
2335352mpfqgcc -funroll-loops -march=k8 -O -fomit-frame-pointer2018082120180818
2338076mpfqgcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2018082120180818
2348456mpfqgcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2018082120180818
2350128mpfqgcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2018082120180818
2365068mpfqgcc -funroll-loops -march=nocona -O -fomit-frame-pointer2018082120180818
2365468mpfqgcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2018082120180818
2367704mpfqgcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2018082120180818
2385428mpfqgcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2018082120180818
2387408mpfqgcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2018082120180818
2387580mpfqgcc -funroll-loops -O3 -fomit-frame-pointer2018082120180818
2391312mpfqgcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2018082120180818
2392132mpfqgcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2018082120180818
2392496mpfqgcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2018082120180818
2393968mpfqgcc -funroll-loops -m64 -Os -fomit-frame-pointer2018082120180818
2395068mpfqgcc -funroll-loops -m64 -O3 -fomit-frame-pointer2018082120180818
2396688mpfqgcc -funroll-loops -Os -fomit-frame-pointer2018082120180818
2403340mpfqgcc -march=barcelona -O3 -fomit-frame-pointer2018082120180818
2406968mpfqgcc -march=k8 -O3 -fomit-frame-pointer2018082120180818
2409624mpfqgcc -m64 -march=barcelona -O3 -fomit-frame-pointer2018082120180818
2411364mpfqgcc -m64 -march=core2 -O3 -fomit-frame-pointer2018082120180818
2412676mpfqgcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2018082120180818
2413724mpfqgcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2018082120180818
2417536mpfqgcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2018082120180818
2422636mpfqgcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2018082120180818
2426704mpfqgcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer2018082120180818
2427016mpfqgcc -m64 -march=k8 -O3 -fomit-frame-pointer2018082120180818
2428252mpfqgcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2018082120180818
2429828mpfqgcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer2018082120180818
2431348mpfqgcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2018082120180818
2445364mpfqgcc -m64 -O3 -fomit-frame-pointer2018082120180818
2446128mpfqgcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2018082120180818
2446436mpfqgcc -m64 -O2 -fomit-frame-pointer2018082120180818
2449016mpfqgcc -m64 -march=barcelona -Os -fomit-frame-pointer2018082120180818
2449592mpfqgcc -march=barcelona -Os -fomit-frame-pointer2018082120180818
2449984mpfqgcc -m64 -march=k8 -O2 -fomit-frame-pointer2018082120180818
2451976mpfqgcc -fno-schedule-insns -O3 -fomit-frame-pointer2018082120180818
2452132mpfqgcc -march=k8 -O2 -fomit-frame-pointer2018082120180818
2455392mpfqgcc -fno-schedule-insns -O2 -fomit-frame-pointer2018082120180818
2456032mpfqgcc -m64 -march=core2 -O2 -fomit-frame-pointer2018082120180818
2458552mpfqgcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2018082120180818
2461640mpfqgcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2018082120180818
2462620mpfqgcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2018082120180818
2465084mpfqgcc -m64 -march=nocona -O2 -fomit-frame-pointer2018082120180818
2465880mpfqgcc -march=barcelona -O2 -fomit-frame-pointer2018082120180818
2467180mpfqgcc -O3 -fomit-frame-pointer2018082120180818
2467572mpfqgcc -march=nocona -O2 -fomit-frame-pointer2018082120180818
2468288mpfqgcc -march=nocona -O3 -fomit-frame-pointer2018082120180818
2468556mpfqgcc -funroll-loops -O2 -fomit-frame-pointer2018082120180818
2470296mpfqgcc -m64 -march=barcelona -O2 -fomit-frame-pointer2018082120180818
2472012mpfqgcc -m64 -Os -fomit-frame-pointer2018082120180818
2472392mpfqgcc -funroll-loops -m64 -O2 -fomit-frame-pointer2018082120180818
2472980mpfqgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2018082120180818
2473236mpfqgcc -m64 -march=k8 -Os -fomit-frame-pointer2018082120180818
2474404mpfqgcc -fno-schedule-insns -Os -fomit-frame-pointer2018082120180818
2474616mpfqgcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2018082120180818
2474616mpfqgcc -m64 -march=corei7-avx -Os -fomit-frame-pointer2018082120180818
2475492mpfqgcc -march=k8 -Os -fomit-frame-pointer2018082120180818
2477448mpfqgcc -Os -fomit-frame-pointer2018082120180818
2478124mpfqgcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2018082120180818
2478196mpfqgcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2018082120180818
2479444mpfqgcc -m64 -march=nocona -O3 -fomit-frame-pointer2018082120180818
2482192mpfqgcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2018082120180818
2483772mpfqgcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2018082120180818
2485392mpfqgcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2018082120180818
2485564mpfqgcc -m64 -march=core-avx-i -Os -fomit-frame-pointer2018082120180818
2503680mpfqgcc -m64 -march=core2 -Os -fomit-frame-pointer2018082120180818
2507016mpfqgcc -m64 -march=nocona -Os -fomit-frame-pointer2018082120180818
2507612mpfqgcc -march=nocona -Os -fomit-frame-pointer2018082120180818
2507880mpfqgcc -m64 -march=core-avx2 -Os -fomit-frame-pointer2018082120180818
2514060mpfqgcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2018082120180818
2514856mpfqgcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2018082120180818
2516880mpfqgcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2018082120180818
2564976mpfqgcc -O2 -fomit-frame-pointer2018082120180818
2753700mpfqgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2018082120180818
2753848mpfqgcc -m64 -march=core-avx2 -O2 -fomit-frame-pointer2018082120180818
2755624mpfqgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2018082120180818
2758892mpfqgcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer2018082120180818
2760492mpfqgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2018082120180818
2761124mpfqgcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer2018082120180818
2766808mpfqgcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer2018082120180818
2777780mpfqgcc -m64 -march=core-avx2 -O3 -fomit-frame-pointer2018082120180818
2780208mpfqgcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer2018082120180818
2802964mpfqgcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2018082120180818
2807644mpfqgcc -m64 -march=core-avx-i -O -fomit-frame-pointer2018082120180818
2808176mpfqgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2018082120180818
2809036mpfqgcc -m64 -march=corei7-avx -O -fomit-frame-pointer2018082120180818
2815272mpfqgcc -m64 -march=core-avx2 -O -fomit-frame-pointer2018082120180818
2857060mpfqgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2018082120180818
3049780mpfqgcc -m64 -march=corei7 -Os -fomit-frame-pointer2018082120180818
3141696mpfqgcc -m64 -march=corei7 -O3 -fomit-frame-pointer2018082120180818
3148752mpfqgcc -m64 -march=corei7 -O2 -fomit-frame-pointer2018082120180818
3184728mpfqgcc -m64 -march=corei7 -O -fomit-frame-pointer2018082120180818
8191044mpfqgcc2018082120180818
8202688mpfqcc2018082120180818
8211872mpfqgcc -funroll-loops2018082120180818

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