diff options
| author | Carlos Eduardo Seo <cseo@linux.vnet.ibm.com> | 2019-04-24 14:33:50 -0300 |
|---|---|---|
| committer | Carlos Eduardo Seo <cseo@linux.vnet.ibm.com> | 2019-04-28 23:51:04 +0000 |
| commit | 50ad09418eb22cb9f6294ca86b0bfd77af7d2128 (patch) | |
| tree | 44919a260c51050434e79f0513b206f950252903 /test/codegen | |
| parent | 6b692300a136ab92bd16ccc6134a0f19f2cd63be (diff) | |
| download | go-50ad09418eb22cb9f6294ca86b0bfd77af7d2128.tar.xz | |
cmd/compile: intrinsify math/bits.Add64 for ppc64x
This change creates an intrinsic for Add64 for ppc64x and adds a
testcase for it.
name old time/op new time/op delta
Add64-160 1.90ns ±40% 2.29ns ± 0% ~ (p=0.119 n=5+5)
Add64multiple-160 6.69ns ± 2% 2.45ns ± 4% -63.47% (p=0.016 n=4+5)
Change-Id: I9abe6fb023fdf62eea3c9b46a1820f60bb0a7f97
Reviewed-on: https://go-review.googlesource.com/c/go/+/173758
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
Run-TryBot: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
Diffstat (limited to 'test/codegen')
| -rw-r--r-- | test/codegen/mathbits.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/test/codegen/mathbits.go b/test/codegen/mathbits.go index 70874590fe..b60e0ff519 100644 --- a/test/codegen/mathbits.go +++ b/test/codegen/mathbits.go @@ -410,24 +410,32 @@ func AddM(p, q, r *[3]uint) { func Add64(x, y, ci uint64) (r, co uint64) { // arm64:"ADDS","ADCS","ADC",-"ADD\t",-"CMP" // amd64:"NEGL","ADCQ","SBBQ","NEGQ" + // ppc64: "ADDC", "ADDE", "ADDZE" + // ppc64le: "ADDC", "ADDE", "ADDZE" return bits.Add64(x, y, ci) } func Add64C(x, ci uint64) (r, co uint64) { // arm64:"ADDS","ADCS","ADC",-"ADD\t",-"CMP" // amd64:"NEGL","ADCQ","SBBQ","NEGQ" + // ppc64: "ADDC", "ADDE", "ADDZE" + // ppc64le: "ADDC", "ADDE", "ADDZE" return bits.Add64(x, 7, ci) } func Add64Z(x, y uint64) (r, co uint64) { // arm64:"ADDS","ADC",-"ADCS",-"ADD\t",-"CMP" // amd64:"ADDQ","SBBQ","NEGQ",-"NEGL",-"ADCQ" + // ppc64: "ADDC", "ADDE", "ADDZE" + // ppc64le: "ADDC", "ADDE", "ADDZE" return bits.Add64(x, y, 0) } func Add64R(x, y, ci uint64) uint64 { // arm64:"ADDS","ADCS",-"ADD\t",-"CMP" // amd64:"NEGL","ADCQ",-"SBBQ",-"NEGQ" + // ppc64: "ADDC", "ADDE", "ADDZE" + // ppc64le: "ADDC", "ADDE", "ADDZE" r, _ := bits.Add64(x, y, ci) return r } @@ -436,6 +444,8 @@ func Add64M(p, q, r *[3]uint64) { r[0], c = bits.Add64(p[0], q[0], c) // arm64:"ADCS",-"ADD\t",-"CMP" // amd64:"ADCQ",-"NEGL",-"SBBQ",-"NEGQ" + // ppc64: "ADDC", "ADDE", "ADDZE" + // ppc64le: "ADDC", "ADDE", "ADDZE" r[1], c = bits.Add64(p[1], q[1], c) r[2], c = bits.Add64(p[2], q[2], c) } |
