• Ethan Miller's avatar
    math/big: add assembly implementation of arith for ppc64{le} · 49551472
    Ethan Miller authored
    The existing implementation used a pure go implementation, leading to slow
    cryptographic performance.
    
    Implemented mulWW, subVV, mulAddVWW, addMulVVW, and bitLen for
    ppc64{le}.
    Implemented divWW for ppc64le only, as the DIVDEU instruction is only
    available on Power8 or newer.
    
    benchcmp output:
    
    benchmark                         old ns/op     new ns/op     delta
    BenchmarkSignP384                 28934360      10877330      -62.41%
    BenchmarkRSA2048Decrypt           41261033      5139930       -87.54%
    BenchmarkRSA2048Sign              45231300      7610985       -83.17%
    Benchmark3PrimeRSA2048Decrypt     20487300      2481408       -87.89%
    
    Fixes #16621
    
    Change-Id: If8b68963bb49909bde832f2bda08a3791c4f5b7a
    Reviewed-on: https://go-review.googlesource.com/26951
    Run-TryBot: Michael Munday <munday@ca.ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarMichael Munday <munday@ca.ibm.com>
    49551472
Name
Last commit
Last update
..
accuracy_string.go Loading commit data...
arith.go Loading commit data...
arith_386.s Loading commit data...
arith_amd64.s Loading commit data...
arith_amd64p32.s Loading commit data...
arith_arm.s Loading commit data...
arith_arm64.s Loading commit data...
arith_decl.go Loading commit data...
arith_decl_pure.go Loading commit data...
arith_mips64x.s Loading commit data...
arith_ppc64.s Loading commit data...
arith_ppc64le.s Loading commit data...
arith_ppc64x.s Loading commit data...
arith_s390x.s Loading commit data...
arith_test.go Loading commit data...
bits_test.go Loading commit data...
calibrate_test.go Loading commit data...
decimal.go Loading commit data...
decimal_test.go Loading commit data...
doc.go Loading commit data...
example_rat_test.go Loading commit data...
example_test.go Loading commit data...
float.go Loading commit data...
float_test.go Loading commit data...
floatconv.go Loading commit data...
floatconv_test.go Loading commit data...
floatexample_test.go Loading commit data...
floatmarsh.go Loading commit data...
floatmarsh_test.go Loading commit data...
ftoa.go Loading commit data...
gcd_test.go Loading commit data...
hilbert_test.go Loading commit data...
int.go Loading commit data...
int_test.go Loading commit data...
intconv.go Loading commit data...
intconv_test.go Loading commit data...
intmarsh.go Loading commit data...
intmarsh_test.go Loading commit data...
nat.go Loading commit data...
nat_test.go Loading commit data...
natconv.go Loading commit data...
natconv_test.go Loading commit data...
rat.go Loading commit data...
rat_test.go Loading commit data...
ratconv.go Loading commit data...
ratconv_test.go Loading commit data...
ratmarsh.go Loading commit data...
ratmarsh_test.go Loading commit data...
roundingmode_string.go Loading commit data...