mirror of
https://github.com/golang/go
synced 2024-09-29 14:14:29 -06:00
cmd/compile: optimise x | ^x
This commit is contained in:
parent
2d95831574
commit
4e3ac1190c
@ -515,8 +515,9 @@
|
|||||||
|
|
||||||
// simplifications
|
// simplifications
|
||||||
(Or(64|32|16|8) x x) => x
|
(Or(64|32|16|8) x x) => x
|
||||||
(Or(64|32|16|8) (Const(64|32|16|8) [0]) x) => x
|
(Or(64|32|16|8) (Const(64|32|16|8) [0]) x) => x
|
||||||
(Or(64|32|16|8) (Const(64|32|16|8) [-1]) _) => (Const(64|32|16|8) [-1])
|
(Or(64|32|16|8) (Const(64|32|16|8) [-1]) _) => (Const(64|32|16|8) [-1])
|
||||||
|
(Or(64|32|16|8) (Com(64|32|16|8) x) x) => (Const(64|32|16|8) [-1])
|
||||||
|
|
||||||
(And(64|32|16|8) x x) => x
|
(And(64|32|16|8) x x) => x
|
||||||
(And(64|32|16|8) (Const(64|32|16|8) [-1]) x) => x
|
(And(64|32|16|8) (Const(64|32|16|8) [-1]) x) => x
|
||||||
|
@ -17160,6 +17160,23 @@ func rewriteValuegeneric_OpOr16(v *Value) bool {
|
|||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
// match: (Or16 (Com16 x) x)
|
||||||
|
// result: (Const16 [-1])
|
||||||
|
for {
|
||||||
|
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||||
|
if v_0.Op != OpCom16 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
x := v_0.Args[0]
|
||||||
|
if x != v_1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
v.reset(OpConst16)
|
||||||
|
v.AuxInt = int16ToAuxInt(-1)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
// match: (Or16 x (Or16 x y))
|
// match: (Or16 x (Or16 x y))
|
||||||
// result: (Or16 x y)
|
// result: (Or16 x y)
|
||||||
for {
|
for {
|
||||||
@ -17338,6 +17355,23 @@ func rewriteValuegeneric_OpOr32(v *Value) bool {
|
|||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
// match: (Or32 (Com32 x) x)
|
||||||
|
// result: (Const32 [-1])
|
||||||
|
for {
|
||||||
|
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||||
|
if v_0.Op != OpCom32 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
x := v_0.Args[0]
|
||||||
|
if x != v_1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
v.reset(OpConst32)
|
||||||
|
v.AuxInt = int32ToAuxInt(-1)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
// match: (Or32 x (Or32 x y))
|
// match: (Or32 x (Or32 x y))
|
||||||
// result: (Or32 x y)
|
// result: (Or32 x y)
|
||||||
for {
|
for {
|
||||||
@ -17516,6 +17550,23 @@ func rewriteValuegeneric_OpOr64(v *Value) bool {
|
|||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
// match: (Or64 (Com64 x) x)
|
||||||
|
// result: (Const64 [-1])
|
||||||
|
for {
|
||||||
|
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||||
|
if v_0.Op != OpCom64 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
x := v_0.Args[0]
|
||||||
|
if x != v_1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
v.reset(OpConst64)
|
||||||
|
v.AuxInt = int64ToAuxInt(-1)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
// match: (Or64 x (Or64 x y))
|
// match: (Or64 x (Or64 x y))
|
||||||
// result: (Or64 x y)
|
// result: (Or64 x y)
|
||||||
for {
|
for {
|
||||||
@ -17694,6 +17745,23 @@ func rewriteValuegeneric_OpOr8(v *Value) bool {
|
|||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
// match: (Or8 (Com8 x) x)
|
||||||
|
// result: (Const8 [-1])
|
||||||
|
for {
|
||||||
|
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||||
|
if v_0.Op != OpCom8 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
x := v_0.Args[0]
|
||||||
|
if x != v_1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
v.reset(OpConst8)
|
||||||
|
v.AuxInt = int8ToAuxInt(-1)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
// match: (Or8 x (Or8 x y))
|
// match: (Or8 x (Or8 x y))
|
||||||
// result: (Or8 x y)
|
// result: (Or8 x y)
|
||||||
for {
|
for {
|
||||||
|
Loading…
Reference in New Issue
Block a user