-
- Downloads
cmd/compile: avoid ANDCCconst on PPC64 if condition not needed
In the PPC64 ISA, the instruction to do an 'and' operation using an immediate constant is only available in the form that also sets CR0 (i.e. clobbers the condition register.) This means CR0 is being clobbered unnecessarily in many cases. That affects some decisions made during some compiler passes that check for it. In those cases when the constant used by the ANDCC is a right justified consecutive set of bits, a shift instruction can be used which has the same effect if CR0 does not need to be set. The rule to do that has been added to the late rules file after other rules using ANDCCconst have been processed in the main rules file. Some codegen tests had to be updated since ANDCC is no longer generated for some cases. A new test case was added to verify the ANDCC is present if the results for both the AND and CR0 are used. Change-Id: I304f607c039a458e2d67d25351dd00aea72ba542 Reviewed-on: https://go-review.googlesource.com/c/go/+/531435 Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> Reviewed-by:Paul Murphy <murp@ibm.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by:
Carlos Amedee <carlos@golang.org> Reviewed-by:
Jayanth Krishnamurthy <jayanth.krishnamurthy@ibm.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by:
Dmitri Shuralyov <dmitshur@google.com>
Showing
- src/cmd/compile/internal/ssa/_gen/PPC64.rules 2 additions, 6 deletionssrc/cmd/compile/internal/ssa/_gen/PPC64.rules
- src/cmd/compile/internal/ssa/_gen/PPC64latelower.rules 3 additions, 0 deletionssrc/cmd/compile/internal/ssa/_gen/PPC64latelower.rules
- src/cmd/compile/internal/ssa/rewritePPC64.go 60 additions, 220 deletionssrc/cmd/compile/internal/ssa/rewritePPC64.go
- src/cmd/compile/internal/ssa/rewritePPC64latelower.go 24 additions, 0 deletionssrc/cmd/compile/internal/ssa/rewritePPC64latelower.go
- test/codegen/arithmetic.go 6 additions, 6 deletionstest/codegen/arithmetic.go
- test/codegen/bool.go 16 additions, 8 deletionstest/codegen/bool.go
- test/codegen/shift.go 9 additions, 9 deletionstest/codegen/shift.go
Loading
Please register or sign in to comment