diff options
author | Josh Bleecher Snyder <josharian@gmail.com> | 2020-02-24 13:53:53 -0800 |
---|---|---|
committer | Josh Bleecher Snyder <josharian@gmail.com> | 2020-02-27 20:34:49 +0000 |
commit | 2c859eae1da367ab292f65ca4fed4f6c89d644f9 (patch) | |
tree | 13a259b0ad341540709f06a07ea0205118fa2ef4 /src/cmd/compile/internal/ssa/rewriteARM64.go | |
parent | 4ae1879dda1a20176dddc62e827404c75a869fa0 (diff) | |
download | go-2c859eae1da367ab292f65ca4fed4f6c89d644f9.tar.gz go-2c859eae1da367ab292f65ca4fed4f6c89d644f9.zip |
cmd/compile: ignore div/mod in prove on non-x86 architectures
Instead of writing AuxInt during prove and then zeroing it during lower,
just don't write it in the first place.
Passes toolstash-check -all.
Change-Id: Iea4b555029a9d69332e835536f9cf3a42b8223db
Reviewed-on: https://go-review.googlesource.com/c/go/+/220682
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/rewriteARM64.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/rewriteARM64.go | 68 |
1 files changed, 8 insertions, 60 deletions
diff --git a/src/cmd/compile/internal/ssa/rewriteARM64.go b/src/cmd/compile/internal/ssa/rewriteARM64.go index 3bb86f10bc..4bee98e4d3 100644 --- a/src/cmd/compile/internal/ssa/rewriteARM64.go +++ b/src/cmd/compile/internal/ssa/rewriteARM64.go @@ -609,7 +609,8 @@ func rewriteValueARM64(v *Value) bool { case OpDiv16u: return rewriteValueARM64_OpDiv16u(v) case OpDiv32: - return rewriteValueARM64_OpDiv32(v) + v.Op = OpARM64DIVW + return true case OpDiv32F: v.Op = OpARM64FDIVS return true @@ -617,7 +618,8 @@ func rewriteValueARM64(v *Value) bool { v.Op = OpARM64UDIVW return true case OpDiv64: - return rewriteValueARM64_OpDiv64(v) + v.Op = OpARM64DIV + return true case OpDiv64F: v.Op = OpARM64FDIVD return true @@ -766,12 +768,14 @@ func rewriteValueARM64(v *Value) bool { case OpMod16u: return rewriteValueARM64_OpMod16u(v) case OpMod32: - return rewriteValueARM64_OpMod32(v) + v.Op = OpARM64MODW + return true case OpMod32u: v.Op = OpARM64UMODW return true case OpMod64: - return rewriteValueARM64_OpMod64(v) + v.Op = OpARM64MOD + return true case OpMod64u: v.Op = OpARM64UMOD return true @@ -23150,34 +23154,6 @@ func rewriteValueARM64_OpDiv16u(v *Value) bool { return true } } -func rewriteValueARM64_OpDiv32(v *Value) bool { - v_1 := v.Args[1] - v_0 := v.Args[0] - // match: (Div32 [a] x y) - // result: (DIVW x y) - for { - x := v_0 - y := v_1 - v.reset(OpARM64DIVW) - v.AddArg(x) - v.AddArg(y) - return true - } -} -func rewriteValueARM64_OpDiv64(v *Value) bool { - v_1 := v.Args[1] - v_0 := v.Args[0] - // match: (Div64 [a] x y) - // result: (DIV x y) - for { - x := v_0 - y := v_1 - v.reset(OpARM64DIV) - v.AddArg(x) - v.AddArg(y) - return true - } -} func rewriteValueARM64_OpDiv8(v *Value) bool { v_1 := v.Args[1] v_0 := v.Args[0] @@ -24604,34 +24580,6 @@ func rewriteValueARM64_OpMod16u(v *Value) bool { return true } } -func rewriteValueARM64_OpMod32(v *Value) bool { - v_1 := v.Args[1] - v_0 := v.Args[0] - // match: (Mod32 [a] x y) - // result: (MODW x y) - for { - x := v_0 - y := v_1 - v.reset(OpARM64MODW) - v.AddArg(x) - v.AddArg(y) - return true - } -} -func rewriteValueARM64_OpMod64(v *Value) bool { - v_1 := v.Args[1] - v_0 := v.Args[0] - // match: (Mod64 [a] x y) - // result: (MOD x y) - for { - x := v_0 - y := v_1 - v.reset(OpARM64MOD) - v.AddArg(x) - v.AddArg(y) - return true - } -} func rewriteValueARM64_OpMod8(v *Value) bool { v_1 := v.Args[1] v_0 := v.Args[0] |