aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLynn Boger <laboger@linux.vnet.ibm.com>2020-09-23 11:06:39 -0400
committerLynn Boger <laboger@linux.vnet.ibm.com>2020-09-28 18:13:48 +0000
commita424f6e45e29960c933a7ccc1cd8fc9bb2766f15 (patch)
treeae2e0f78c969a9c6b4fc62b33a7a27974d590943 /test
parent874b3132a84cf76da6a48978826c04c380a37a50 (diff)
downloadgo-a424f6e45e29960c933a7ccc1cd8fc9bb2766f15.tar.gz
go-a424f6e45e29960c933a7ccc1cd8fc9bb2766f15.zip
cmd/asm,cmd/compile,cmd/internal/obj/ppc64: add extswsli support on power9
This adds support for the extswsli instruction which combines extsw followed by a shift. New benchmark demonstrates the improvement: name old time/op new time/op delta ExtShift 1.34µs ± 0% 1.30µs ± 0% -3.15% (p=0.057 n=4+3) Change-Id: I21b410676fdf15d20e0cbbaa75d7c6dcd3bbb7b0 Reviewed-on: https://go-review.googlesource.com/c/go/+/257017 Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Carlos Eduardo Seo <carlos.seo@gmail.com> Trust: Lynn Boger <laboger@linux.vnet.ibm.com>
Diffstat (limited to 'test')
-rw-r--r--test/codegen/shift.go7
1 files changed, 5 insertions, 2 deletions
diff --git a/test/codegen/shift.go b/test/codegen/shift.go
index 32214851b5..abc4b091c9 100644
--- a/test/codegen/shift.go
+++ b/test/codegen/shift.go
@@ -182,7 +182,7 @@ func checkUnneededTrunc(tab *[100000]uint32, d uint64, v uint32, h uint16, b byt
return f, g
}
-func checkCombinedShifts(v8 uint8, v16 uint16, v32 uint32, v64 uint64) (uint8, uint16, uint32, uint64) {
+func checkCombinedShifts(v8 uint8, v16 uint16, v32 uint32, x32 int32, v64 uint64) (uint8, uint16, uint32, uint64, int64) {
// ppc64le:-"AND","CLRLSLWI"
// ppc64:-"AND","CLRLSLWI"
@@ -202,7 +202,10 @@ func checkCombinedShifts(v8 uint8, v16 uint16, v32 uint32, v64 uint64) (uint8, u
// ppc64le:-"AND","CLRLSLDI"
// ppc64:-"AND","CLRLSLDI"
i := (v64 & 0xFFFFFFFF) << 5
- return f, g, h, i
+ // ppc64le/power9:-"SLD","EXTSWSLI"
+ // ppc64/power9:-"SLD","EXTSWSLI"
+ j := int64(x32+32)*8
+ return f, g, h, i, j
}
func checkWidenAfterShift(v int64, u uint64) (int64, uint64) {