Implementation notes: amd64, skylake, crypto_dh/ed521gs

Computer: skylake
Architecture: amd64
CPU ID: GenuineIntel-000506e3-bfebfbff
SUPERCOP version: 20161026
Operation: crypto_dh
Primitive: ed521gs
TimeImplementationCompilerBenchmark dateSUPERCOP version
3201072refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016121720161026
3281060refclang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments2016121720161026
3289226refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121720161026
3364222refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016121720161026
3384154refclang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments2016121720161026
3388988refgcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2016121720161026
3396950refgcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2016121720161026
3396998refgcc -m64 -march=k8 -O3 -fomit-frame-pointer2016121720161026
3401306refgcc -march=barcelona -O3 -fomit-frame-pointer2016121720161026
3403152refgcc -funroll-loops -m64 -O3 -fomit-frame-pointer2016121720161026
3403956refgcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2016121720161026
3405010refgcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2016121720161026
3406558refgcc -m64 -march=barcelona -O3 -fomit-frame-pointer2016121720161026
3412338refgcc -march=k8 -O3 -fomit-frame-pointer2016121720161026
3417526refgcc -m64 -march=k8 -Os -fomit-frame-pointer2016121720161026
3418484refgcc -fno-schedule-insns -O3 -fomit-frame-pointer2016121720161026
3418520refgcc -O3 -fomit-frame-pointer2016121720161026
3420026refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016121720161026
3425126refgcc -m64 -march=barcelona -Os -fomit-frame-pointer2016121720161026
3425382refgcc -m64 -march=corei7 -O3 -fomit-frame-pointer2016121720161026
3425608refgcc -m64 -march=core-avx2 -O3 -fomit-frame-pointer2016121720161026
3425946refgcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer2016121720161026
3426786refgcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer2016121720161026
3426892refgcc -march=k8 -Os -fomit-frame-pointer2016121720161026
3426896refgcc -Os -fomit-frame-pointer2016121720161026
3428078refgcc -march=barcelona -Os -fomit-frame-pointer2016121720161026
3429694refgcc -m64 -march=corei7 -Os -fomit-frame-pointer2016121720161026
3429792refgcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer2016121720161026
3430156refgcc -m64 -march=core2 -Os -fomit-frame-pointer2016121720161026
3430596refgcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2016121720161026
3430838refgcc -m64 -march=corei7-avx -Os -fomit-frame-pointer2016121720161026
3430888refgcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2016121720161026
3431174refgcc -m64 -march=nocona -Os -fomit-frame-pointer2016121720161026
3431244refgcc -m64 -march=core-avx-i -Os -fomit-frame-pointer2016121720161026
3431994refgcc -fno-schedule-insns -Os -fomit-frame-pointer2016121720161026
3432146refgcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2016121720161026
3432472refgcc -m64 -march=core-avx2 -Os -fomit-frame-pointer2016121720161026
3434116refgcc -m64 -Os -fomit-frame-pointer2016121720161026
3438168refgcc -m64 -O3 -fomit-frame-pointer2016121720161026
3440174refgcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2016121720161026
3440216refgcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2016121720161026
3440564refgcc -m64 -march=core2 -O3 -fomit-frame-pointer2016121720161026
3444654refgcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2016121720161026
3444854refgcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2016121720161026
3447254refgcc -funroll-loops -Os -fomit-frame-pointer2016121720161026
3447370refgcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2016121720161026
3449924refclang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments2016121720161026
3452614refgcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2016121720161026
3453764refgcc -funroll-loops -m64 -Os -fomit-frame-pointer2016121720161026
3455278refgcc -funroll-loops -O3 -fomit-frame-pointer2016121720161026
3456010refgcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2016121720161026
3462882refgcc -m64 -march=nocona -O3 -fomit-frame-pointer2016121720161026
3463302refgcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2016121720161026
3465186refgcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2016121720161026
3467818refgcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2016121720161026
3468152refgcc -march=nocona -O3 -fomit-frame-pointer2016121720161026
3468208refgcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer2016121720161026
3469836refgcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2016121720161026
3471808refgcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2016121720161026
3472794refclang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments2016121720161026
3473208refgcc -march=k8 -O2 -fomit-frame-pointer2016121720161026
3473532refgcc -m64 -march=barcelona -O2 -fomit-frame-pointer2016121720161026
3473618refgcc -march=nocona -Os -fomit-frame-pointer2016121720161026
3482916refgcc -m64 -march=k8 -O2 -fomit-frame-pointer2016121720161026
3483072refgcc -march=barcelona -O2 -fomit-frame-pointer2016121720161026
3484802refgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2016121720161026
3485152refgcc -funroll-loops -m64 -O2 -fomit-frame-pointer2016121720161026
3488528refgcc -funroll-loops -O2 -fomit-frame-pointer2016121720161026
3490174refclang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer -Qunused-arguments2016121720161026
3490502refgcc -m64 -march=core-avx2 -O2 -fomit-frame-pointer2016121720161026
3492198refgcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2016121720161026
3496590refgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2016121720161026
3498004refgcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2016121720161026
3502758refgcc -m64 -march=corei7 -O2 -fomit-frame-pointer2016121720161026
3505124refgcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer2016121720161026
3506702refgcc -O2 -fomit-frame-pointer2016121720161026
3506704refgcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer2016121720161026
3508654refgcc -m64 -march=core2 -O2 -fomit-frame-pointer2016121720161026
3509952refgcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2016121720161026
3510448refgcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2016121720161026
3514918refgcc -m64 -O2 -fomit-frame-pointer2016121720161026
3515440refgcc -fno-schedule-insns -O2 -fomit-frame-pointer2016121720161026
3520294refgcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2016121720161026
3520362refclang -O3 -fomit-frame-pointer -Qunused-arguments2016121720161026
3521636refclang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121720161026
3523684refgcc -march=nocona -O2 -fomit-frame-pointer2016121720161026
3550804refgcc -m64 -march=nocona -O2 -fomit-frame-pointer2016121720161026
3557688refgcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2016121720161026
3564664refclang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121720161026
3590158refgcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2016121720161026
3610754refclang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121720161026
5545596refgcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2016121720161026
5561634refgcc -funroll-loops -march=k8 -O -fomit-frame-pointer2016121720161026
5567468refgcc -march=k8 -O -fomit-frame-pointer2016121720161026
5572820refgcc -m64 -march=barcelona -O -fomit-frame-pointer2016121720161026
5574028refgcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2016121720161026
5601292refgcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2016121720161026
5608242refgcc -march=barcelona -O -fomit-frame-pointer2016121720161026
5651628refgcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2016121720161026
5663534refgcc -m64 -march=k8 -O -fomit-frame-pointer2016121720161026
5667838refgcc -m64 -march=nocona -O -fomit-frame-pointer2016121720161026
5670812refgcc -funroll-loops -O -fomit-frame-pointer2016121720161026
5671100refgcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2016121720161026
5671350refgcc -funroll-loops -march=nocona -O -fomit-frame-pointer2016121720161026
5675896refgcc -funroll-loops -m64 -O -fomit-frame-pointer2016121720161026
5677542refgcc -march=nocona -O -fomit-frame-pointer2016121720161026
5677916refgcc -m64 -march=corei7-avx -O -fomit-frame-pointer2016121720161026
5681172refgcc -O -fomit-frame-pointer2016121720161026
5682142refgcc -fno-schedule-insns -O -fomit-frame-pointer2016121720161026
5697192refgcc -m64 -O -fomit-frame-pointer2016121720161026
5698150refgcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2016121720161026
5700424refgcc -m64 -march=core2 -O -fomit-frame-pointer2016121720161026
5707970refgcc -m64 -march=corei7 -O -fomit-frame-pointer2016121720161026
5762356refgcc -m64 -march=core-avx-i -O -fomit-frame-pointer2016121720161026
5784168refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016121720161026
5788926refgcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2016121720161026
5820840refgcc -m64 -march=core-avx2 -O -fomit-frame-pointer2016121720161026
5870256refgcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2016121720161026
13197728refcc2016121720161026
13206388refgcc -funroll-loops2016121720161026
13225758refgcc2016121720161026

Compiler output

Implementation: crypto_dh/ed521gs/ref
Compiler: cc
dh.c: dh.c: In function 'crypto_dh_ed521gs_ref_keypair':
dh.c: dh.c:771:2: warning: implicit declaration of function 'randombytes' [-Wimplicit-function-declaration]
dh.c: randombytes(sk,PANES-1);
dh.c: ^~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 107, namely:
CompilerImplementations
cc ref
gcc ref
gcc -O2 -fomit-frame-pointer ref
gcc -O3 -fomit-frame-pointer ref
gcc -O -fomit-frame-pointer ref
gcc -Os -fomit-frame-pointer ref
gcc -fno-schedule-insns -O2 -fomit-frame-pointer ref
gcc -fno-schedule-insns -O3 -fomit-frame-pointer ref
gcc -fno-schedule-insns -O -fomit-frame-pointer ref
gcc -fno-schedule-insns -Os -fomit-frame-pointer ref
gcc -funroll-loops ref
gcc -funroll-loops -O2 -fomit-frame-pointer ref
gcc -funroll-loops -O3 -fomit-frame-pointer ref
gcc -funroll-loops -O -fomit-frame-pointer ref
gcc -funroll-loops -Os -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer ref
gcc -funroll-loops -m64 -O2 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -O3 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -O -fomit-frame-pointer ref
gcc -funroll-loops -m64 -Os -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer ref
gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer ref
gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer ref
gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer ref
gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer ref
gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer ref
gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer ref
gcc -funroll-loops -march=k8 -O -fomit-frame-pointer ref
gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer ref
gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer ref
gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer ref
gcc -funroll-loops -march=nocona -O -fomit-frame-pointer ref
gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer ref
gcc -m64 -O2 -fomit-frame-pointer ref
gcc -m64 -O3 -fomit-frame-pointer ref
gcc -m64 -O -fomit-frame-pointer ref
gcc -m64 -Os -fomit-frame-pointer ref
gcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer ref
gcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer ref
gcc -m64 -march=core-avx-i -O -fomit-frame-pointer ref
gcc -m64 -march=core-avx-i -Os -fomit-frame-pointer ref
gcc -m64 -march=core-avx2 -O2 -fomit-frame-pointer ref
gcc -m64 -march=core-avx2 -O3 -fomit-frame-pointer ref
gcc -m64 -march=core-avx2 -O -fomit-frame-pointer ref
gcc -m64 -march=core-avx2 -Os -fomit-frame-pointer ref
gcc -m64 -march=core2 -O2 -fomit-frame-pointer ref
gcc -m64 -march=core2 -O3 -fomit-frame-pointer ref
gcc -m64 -march=core2 -O -fomit-frame-pointer ref
gcc -m64 -march=core2 -Os -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer ref
gcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer ref
gcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer ref
gcc -m64 -march=corei7-avx -O -fomit-frame-pointer ref
gcc -m64 -march=corei7-avx -Os -fomit-frame-pointer ref
gcc -m64 -march=corei7 -O2 -fomit-frame-pointer ref
gcc -m64 -march=corei7 -O3 -fomit-frame-pointer ref
gcc -m64 -march=corei7 -O -fomit-frame-pointer ref
gcc -m64 -march=corei7 -Os -fomit-frame-pointer ref
gcc -m64 -march=k8 -O2 -fomit-frame-pointer ref
gcc -m64 -march=k8 -O3 -fomit-frame-pointer ref
gcc -m64 -march=k8 -O -fomit-frame-pointer ref
gcc -m64 -march=k8 -Os -fomit-frame-pointer ref
gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer ref
gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer ref
gcc -m64 -march=native -mtune=native -O -fomit-frame-pointer ref
gcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer ref
gcc -m64 -march=nocona -O2 -fomit-frame-pointer ref
gcc -m64 -march=nocona -O3 -fomit-frame-pointer ref
gcc -m64 -march=nocona -O -fomit-frame-pointer ref
gcc -m64 -march=nocona -Os -fomit-frame-pointer ref
gcc -march=barcelona -O2 -fomit-frame-pointer ref
gcc -march=barcelona -O3 -fomit-frame-pointer ref
gcc -march=barcelona -O -fomit-frame-pointer ref
gcc -march=barcelona -Os -fomit-frame-pointer ref
gcc -march=k8 -O2 -fomit-frame-pointer ref
gcc -march=k8 -O3 -fomit-frame-pointer ref
gcc -march=k8 -O -fomit-frame-pointer ref
gcc -march=k8 -Os -fomit-frame-pointer ref
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv ref
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv ref
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv ref
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv ref
gcc -march=nocona -O2 -fomit-frame-pointer ref
gcc -march=nocona -O3 -fomit-frame-pointer ref
gcc -march=nocona -O -fomit-frame-pointer ref
gcc -march=nocona -Os -fomit-frame-pointer ref

Compiler output

Implementation: crypto_dh/ed521gs/ref
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
dh.c: dh.c:771:2: warning: implicit declaration of function 'randombytes' is invalid in C99 [-Wimplicit-function-declaration]
dh.c: randombytes(sk,PANES-1);
dh.c: ^
dh.c: 1 warning generated.

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

Compiler output

Implementation: crypto_dh/ed521gs/ref
Compiler: gcc -m64 -march=barcelona -O2 -fomit-frame-pointer
dh.c: dh.c: In function 'crypto_dh_ed521gs_ref_keypair':
dh.c: dh.c:771:2: warning: implicit declaration of function 'randombytes' [-Wimplicit-function-declaration]
dh.c: randombytes(sk,PANES-1);
dh.c: ^~~~~~~~~~~
dh.c: dh.c: In function 'crypto_dh_ed521gs_ref_keypair':
dh.c: dh.c:771:2: warning: implicit declaration of function 'randombytes' [-Wimplicit-function-declaration]
dh.c: randombytes(sk,PANES-1);
dh.c: ^~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -m64 -march=barcelona -O2 -fomit-frame-pointer ref
gcc -m64 -march=barcelona -O3 -fomit-frame-pointer ref
gcc -m64 -march=barcelona -O -fomit-frame-pointer ref
gcc -m64 -march=barcelona -Os -fomit-frame-pointer ref