aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/rewriteS390X.go
diff options
context:
space:
mode:
authorBrian Kessler <brian.m.kessler@gmail.com>2019-09-08 21:50:07 -0600
committerMartin Möhrmann <moehrmann@google.com>2019-11-07 16:30:46 +0000
commit6b1d5471b9ab649322def7075d488c65d5f78cbf (patch)
treefe326c2e33cd1e5b61562ff75fe81c278339e8f8 /src/cmd/compile/internal/ssa/rewriteS390X.go
parent14849f0fa57c67996bb00bd42bb14cef9f4e9a1e (diff)
downloadgo-6b1d5471b9ab649322def7075d488c65d5f78cbf.tar.gz
go-6b1d5471b9ab649322def7075d488c65d5f78cbf.zip
cmd/compile: add signed indivisibility by power of 2 rules
Commit 44343c777c (CL 173557) added rules for handling divisibility checks for powers of 2 for signed integers, x%c ==0. This change adds the complementary indivisibility rules, x%c != 0. Fixes #34166 Change-Id: I87379e30af7aff633371acca82db2397da9b2c07 Reviewed-on: https://go-review.googlesource.com/c/go/+/194219 Run-TryBot: Brian Kessler <brian.m.kessler@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/ssa/rewriteS390X.go')
-rw-r--r--src/cmd/compile/internal/ssa/rewriteS390X.go26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/cmd/compile/internal/ssa/rewriteS390X.go b/src/cmd/compile/internal/ssa/rewriteS390X.go
index 429e3d5be0..5c3be6118b 100644
--- a/src/cmd/compile/internal/ssa/rewriteS390X.go
+++ b/src/cmd/compile/internal/ssa/rewriteS390X.go
@@ -166,10 +166,10 @@ func rewriteValueS390X(v *Value) bool {
return rewriteValueS390X_OpEqB_0(v)
case OpEqPtr:
return rewriteValueS390X_OpEqPtr_0(v)
- case OpFloor:
- return rewriteValueS390X_OpFloor_0(v)
case OpFMA:
return rewriteValueS390X_OpFMA_0(v)
+ case OpFloor:
+ return rewriteValueS390X_OpFloor_0(v)
case OpGeq16:
return rewriteValueS390X_OpGeq16_0(v)
case OpGeq16U:
@@ -1928,17 +1928,6 @@ func rewriteValueS390X_OpEqPtr_0(v *Value) bool {
return true
}
}
-func rewriteValueS390X_OpFloor_0(v *Value) bool {
- // match: (Floor x)
- // result: (FIDBR [7] x)
- for {
- x := v.Args[0]
- v.reset(OpS390XFIDBR)
- v.AuxInt = 7
- v.AddArg(x)
- return true
- }
-}
func rewriteValueS390X_OpFMA_0(v *Value) bool {
// match: (FMA x y z)
// result: (FMADD z x y)
@@ -1953,6 +1942,17 @@ func rewriteValueS390X_OpFMA_0(v *Value) bool {
return true
}
}
+func rewriteValueS390X_OpFloor_0(v *Value) bool {
+ // match: (Floor x)
+ // result: (FIDBR [7] x)
+ for {
+ x := v.Args[0]
+ v.reset(OpS390XFIDBR)
+ v.AuxInt = 7
+ v.AddArg(x)
+ return true
+ }
+}
func rewriteValueS390X_OpGeq16_0(v *Value) bool {
b := v.Block
typ := &b.Func.Config.Types