GMP «Arithmetic without limitations» GMP mpn anomalies
Last modified:2023-05-30 03:07


The purpose of these measurements is to highlight possible improvements of GMP's low-level functions. The comparisons might include C fallbacks; in such cases the result indicates the need for asm implementation.

This is a new page, and it will therefore have glitches:

  1. Results for notoriously inaccurate machines should either be suppressed or else be given greater tolerance (e.g. pentium4, bulldozers).
  2. The tolerance ranges might be too narrow in some cases.

system/abi under-performing
function
factor
(expected lower)
comparison
function
verm/64: addlsh2_n 1.13 addlsh_n
piri/64: addlsh2_n 1.27 addlsh_n
suri/64: addlsh2_n 1.27 addlsh_n
mati/64: addlsh2_n 1.33 addlsh_n
bwl/64: addlsh_n 1.07 addmul_1.3
roc/64: addlsh_n 1.07 addmul_1.3
sky/64: addlsh_n 1.07 addmul_1.3
k10/64: addlsh_n 1.14 addmul_1.3
bt2/64: addlsh_n 1.15 addmul_1.3
ald/64: addlsh_n 1.17 addmul_1.3
k8/64: addlsh_n 1.18 addmul_1.3
bt1/64: addlsh_n 1.25 addmul_1.3
gege/64: addlsh_n 1.52 addlsh1_n
bd2/64: addlsh_n 1.61 addlsh1_n
bt2/64: addlsh_n 1.71 addlsh2_n
bd1/64: addlsh_n 1.73 addlsh1_n
bt1/64: addlsh_n 1.73 addlsh1_n
slm/64: addlsh_n 1.75 addlsh1_n
slm/64: addlsh_n 1.75 addlsh2_n
bt2/64: addlsh_n 1.83 addlsh1_n
element/64: addlsh_n 2.35 addlsh1_n
element/64: addlsh_n 2.35 addlsh2_n
beagle/32: addmul_1.3 0.84 addmul_2
trm/64: addmul_1.3 1.05 submul_1.3
trm/64: addmul_1.3 1.36 mul_1.3
hwl/64: addmul_1.3 1.38 mul_1.3
plm/32: addmul_1.3 1.39 mul_1.3
odc4/32: addmul_1.3 1.43 mul_1.3
spigg/32: addmul_1.3 1.51 mul_1.3
trm/32: addmul_1.3 1.76 mul_1.3
bt2/64: addmul_2 2.16 addmul_1.3
bt1/64: addmul_2 2.26 addmul_1.3
sky/64: addmul_2 2.44 addmul_1.3
bwl/64: addmul_2 2.46 addmul_1.3
ald/64: addmul_2 2.54 addmul_1.3
roc/64: addmul_2 2.58 addmul_1.3
odxu4/32: copyd 1.15 copyi
piri/64: copyd 1.15 copyi
odn2/32: copyd 1.16 copyi
verm/64: copyd 1.18 copyi
ald/32: copyi 1.06 copyd
roc/32: copyi 1.06 copyd
odc4/32: copyi 1.14 copyd
slm/32: mul_1.3 1.07 addmul_1.3
k8/64: mul_1.3 1.19 addmul_1.3
nanom4/64: mul_basecase 2.00 mullo_basecase
trm/64: mul_basecase 2.01 mullo_basecase
element/64: mul_basecase 2.21 mullo_basecase
g5/32: mullo_basecase 0.63 mul_basecase
trm/32: mullo_basecase 0.64 mul_basecase
k8/64: mullo_basecase 0.65 mul_basecase
bt1/64: mullo_basecase 0.72 mul_basecase
ald/32: mullo_basecase 0.73 mul_basecase
g5/mode64: mullo_basecase 0.74 mul_basecase
gege/32: mullo_basecase 0.77 mul_basecase
slm/32: mullo_basecase 0.82 mul_basecase
odxu4/32: mullo_basecase 0.83 mul_basecase
piri/32: mullo_basecase 0.83 mul_basecase
roc/32: mullo_basecase 0.83 mul_basecase
mati/32: mullo_basecase 0.84 mul_basecase
suri/32: mullo_basecase 0.84 mul_basecase
bt2/32: mullo_basecase 0.85 mul_basecase
odc4/32: mullo_basecase 0.85 mul_basecase
bd2/32: mullo_basecase 0.86 mul_basecase
k10/32: mullo_basecase 0.86 mul_basecase
nanom4/32: mullo_basecase 0.86 mul_basecase
bd1/32: mullo_basecase 0.87 mul_basecase
nanom4/32: mullo_basecase 0.87 mul_basecase
nhm/32: mullo_basecase 0.88 mul_basecase
pnr/32: mullo_basecase 0.88 mul_basecase
bd4/32: mullo_basecase 0.89 mul_basecase
cnr/32: mullo_basecase 0.89 mul_basecase
element/32: mullo_basecase 0.92 mul_basecase
tinker/32: mullo_basecase 0.92 mul_basecase
k8/32: mullo_basecase 0.93 mul_basecase
odc1/32: mullo_basecase 0.93 mul_basecase
plm/32: mullo_basecase 0.93 mul_basecase
wsm/32: mullo_basecase 0.93 mul_basecase
sky/32: mullo_basecase 0.95 mul_basecase
bt1/32: mullo_basecase 0.96 mul_basecase
parks/32: mullo_basecase 1 mul_basecase
odn2/32: mullo_basecase 1.01 mul_basecase
beagle/32: mullo_basecase 1.02 mul_basecase
bwl/32: mullo_basecase 1.06 mul_basecase
ivygentoo32/32: mullo_basecase 1.07 mul_basecase
hwl/32: mullo_basecase 1.10 mul_basecase
sbr/32: mullo_basecase 1.10 mul_basecase
wsm/64: redc_1 1.26 mul_basecase
nhm/64: redc_1 1.27 mul_basecase
g5/mode64: redc_1 1.30 mul_basecase
pnr/64: redc_1 1.34 mul_basecase
slm/32: redc_1 1.38 mul_basecase
cnr/64: redc_1 1.39 mul_basecase
gege/32: redc_1 1.43 mul_basecase
verm/64: redc_1 1.43 mul_basecase
trm/32: redc_1 1.44 mul_basecase
verm/32: redc_1 1.45 mul_basecase
k10/32: redc_1 1.47 mul_basecase
piri/64: redc_1 1.50 mul_basecase
suri/64: redc_1 1.51 mul_basecase
mati/64: redc_1 1.52 mul_basecase
k8/32: redc_1 1.53 mul_basecase
mati/32: redc_1 1.60 mul_basecase
piri/32: redc_1 1.60 mul_basecase
ald/32: redc_1 1.61 mul_basecase
nhm/32: redc_1 1.64 mul_basecase
suri/32: redc_1 1.64 mul_basecase
bt2/32: redc_1 1.65 mul_basecase
bd1/32: redc_1 1.66 mul_basecase
bd4/32: redc_1 1.66 mul_basecase
cnr/32: redc_1 1.66 mul_basecase
bd2/32: redc_1 1.67 mul_basecase
bt1/32: redc_1 1.67 mul_basecase
roc/32: redc_1 1.67 mul_basecase
plm/32: redc_1 1.68 mul_basecase
pnr/32: redc_1 1.68 mul_basecase
tinker/32: redc_1 1.75 mul_basecase
odc1/32: redc_1 1.76 mul_basecase
wsm/32: redc_1 1.79 mul_basecase
odc4/32: redc_1 1.81 mul_basecase
element/32: redc_1 1.82 mul_basecase
odn2/32: redc_1 1.89 mul_basecase
sky/32: redc_1 1.92 mul_basecase
beagle/32: redc_1 1.93 mul_basecase
ivygentoo32/32: redc_1 2.02 mul_basecase
bwl/32: redc_1 2.03 mul_basecase
sbr/32: redc_1 2.06 mul_basecase
hwl/32: redc_1 2.09 mul_basecase
parks/32: redc_1 2.1 mul_basecase
element/64: rsblsh1_n 2.12 addlsh1_n
verm/64: rsblsh2_n 1.15 rsblsh_n
piri/64: rsblsh2_n 1.26 rsblsh_n
suri/64: rsblsh2_n 1.26 rsblsh_n
mati/64: rsblsh2_n 1.34 rsblsh_n
element/64: rsblsh2_n 2.00 addlsh2_n
gege/64: rsblsh_n 1.53 rsblsh1_n
bd2/64: rsblsh_n 1.62 rsblsh1_n
bt2/64: rsblsh_n 1.71 rsblsh2_n
bd1/64: rsblsh_n 1.74 rsblsh1_n
bt1/64: rsblsh_n 1.74 rsblsh1_n
slm/64: rsblsh_n 1.75 rsblsh1_n
slm/64: rsblsh_n 1.75 rsblsh2_n
bt2/64: rsblsh_n 1.82 rsblsh1_n
mati/64: rsh1add_n 1.15 addlsh1_n
trm/64: rsh1add_n 1.17 addlsh1_n
tinker/32: rsh1add_n 1.30 addlsh1_n
slm/64: rsh1add_n 1.33 addlsh1_n
beagle/32: rsh1add_n 1.36 addlsh1_n
trm/64: rsh1sub_n 1.16 addlsh1_n
verm/64: rsh1sub_n 1.19 addlsh1_n
beagle/32: rsh1sub_n 1.33 addlsh1_n
slm/64: rsh1sub_n 1.33 addlsh1_n
tinker/32: rsh1sub_n 1.33 addlsh1_n
piri/64: sbpi1_bdiv_r 1.25 mul_basecase
g5/mode64: sbpi1_bdiv_r 1.34 mul_basecase
slm/32: sbpi1_bdiv_r 1.34 mul_basecase
gege/32: sbpi1_bdiv_r 1.41 mul_basecase
verm/32: sbpi1_bdiv_r 1.41 mul_basecase
k10/32: sbpi1_bdiv_r 1.43 mul_basecase
nhm/64: sbpi1_bdiv_r 1.43 mul_basecase
trm/32: sbpi1_bdiv_r 1.43 mul_basecase
wsm/64: sbpi1_bdiv_r 1.44 mul_basecase
k8/32: sbpi1_bdiv_r 1.52 mul_basecase
mati/32: sbpi1_bdiv_r 1.53 mul_basecase
cnr/64: sbpi1_bdiv_r 1.56 mul_basecase
pnr/64: sbpi1_bdiv_r 1.56 mul_basecase
ald/32: sbpi1_bdiv_r 1.57 mul_basecase
nhm/32: sbpi1_bdiv_r 1.57 mul_basecase
pnr/32: sbpi1_bdiv_r 1.57 mul_basecase
cnr/32: sbpi1_bdiv_r 1.58 mul_basecase
bd2/32: sbpi1_bdiv_r 1.59 mul_basecase
piri/32: sbpi1_bdiv_r 1.60 mul_basecase
suri/32: sbpi1_bdiv_r 1.60 mul_basecase
bd4/32: sbpi1_bdiv_r 1.61 mul_basecase
bt2/32: sbpi1_bdiv_r 1.63 mul_basecase
bd1/32: sbpi1_bdiv_r 1.64 mul_basecase
roc/32: sbpi1_bdiv_r 1.64 mul_basecase
bt1/32: sbpi1_bdiv_r 1.66 mul_basecase
element/32: sbpi1_bdiv_r 1.70 mul_basecase
plm/32: sbpi1_bdiv_r 1.72 mul_basecase
odc4/32: sbpi1_bdiv_r 1.74 mul_basecase
wsm/32: sbpi1_bdiv_r 1.74 mul_basecase
tinker/32: sbpi1_bdiv_r 1.85 mul_basecase
parks/32: sbpi1_bdiv_r 1.9 mul_basecase
sky/32: sbpi1_bdiv_r 1.90 mul_basecase
beagle/32: sbpi1_bdiv_r 1.92 mul_basecase
odn2/32: sbpi1_bdiv_r 1.94 mul_basecase
ivygentoo32/32: sbpi1_bdiv_r 1.97 mul_basecase
bwl/32: sbpi1_bdiv_r 2.03 mul_basecase
sbr/32: sbpi1_bdiv_r 2.04 mul_basecase
hwl/32: sbpi1_bdiv_r 2.08 mul_basecase
bt1/64: sqr_basecase 0.65 mul_basecase
k10/32: sqr_basecase 0.65 mul_basecase
odc1/32: sqr_basecase 0.65 mul_basecase
slm/32: sqr_basecase 0.65 mul_basecase
trm/64: sqr_basecase 0.65 mul_basecase
bd1/32: sqr_basecase 0.66 mul_basecase
bd4/32: sqr_basecase 0.66 mul_basecase
gege/32: sqr_basecase 0.66 mul_basecase
k10/64: sqr_basecase 0.66 mul_basecase
k8/64: sqr_basecase 0.66 mul_basecase
nhm/32: sqr_basecase 0.66 mul_basecase
odn2/32: sqr_basecase 0.66 mul_basecase
piri/64: sqr_basecase 0.66 mul_basecase
verm/32: sqr_basecase 0.66 mul_basecase
bwl/32: sqr_basecase 0.67 mul_basecase
ivygentoo32/32: sqr_basecase 0.67 mul_basecase
odc4/32: sqr_basecase 0.67 mul_basecase
ald/32: sqr_basecase 0.68 mul_basecase
beagle/32: sqr_basecase 0.68 mul_basecase
roc/32: sqr_basecase 0.68 mul_basecase
g5/32: sqr_basecase 0.69 mul_basecase
g5/mode32: sqr_basecase 0.69 mul_basecase
hwl/32: sqr_basecase 0.69 mul_basecase
plm/32: sqr_basecase 0.69 mul_basecase
plm/64: sqr_basecase 0.69 mul_basecase
pnr/32: sqr_basecase 0.70 mul_basecase
sbr/32: sqr_basecase 0.70 mul_basecase
sky/32: sqr_basecase 0.70 mul_basecase
wsm/32: sqr_basecase 0.70 mul_basecase
cnr/32: sqr_basecase 0.71 mul_basecase
element/32: sqr_basecase 0.72 mul_basecase
parks/32: sqr_basecase 0.73 mul_basecase
trm/32: sqr_basecase 0.73 mul_basecase
piri/32: sqr_basecase 0.74 mul_basecase
suri/32: sqr_basecase 0.74 mul_basecase
bt1/32: sqr_basecase 0.76 mul_basecase
k8/32: sqr_basecase 0.76 mul_basecase
gege/64: sqr_basecase 0.83 mul_basecase
element/32: submul_1.3 1.27 addmul_1.3
hwl/32: submul_1.3 1.27 addmul_1.3
bwl/32: submul_1.3 1.28 addmul_1.3
cnr/32: submul_1.3 1.32 addmul_1.3
pnr/32: submul_1.3 1.32 addmul_1.3
verm/64: submul_1.3 1.37 addmul_1.3