GMP «Arithmetic without limitations» GMP mpn anomalies
Last modified:2019-07-22 19:18


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
bobcat/64: add_n 1.04 addlsh1_n
bobcat/64: add_n 1.24 sub_n
k8gentoo64/64: addlsh1_n 1.23 rsh1sub_n
odn2/64: addlsh2_n 1.03 sublsh2_n
jaggentoo64/64: addlsh2_n 1.09 rsblsh2_n
pirigentoo64/64: addlsh2_n 1.29 addlsh_n
surigentoo64/64: addlsh2_n 1.29 addlsh_n
matigentoo64/64: addlsh2_n 1.35 addlsh_n
bwlgentoo64/64: addlsh_n 1.07 addmul_1.3
skygentoo64/64: addlsh_n 1.07 addmul_1.3
jaggentoo64/64: addlsh_n 1.10 addmul_1.3
k10gentoo64/64: addlsh_n 1.14 addmul_1.3
k8gentoo64/64: addlsh_n 1.16 addmul_1.3
gege/64: addlsh_n 1.53 addlsh1_n
jaggentoo64/64: addlsh_n 1.55 addlsh2_n
pilegentoo64/64: addlsh_n 1.63 addlsh1_n
bullgentoo64/64: addlsh_n 1.70 addlsh1_n
bobcat/64: addlsh_n 1.74 addlsh1_n
slmgentoo64/64: addlsh_n 1.74 addlsh1_n
slmgentoo64/64: addlsh_n 1.74 addlsh2_n
jaggentoo64/64: addlsh_n 1.84 addlsh1_n
element/64: addlsh_n 2.34 addlsh1_n
element/64: addlsh_n 2.35 addlsh2_n
beagle/32: addmul_1.3 0.84 addmul_2
bobcat/64: addmul_1.3 1.07 submul_1.3
hwlgentoo64/64: addmul_1.3 1.38 mul_1.3
cough/32: addmul_1.3 1.39 mul_1.3
glmgentoo64/32: addmul_1.3 1.39 mul_1.3
jaggentoo64/64: addmul_2 2.07 addmul_1.3
bwlgentoo64/64: addmul_2 2.45 addmul_1.3
skygentoo64/64: addmul_2 2.46 addmul_1.3
pirigentoo64/64: copyd 1.18 copyi
surigentoo64/64: copyd 1.19 copyi
bobcat/64: copyd 1.21 copyi
g5/mode32: copyi 1.05 copyd
matigentoo64/32: copyi 1.06 copyd
bobcat/32: copyi 1.07 copyd
k10gentoo64/64: copyi 1.13 copyd
beagle/32: mul_1.3 1.04 addmul_1.3
slmgentoo64/32: mul_1.3 1.07 addmul_1.3
cough/64: mul_basecase 2.00 mullo_basecase
element/64: mul_basecase 2.21 mullo_basecase
k8gentoo64/64: mullo_basecase 0.65 mul_basecase
gcc2-power8/mode64: mullo_basecase 0.70 mul_basecase
gcc1-power7/mode64: mullo_basecase 0.72 mul_basecase
g5/mode64: mullo_basecase 0.75 mul_basecase
gege/32: mullo_basecase 0.78 mul_basecase
slmgentoo64/32: mullo_basecase 0.82 mul_basecase
glmgentoo64/32: mullo_basecase 0.83 mul_basecase
pirigentoo64/32: mullo_basecase 0.83 mul_basecase
surigentoo64/32: mullo_basecase 0.83 mul_basecase
matigentoo64/32: mullo_basecase 0.85 mul_basecase
pilegentoo64/32: mullo_basecase 0.85 mul_basecase
k10gentoo64/32: mullo_basecase 0.86 mul_basecase
bullgentoo64/32: mullo_basecase 0.87 mul_basecase
cnrgentoo64/32: mullo_basecase 0.87 mul_basecase
nhmgentoo64/32: mullo_basecase 0.88 mul_basecase
pnrgentoo64/32: mullo_basecase 0.88 mul_basecase
excagentoo64/32: mullo_basecase 0.89 mul_basecase
tinker/32: mullo_basecase 0.90 mul_basecase
labrador/32: mullo_basecase 0.91 mul_basecase
skygentoo64/32: mullo_basecase 0.92 mul_basecase
element/32: mullo_basecase 0.93 mul_basecase
k8gentoo64/32: mullo_basecase 0.93 mul_basecase
odc1/32: mullo_basecase 0.93 mul_basecase
tambo/32: mullo_basecase 0.93 mul_basecase
cough/32: mullo_basecase 0.94 mul_basecase
gcc135/mode64: mullo_basecase 0.94 mul_basecase
yubel2/32: mullo_basecase 0.94 mul_basecase
bobcat/32: mullo_basecase 0.95 mul_basecase
wsmgentoo64/32: mullo_basecase 0.95 mul_basecase
parks/32: mullo_basecase 0.99 mul_basecase
odxu4/32: mullo_basecase 1.00 mul_basecase
beagle/32: mullo_basecase 1.02 mul_basecase
ivygentoo32/32: mullo_basecase 1.06 mul_basecase
bwlgentoo64/32: mullo_basecase 1.08 mul_basecase
sbrgentoo64/32: mullo_basecase 1.09 mul_basecase
hwlgentoo64/32: mullo_basecase 1.12 mul_basecase
nhmgentoo64/64: redc_1 1.26 mul_basecase
wsmgentoo64/64: redc_1 1.26 mul_basecase
g5/mode64: redc_1 1.30 mul_basecase
slmgentoo64/32: redc_1 1.37 mul_basecase
cnrgentoo64/64: redc_1 1.39 mul_basecase
pnrgentoo64/64: redc_1 1.39 mul_basecase
gege/32: redc_1 1.44 mul_basecase
k10gentoo64/32: redc_1 1.47 mul_basecase
pirigentoo64/64: redc_1 1.47 mul_basecase
surigentoo64/64: redc_1 1.48 mul_basecase
matigentoo64/64: redc_1 1.53 mul_basecase
glmgentoo64/32: redc_1 1.54 mul_basecase
k8gentoo64/32: redc_1 1.58 mul_basecase
labrador/32: redc_1 1.6 mul_basecase
tambo/32: redc_1 1.6 mul_basecase
matigentoo64/32: redc_1 1.60 mul_basecase
jaggentoo64/32: redc_1 1.61 mul_basecase
nhmgentoo64/32: redc_1 1.64 mul_basecase
pirigentoo64/32: redc_1 1.64 mul_basecase
surigentoo64/32: redc_1 1.64 mul_basecase
bullgentoo64/32: redc_1 1.65 mul_basecase
excagentoo64/32: redc_1 1.65 mul_basecase
cough/32: redc_1 1.66 mul_basecase
pnrgentoo64/32: redc_1 1.66 mul_basecase
cnrgentoo64/32: redc_1 1.67 mul_basecase
pilegentoo64/32: redc_1 1.67 mul_basecase
tinker/32: redc_1 1.71 mul_basecase
bobcat/32: redc_1 1.72 mul_basecase
odc1/32: redc_1 1.76 mul_basecase
wsmgentoo64/32: redc_1 1.80 mul_basecase
gcc135/mode64: redc_1 1.81 mul_basecase
element/32: redc_1 1.82 mul_basecase
beagle/32: redc_1 1.93 mul_basecase
skygentoo64/32: redc_1 1.93 mul_basecase
yubel2/32: redc_1 1.94 mul_basecase
ivygentoo32/32: redc_1 2.01 mul_basecase
bwlgentoo64/32: redc_1 2.03 mul_basecase
sbrgentoo64/32: redc_1 2.07 mul_basecase
hwlgentoo64/32: redc_1 2.08 mul_basecase
parks/32: redc_1 2.1 mul_basecase
bobcat/64: rsblsh1_n 1.15 addlsh1_n
element/64: rsblsh1_n 2.11 addlsh1_n
pirigentoo64/64: rsblsh2_n 1.30 rsblsh_n
surigentoo64/64: rsblsh2_n 1.30 rsblsh_n
matigentoo64/64: rsblsh2_n 1.37 rsblsh_n
element/64: rsblsh2_n 2.00 addlsh2_n
bobcat/64: rsblsh_n 1.14 addlsh_n
gege/64: rsblsh_n 1.54 rsblsh1_n
pilegentoo64/64: rsblsh_n 1.63 rsblsh1_n
bullgentoo64/64: rsblsh_n 1.71 rsblsh1_n
bobcat/64: rsblsh_n 1.71 rsblsh2_n
jaggentoo64/64: rsblsh_n 1.71 rsblsh2_n
bobcat/64: rsblsh_n 1.73 rsblsh1_n
slmgentoo64/64: rsblsh_n 1.74 rsblsh1_n
slmgentoo64/64: rsblsh_n 1.74 rsblsh2_n
jaggentoo64/64: rsblsh_n 1.84 rsblsh1_n
bobcat/64: rsh1add_n 1.17 rsh1sub_n
bobcat/64: rsh1add_n 1.27 addlsh1_n
glmgentoo64/64: rsh1add_n 1.33 addlsh1_n
slmgentoo64/64: rsh1add_n 1.33 addlsh1_n
beagle/32: rsh1add_n 1.36 addlsh1_n
tinker/32: rsh1add_n 1.36 addlsh1_n
glmgentoo64/64: rsh1sub_n 1.33 addlsh1_n
slmgentoo64/64: rsh1sub_n 1.33 addlsh1_n
tinker/32: rsh1sub_n 1.34 addlsh1_n
beagle/32: rsh1sub_n 1.36 addlsh1_n
g5/32: sbpi1_bdiv_r 1.27 mul_basecase
g5/mode64: sbpi1_bdiv_r 1.34 mul_basecase
slmgentoo64/32: sbpi1_bdiv_r 1.34 mul_basecase
gege/32: sbpi1_bdiv_r 1.40 mul_basecase
nhmgentoo64/64: sbpi1_bdiv_r 1.40 mul_basecase
k10gentoo64/32: sbpi1_bdiv_r 1.41 mul_basecase
wsmgentoo64/64: sbpi1_bdiv_r 1.41 mul_basecase
labrador/32: sbpi1_bdiv_r 1.5 mul_basecase
tambo/32: sbpi1_bdiv_r 1.5 mul_basecase
glmgentoo64/32: sbpi1_bdiv_r 1.50 mul_basecase
k8gentoo64/32: sbpi1_bdiv_r 1.53 mul_basecase
matigentoo64/32: sbpi1_bdiv_r 1.54 mul_basecase
cnrgentoo64/64: sbpi1_bdiv_r 1.55 mul_basecase
pnrgentoo64/64: sbpi1_bdiv_r 1.55 mul_basecase
cnrgentoo64/32: sbpi1_bdiv_r 1.57 mul_basecase
nhmgentoo64/32: sbpi1_bdiv_r 1.57 mul_basecase
jaggentoo64/32: sbpi1_bdiv_r 1.58 mul_basecase
pnrgentoo64/32: sbpi1_bdiv_r 1.58 mul_basecase
pilegentoo64/32: sbpi1_bdiv_r 1.59 mul_basecase
surigentoo64/32: sbpi1_bdiv_r 1.59 mul_basecase
pirigentoo64/32: sbpi1_bdiv_r 1.60 mul_basecase
excagentoo64/32: sbpi1_bdiv_r 1.62 mul_basecase
bullgentoo64/32: sbpi1_bdiv_r 1.63 mul_basecase
cough/32: sbpi1_bdiv_r 1.65 mul_basecase
bobcat/32: sbpi1_bdiv_r 1.69 mul_basecase
element/32: sbpi1_bdiv_r 1.70 mul_basecase
tinker/32: sbpi1_bdiv_r 1.73 mul_basecase
wsmgentoo64/32: sbpi1_bdiv_r 1.74 mul_basecase
gcc135/mode64: sbpi1_bdiv_r 1.80 mul_basecase
skygentoo64/32: sbpi1_bdiv_r 1.89 mul_basecase
beagle/32: sbpi1_bdiv_r 1.92 mul_basecase
yubel2/32: sbpi1_bdiv_r 1.93 mul_basecase
ivygentoo32/32: sbpi1_bdiv_r 1.96 mul_basecase
parks/32: sbpi1_bdiv_r 2 mul_basecase
sbrgentoo64/32: sbpi1_bdiv_r 2.04 mul_basecase
bwlgentoo64/32: sbpi1_bdiv_r 2.06 mul_basecase
hwlgentoo64/32: sbpi1_bdiv_r 2.10 mul_basecase
odc1/32: sqr_basecase 0.65 mul_basecase
slmgentoo64/32: sqr_basecase 0.65 mul_basecase
bullgentoo64/32: sqr_basecase 0.66 mul_basecase
g5/mode32: sqr_basecase 0.66 mul_basecase
gcc135/mode64: sqr_basecase 0.66 mul_basecase
gege/32: sqr_basecase 0.66 mul_basecase
glmgentoo64/64: sqr_basecase 0.66 mul_basecase
k10gentoo64/32: sqr_basecase 0.66 mul_basecase
k10gentoo64/64: sqr_basecase 0.66 mul_basecase
k8gentoo64/64: sqr_basecase 0.66 mul_basecase
nhmgentoo64/32: sqr_basecase 0.66 mul_basecase
bwlgentoo64/32: sqr_basecase 0.67 mul_basecase
gcc115/64: sqr_basecase 0.67 mul_basecase
gcc115/64: sqr_basecase 0.67 mul_basecase
ivygentoo32/32: sqr_basecase 0.67 mul_basecase
skygentoo64/32: sqr_basecase 0.67 mul_basecase
beagle/32: sqr_basecase 0.68 mul_basecase
excagentoo64/32: sqr_basecase 0.68 mul_basecase
glmgentoo64/32: sqr_basecase 0.68 mul_basecase
cough/32: sqr_basecase 0.69 mul_basecase
cough/64: sqr_basecase 0.69 mul_basecase
hwlgentoo64/32: sqr_basecase 0.69 mul_basecase
yubel2/32: sqr_basecase 0.69 mul_basecase
cnrgentoo64/32: sqr_basecase 0.70 mul_basecase
pnrgentoo64/32: sqr_basecase 0.70 mul_basecase
sbrgentoo64/32: sqr_basecase 0.70 mul_basecase
wsmgentoo64/32: sqr_basecase 0.70 mul_basecase
element/32: sqr_basecase 0.72 mul_basecase
gcc1-power7/mode64: sqr_basecase 0.72 mul_basecase
pirigentoo64/32: sqr_basecase 0.72 mul_basecase
surigentoo64/32: sqr_basecase 0.72 mul_basecase
g5/32: sqr_basecase 0.73 mul_basecase
parks/32: sqr_basecase 0.73 mul_basecase
tambo/32: sqr_basecase 0.73 mul_basecase
k8gentoo64/32: sqr_basecase 0.76 mul_basecase
labrador/32: sqr_basecase 0.76 mul_basecase
gcc2-power8/mode64: sqr_basecase 0.77 mul_basecase
bobcat/32: sqr_basecase 0.83 mul_basecase
gege/64: sqr_basecase 0.83 mul_basecase
bobcat/64: sublsh1_n 1.32 addlsh1_n
element/32: submul_1.3 1.27 addmul_1.3
ivygentoo32/32: submul_1.3 1.28 addmul_1.3
pnrgentoo64/32: submul_1.3 1.31 addmul_1.3
cnrgentoo64/32: submul_1.3 1.32 addmul_1.3