mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: add boolean simplification rules
These collectively fire a few hundred times during make.bash, mostly rewriting XOR SETNE -> SETEQ. Fixes #17905. Change-Id: Ic5eb241ee93ed67099da3de11f59e4df9fab64a3 Reviewed-on: https://go-review.googlesource.com/42491 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
9aeced650f
commit
6a24b2d0c1
4 changed files with 215 additions and 1 deletions
|
|
@ -14573,6 +14573,44 @@ func rewriteValuegeneric_OpNeqB_0(v *Value) bool {
|
|||
v.AddArg(x)
|
||||
return true
|
||||
}
|
||||
// match: (NeqB (Not x) (Not y))
|
||||
// cond:
|
||||
// result: (NeqB x y)
|
||||
for {
|
||||
v_0 := v.Args[0]
|
||||
if v_0.Op != OpNot {
|
||||
break
|
||||
}
|
||||
x := v_0.Args[0]
|
||||
v_1 := v.Args[1]
|
||||
if v_1.Op != OpNot {
|
||||
break
|
||||
}
|
||||
y := v_1.Args[0]
|
||||
v.reset(OpNeqB)
|
||||
v.AddArg(x)
|
||||
v.AddArg(y)
|
||||
return true
|
||||
}
|
||||
// match: (NeqB (Not y) (Not x))
|
||||
// cond:
|
||||
// result: (NeqB x y)
|
||||
for {
|
||||
v_0 := v.Args[0]
|
||||
if v_0.Op != OpNot {
|
||||
break
|
||||
}
|
||||
y := v_0.Args[0]
|
||||
v_1 := v.Args[1]
|
||||
if v_1.Op != OpNot {
|
||||
break
|
||||
}
|
||||
x := v_1.Args[0]
|
||||
v.reset(OpNeqB)
|
||||
v.AddArg(x)
|
||||
v.AddArg(y)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValuegeneric_OpNeqInter_0(v *Value) bool {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue