cmd/compile: absorb more Not ops into Neq* and Eq* ops

We absorbed Not into most integer comparisons but not into pointer
and floating point equality checks.

The new cases trigger more than 300 times during make.bash.

Change-Id: I77c6b31fcacde10da5470b73fc001a19521ce78d
Reviewed-on: https://go-review.googlesource.com/c/go/+/200618
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
Michael Munday 2019-10-11 03:51:28 -07:00
parent 26d5f032e9
commit bb7890b85a
2 changed files with 98 additions and 15 deletions

View file

@ -36678,6 +36678,48 @@ func rewriteValuegeneric_OpNot_0(v *Value) bool {
v.AddArg(y)
return true
}
// match: (Not (EqPtr x y))
// result: (NeqPtr x y)
for {
v_0 := v.Args[0]
if v_0.Op != OpEqPtr {
break
}
y := v_0.Args[1]
x := v_0.Args[0]
v.reset(OpNeqPtr)
v.AddArg(x)
v.AddArg(y)
return true
}
// match: (Not (Eq64F x y))
// result: (Neq64F x y)
for {
v_0 := v.Args[0]
if v_0.Op != OpEq64F {
break
}
y := v_0.Args[1]
x := v_0.Args[0]
v.reset(OpNeq64F)
v.AddArg(x)
v.AddArg(y)
return true
}
// match: (Not (Eq32F x y))
// result: (Neq32F x y)
for {
v_0 := v.Args[0]
if v_0.Op != OpEq32F {
break
}
y := v_0.Args[1]
x := v_0.Args[0]
v.reset(OpNeq32F)
v.AddArg(x)
v.AddArg(y)
return true
}
// match: (Not (Neq64 x y))
// result: (Eq64 x y)
for {
@ -36692,6 +36734,9 @@ func rewriteValuegeneric_OpNot_0(v *Value) bool {
v.AddArg(y)
return true
}
return false
}
func rewriteValuegeneric_OpNot_10(v *Value) bool {
// match: (Not (Neq32 x y))
// result: (Eq32 x y)
for {
@ -36734,9 +36779,6 @@ func rewriteValuegeneric_OpNot_0(v *Value) bool {
v.AddArg(y)
return true
}
return false
}
func rewriteValuegeneric_OpNot_10(v *Value) bool {
// match: (Not (NeqB x y))
// result: (EqB x y)
for {
@ -36751,6 +36793,48 @@ func rewriteValuegeneric_OpNot_10(v *Value) bool {
v.AddArg(y)
return true
}
// match: (Not (NeqPtr x y))
// result: (EqPtr x y)
for {
v_0 := v.Args[0]
if v_0.Op != OpNeqPtr {
break
}
y := v_0.Args[1]
x := v_0.Args[0]
v.reset(OpEqPtr)
v.AddArg(x)
v.AddArg(y)
return true
}
// match: (Not (Neq64F x y))
// result: (Eq64F x y)
for {
v_0 := v.Args[0]
if v_0.Op != OpNeq64F {
break
}
y := v_0.Args[1]
x := v_0.Args[0]
v.reset(OpEq64F)
v.AddArg(x)
v.AddArg(y)
return true
}
// match: (Not (Neq32F x y))
// result: (Eq32F x y)
for {
v_0 := v.Args[0]
if v_0.Op != OpNeq32F {
break
}
y := v_0.Args[1]
x := v_0.Args[0]
v.reset(OpEq32F)
v.AddArg(x)
v.AddArg(y)
return true
}
// match: (Not (Greater64 x y))
// result: (Leq64 x y)
for {
@ -36793,6 +36877,9 @@ func rewriteValuegeneric_OpNot_10(v *Value) bool {
v.AddArg(y)
return true
}
return false
}
func rewriteValuegeneric_OpNot_20(v *Value) bool {
// match: (Not (Greater8 x y))
// result: (Leq8 x y)
for {
@ -36877,9 +36964,6 @@ func rewriteValuegeneric_OpNot_10(v *Value) bool {
v.AddArg(y)
return true
}
return false
}
func rewriteValuegeneric_OpNot_20(v *Value) bool {
// match: (Not (Geq32 x y))
// result: (Less32 x y)
for {
@ -36936,6 +37020,9 @@ func rewriteValuegeneric_OpNot_20(v *Value) bool {
v.AddArg(y)
return true
}
return false
}
func rewriteValuegeneric_OpNot_30(v *Value) bool {
// match: (Not (Geq32U x y))
// result: (Less32U x y)
for {
@ -37020,9 +37107,6 @@ func rewriteValuegeneric_OpNot_20(v *Value) bool {
v.AddArg(y)
return true
}
return false
}
func rewriteValuegeneric_OpNot_30(v *Value) bool {
// match: (Not (Less8 x y))
// result: (Geq8 x y)
for {
@ -37079,6 +37163,9 @@ func rewriteValuegeneric_OpNot_30(v *Value) bool {
v.AddArg(y)
return true
}
return false
}
func rewriteValuegeneric_OpNot_40(v *Value) bool {
// match: (Not (Less8U x y))
// result: (Geq8U x y)
for {
@ -37163,9 +37250,6 @@ func rewriteValuegeneric_OpNot_30(v *Value) bool {
v.AddArg(y)
return true
}
return false
}
func rewriteValuegeneric_OpNot_40(v *Value) bool {
// match: (Not (Leq32U x y))
// result: (Greater32U x y)
for {