• Carlos Eduardo Seo's avatar
    math/big: improve performance for addVV/subVV for ppc64x · 9459c03b
    Carlos Eduardo Seo authored
    This change adds a better asm implementation of addVV for ppc64x, with speedups
    up to nearly 3x in the best cases.
    
    benchmark                   old ns/op     new ns/op     delta
    BenchmarkAddVV/1-8          7.33          5.81          -20.74%
    BenchmarkAddVV/2-8          8.72          6.49          -25.57%
    BenchmarkAddVV/3-8          10.5          7.08          -32.57%
    BenchmarkAddVV/4-8          12.7          7.57          -40.39%
    BenchmarkAddVV/5-8          14.3          8.06          -43.64%
    BenchmarkAddVV/10-8         27.6          11.1          -59.78%
    BenchmarkAddVV/100-8        218           82.4          -62.20%
    BenchmarkAddVV/1000-8       2064          718           -65.21%
    BenchmarkAddVV/10000-8      20536         7153          -65.17%
    BenchmarkAddVV/100000-8     211004        72403         -65.69%
    
    benchmark                   old MB/s     new MB/s     speedup
    BenchmarkAddVV/1-8          8729.74      11006.26     1.26x
    BenchmarkAddVV/2-8          14683.65     19707.55     1.34x
    BenchmarkAddVV/3-8          18226.96     27103.63     1.49x
    BenchmarkAddVV/4-8          20204.50     33805.81     1.67x
    BenchmarkAddVV/5-8          22348.64     39694.06     1.78x
    BenchmarkAddVV/10-8         23212.74     57631.08     2.48x
    BenchmarkAddVV/100-8        29300.07     77629.53     2.65x
    BenchmarkAddVV/1000-8       31000.56     89094.54     2.87x
    BenchmarkAddVV/10000-8      31163.61     89469.16     2.87x
    BenchmarkAddVV/100000-8     30331.16     88393.73     2.91x
    
    It also adds the use of CTR for the loop counter in subVV, instead of
    manually updating the loop counter. This is slightly faster.
    
    Change-Id: Ic4b05cad384fd057972d46a5618ed5c3039d7460
    Reviewed-on: https://go-review.googlesource.com/41010
    Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarLynn Boger <laboger@linux.vnet.ibm.com>
    9459c03b
Name
Last commit
Last update
..
big Loading commit data...
bits Loading commit data...
cmplx Loading commit data...
rand Loading commit data...
abs.go Loading commit data...
acosh.go Loading commit data...
all_test.go Loading commit data...
arith_s390x.go Loading commit data...
arith_s390x_test.go Loading commit data...
asin.go Loading commit data...
asin_386.s Loading commit data...
asin_amd64.s Loading commit data...
asin_amd64p32.s Loading commit data...
asin_arm.s Loading commit data...
asinh.go Loading commit data...
atan.go Loading commit data...
atan2.go Loading commit data...
atan2_386.s Loading commit data...
atan2_amd64.s Loading commit data...
atan2_amd64p32.s Loading commit data...
atan2_arm.s Loading commit data...
atan_386.s Loading commit data...
atan_amd64.s Loading commit data...
atan_amd64p32.s Loading commit data...
atan_arm.s Loading commit data...
atanh.go Loading commit data...
bits.go Loading commit data...
cbrt.go Loading commit data...
const.go Loading commit data...
copysign.go Loading commit data...
cosh_s390x.s Loading commit data...
dim.go Loading commit data...
dim_386.s Loading commit data...
dim_amd64.s Loading commit data...
dim_amd64p32.s Loading commit data...
dim_arm.s Loading commit data...
dim_arm64.s Loading commit data...
dim_s390x.s Loading commit data...
erf.go Loading commit data...
exp.go Loading commit data...
exp2_386.s Loading commit data...
exp2_amd64.s Loading commit data...
exp2_amd64p32.s Loading commit data...
exp2_arm.s Loading commit data...
exp_386.s Loading commit data...
exp_amd64.s Loading commit data...
exp_amd64p32.s Loading commit data...
exp_arm.s Loading commit data...
expm1.go Loading commit data...
expm1_386.s Loading commit data...
expm1_amd64.s Loading commit data...
expm1_amd64p32.s Loading commit data...
expm1_arm.s Loading commit data...
export_s390x_test.go Loading commit data...
export_test.go Loading commit data...
floor.go Loading commit data...
floor_386.s Loading commit data...
floor_amd64.s Loading commit data...
floor_amd64p32.s Loading commit data...
floor_arm.s Loading commit data...
floor_arm64.s Loading commit data...
floor_asm.go Loading commit data...
floor_ppc64x.s Loading commit data...
floor_s390x.s Loading commit data...
frexp.go Loading commit data...
frexp_386.s Loading commit data...
frexp_amd64.s Loading commit data...
frexp_amd64p32.s Loading commit data...
frexp_arm.s Loading commit data...
gamma.go Loading commit data...
hypot.go Loading commit data...
hypot_386.s Loading commit data...
hypot_amd64.s Loading commit data...
hypot_amd64p32.s Loading commit data...
hypot_arm.s Loading commit data...
j0.go Loading commit data...
j1.go Loading commit data...
jn.go Loading commit data...
ldexp.go Loading commit data...
ldexp_386.s Loading commit data...
ldexp_amd64.s Loading commit data...
ldexp_amd64p32.s Loading commit data...
ldexp_arm.s Loading commit data...
lgamma.go Loading commit data...
log.go Loading commit data...
log10.go Loading commit data...
log10_386.s Loading commit data...
log10_amd64.s Loading commit data...
log10_amd64p32.s Loading commit data...
log10_arm.s Loading commit data...
log10_s390x.s Loading commit data...
log1p.go Loading commit data...
log1p_386.s Loading commit data...
log1p_amd64.s Loading commit data...
log1p_amd64p32.s Loading commit data...
log1p_arm.s Loading commit data...
log_386.s Loading commit data...
log_amd64.s Loading commit data...
log_amd64p32.s Loading commit data...
log_arm.s Loading commit data...
logb.go Loading commit data...
mod.go Loading commit data...
mod_386.s Loading commit data...
mod_amd64.s Loading commit data...
mod_amd64p32.s Loading commit data...
mod_arm.s Loading commit data...
modf.go Loading commit data...
modf_386.s Loading commit data...
modf_amd64.s Loading commit data...
modf_amd64p32.s Loading commit data...
modf_arm.s Loading commit data...
modf_arm64.s Loading commit data...
nextafter.go Loading commit data...
pow.go Loading commit data...
pow10.go Loading commit data...
remainder.go Loading commit data...
remainder_386.s Loading commit data...
remainder_amd64.s Loading commit data...
remainder_amd64p32.s Loading commit data...
remainder_arm.s Loading commit data...
signbit.go Loading commit data...
sin.go Loading commit data...
sin_386.s Loading commit data...
sin_amd64.s Loading commit data...
sin_amd64p32.s Loading commit data...
sin_arm.s Loading commit data...
sin_s390x.s Loading commit data...
sincos.go Loading commit data...
sincos_386.go Loading commit data...
sincos_386.s Loading commit data...
sinh.go Loading commit data...
sinh_s390x.s Loading commit data...
sinh_stub.s Loading commit data...
sqrt.go Loading commit data...
sqrt_386.s Loading commit data...
sqrt_amd64.s Loading commit data...
sqrt_amd64p32.s Loading commit data...
sqrt_arm.s Loading commit data...
sqrt_arm64.s Loading commit data...
sqrt_mipsx.s Loading commit data...
sqrt_ppc64x.s Loading commit data...
sqrt_s390x.s Loading commit data...
stubs_arm64.s Loading commit data...
stubs_mips64x.s Loading commit data...
stubs_mipsx.s Loading commit data...
stubs_ppc64x.s Loading commit data...
stubs_s390x.s Loading commit data...
tan.go Loading commit data...
tan_386.s Loading commit data...
tan_amd64.s Loading commit data...
tan_amd64p32.s Loading commit data...
tan_arm.s Loading commit data...
tanh.go Loading commit data...
tanh_s390x.s Loading commit data...
unsafe.go Loading commit data...