aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/rewriteARM64.go
diff options
context:
space:
mode:
authorJosh Bleecher Snyder <josharian@gmail.com>2020-02-24 13:53:53 -0800
committerJosh Bleecher Snyder <josharian@gmail.com>2020-02-27 20:34:49 +0000
commit2c859eae1da367ab292f65ca4fed4f6c89d644f9 (patch)
tree13a259b0ad341540709f06a07ea0205118fa2ef4 /src/cmd/compile/internal/ssa/rewriteARM64.go
parent4ae1879dda1a20176dddc62e827404c75a869fa0 (diff)
downloadgo-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.go68
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]