diff options
author | Brian Kessler <brian.m.kessler@gmail.com> | 2019-09-08 21:50:07 -0600 |
---|---|---|
committer | Martin Möhrmann <moehrmann@google.com> | 2019-11-07 16:30:46 +0000 |
commit | 6b1d5471b9ab649322def7075d488c65d5f78cbf (patch) | |
tree | fe326c2e33cd1e5b61562ff75fe81c278339e8f8 /src/cmd/compile/internal/ssa/rewriteS390X.go | |
parent | 14849f0fa57c67996bb00bd42bb14cef9f4e9a1e (diff) | |
download | go-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.go | 26 |
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 |