Implementation notes: amd64, rumba5, crypto_dh/surf2113

Computer: rumba5
Architecture: amd64
CPU ID: AuthenticAMD-00800f11-178bfbff
SUPERCOP version: 20181216
Operation: crypto_dh
Primitive: surf2113
TimeImplementationCompilerBenchmark dateSUPERCOP version
2163680mpfqgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2018081920180818
2182464mpfqgcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2018081920180818
2200480mpfqgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2018081920180818
2211872mpfqgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2018081920180818
2234592mpfqgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2018081920180818
2336544mpfqgcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2018081920180818
2337152mpfqgcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2018081920180818
2346752mpfqgcc -march=barcelona -O -fomit-frame-pointer2018081920180818
2353568mpfqgcc -m64 -O -fomit-frame-pointer2018081920180818
2354464mpfqgcc -march=k8 -O -fomit-frame-pointer2018081920180818
2357120mpfqgcc -m64 -march=k8 -O -fomit-frame-pointer2018081920180818
2361504mpfqgcc -fno-schedule-insns -O -fomit-frame-pointer2018081920180818
2369504mpfqgcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer2018081920180818
2372768mpfqgcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2018081920180818
2373856mpfqgcc -funroll-loops -O2 -fomit-frame-pointer2018081920180818
2373952mpfqgcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer2018081920180818
2375680mpfqgcc -march=barcelona -O3 -fomit-frame-pointer2018081920180818
2376288mpfqgcc -m64 -march=barcelona -O2 -fomit-frame-pointer2018081920180818
2376448mpfqgcc -funroll-loops -m64 -O2 -fomit-frame-pointer2018081920180818
2376672mpfqgcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2018081920180818
2379072mpfqgcc -m64 -march=core2 -O -fomit-frame-pointer2018081920180818
2388256mpfqgcc -funroll-loops -O3 -fomit-frame-pointer2018081920180818
2388320mpfqgcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2018081920180818
2388608mpfqgcc -funroll-loops -m64 -O3 -fomit-frame-pointer2018081920180818
2388640mpfqgcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2018081920180818
2389376mpfqgcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2018081920180818
2391680mpfqgcc -m64 -march=barcelona -O3 -fomit-frame-pointer2018081920180818
2393152mpfqgcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2018081920180818
2393888mpfqgcc -O2 -fomit-frame-pointer2018081920180818
2394144mpfqgcc -fno-schedule-insns -O2 -fomit-frame-pointer2018081920180818
2394656mpfqgcc -m64 -march=barcelona -O -fomit-frame-pointer2018081920180818
2396064mpfqgcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2018081920180818
2400768mpfqgcc -m64 -march=k8 -O2 -fomit-frame-pointer2018081920180818
2402176mpfqgcc -funroll-loops -m64 -O -fomit-frame-pointer2018081920180818
2402272mpfqgcc -march=k8 -O2 -fomit-frame-pointer2018081920180818
2403008mpfqgcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2018081920180818
2404288mpfqgcc -funroll-loops -O -fomit-frame-pointer2018081920180818
2405568mpfqgcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2018081920180818
2405760mpfqgcc -funroll-loops -march=k8 -O -fomit-frame-pointer2018081920180818
2406816mpfqgcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2018081920180818
2407776mpfqgcc -m64 -march=core2 -O3 -fomit-frame-pointer2018081920180818
2410240mpfqgcc -m64 -march=nocona -O -fomit-frame-pointer2018081920180818
2413504mpfqgcc -m64 -O3 -fomit-frame-pointer2018081920180818
2413984mpfqgcc -fno-schedule-insns -O3 -fomit-frame-pointer2018081920180818
2417056mpfqgcc -march=nocona -O -fomit-frame-pointer2018081920180818
2417152mpfqgcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2018081920180818
2427168mpfqgcc -march=k8 -O3 -fomit-frame-pointer2018081920180818
2428384mpfqgcc -m64 -march=core2 -O2 -fomit-frame-pointer2018081920180818
2429728mpfqgcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2018081920180818
2432384mpfqgcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2018081920180818
2441792mpfqgcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2018081920180818
2441888mpfqgcc -funroll-loops -march=nocona -O -fomit-frame-pointer2018081920180818
2452576mpfqgcc -march=nocona -O2 -fomit-frame-pointer2018081920180818
2453536mpfqgcc -m64 -march=nocona -O2 -fomit-frame-pointer2018081920180818
2457376mpfqgcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2018081920180818
2473536mpfqgcc -march=nocona -O3 -fomit-frame-pointer2018081920180818
2474272mpfqgcc -m64 -march=nocona -O3 -fomit-frame-pointer2018081920180818
2476224mpfqgcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2018081920180818
2478208mpfqgcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2018081920180818
2493056mpfqgcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2018081920180818
2495872mpfqgcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2018081920180818
2496896mpfqgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2018081920180818
2512864mpfqgcc -march=barcelona -O2 -fomit-frame-pointer2018081920180818
2517984mpfqgcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2018081920180818
2523168mpfqgcc -O3 -fomit-frame-pointer2018081920180818
2525152mpfqgcc -O -fomit-frame-pointer2018081920180818
2526016mpfqgcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2018081920180818
2527392mpfqgcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2018081920180818
2535488mpfqgcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2018081920180818
2535712mpfqgcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2018081920180818
2538304mpfqgcc -funroll-loops -m64 -Os -fomit-frame-pointer2018081920180818
2538688mpfqgcc -funroll-loops -Os -fomit-frame-pointer2018081920180818
2539840mpfqgcc -m64 -march=k8 -O3 -fomit-frame-pointer2018081920180818
2540160mpfqgcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2018081920180818
2540224mpfqgcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2018081920180818
2548832mpfqgcc -m64 -march=barcelona -Os -fomit-frame-pointer2018081920180818
2559648mpfqgcc -march=barcelona -Os -fomit-frame-pointer2018081920180818
2566240mpfqgcc -march=k8 -Os -fomit-frame-pointer2018081920180818
2567584mpfqgcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2018081920180818
2568000mpfqgcc -m64 -march=k8 -Os -fomit-frame-pointer2018081920180818
2569216mpfqgcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2018081920180818
2569920mpfqgcc -m64 -march=core2 -Os -fomit-frame-pointer2018081920180818
2586912mpfqgcc -fno-schedule-insns -Os -fomit-frame-pointer2018081920180818
2587616mpfqgcc -Os -fomit-frame-pointer2018081920180818
2591168mpfqgcc -m64 -Os -fomit-frame-pointer2018081920180818
2611136mpfqgcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2018081920180818
2614528mpfqgcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2018081920180818
2616832mpfqgcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2018081920180818
2676704mpfqgcc -march=nocona -Os -fomit-frame-pointer2018081920180818
2678208mpfqgcc -m64 -march=nocona -Os -fomit-frame-pointer2018081920180818
2931744mpfqgcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer2018081920180818
2955168mpfqgcc -m64 -march=core-avx2 -O2 -fomit-frame-pointer2018081920180818
2957248mpfqgcc -m64 -march=core-avx2 -O3 -fomit-frame-pointer2018081920180818
2962144mpfqgcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer2018081920180818
2969056mpfqgcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer2018081920180818
2974048mpfqgcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer2018081920180818
3053088mpfqgcc -m64 -march=core-avx2 -O -fomit-frame-pointer2018081920180818
3060256mpfqgcc -m64 -march=core-avx-i -O -fomit-frame-pointer2018081920180818
3074944mpfqgcc -m64 -march=corei7-avx -O -fomit-frame-pointer2018081920180818
3128544mpfqgcc -m64 -march=corei7 -O2 -fomit-frame-pointer2018081920180818
3162720mpfqgcc -m64 -march=corei7 -O3 -fomit-frame-pointer2018081920180818
3263648mpfqgcc -m64 -march=corei7 -Os -fomit-frame-pointer2018081920180818
3287648mpfqgcc -m64 -march=corei7 -O -fomit-frame-pointer2018081920180818
3317696mpfqgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2018081920180818
3353696mpfqgcc -m64 -march=corei7-avx -Os -fomit-frame-pointer2018081920180818
3358272mpfqgcc -m64 -march=core-avx-i -Os -fomit-frame-pointer2018081920180818
3393856mpfqgcc -m64 -march=core-avx2 -Os -fomit-frame-pointer2018081920180818
4560096mpfqgcc -m64 -O2 -fomit-frame-pointer2018081920180818
9495488mpfqgcc -funroll-loops2018081920180818
9498880mpfqcc2018081920180818
9522688mpfqgcc2018081920180818

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