blob: 02930e5e834bae5ffe270b87cee029f02e684325 [file] [log] [blame]
// Code generated from _gen/LOONG64latelower.rules using 'go generate'; DO NOT EDIT.
package ssa
func rewriteValueLOONG64latelower(v *Value) bool {
switch v.Op {
case OpLOONG64MOVVconst:
return rewriteValueLOONG64latelower_OpLOONG64MOVVconst(v)
case OpLOONG64SLLVconst:
return rewriteValueLOONG64latelower_OpLOONG64SLLVconst(v)
}
return false
}
func rewriteValueLOONG64latelower_OpLOONG64MOVVconst(v *Value) bool {
// match: (MOVVconst [0])
// result: (ZERO)
for {
if auxIntToInt64(v.AuxInt) != 0 {
break
}
v.reset(OpLOONG64ZERO)
return true
}
return false
}
func rewriteValueLOONG64latelower_OpLOONG64SLLVconst(v *Value) bool {
v_0 := v.Args[0]
// match: (SLLVconst [1] x)
// result: (ADDV x x)
for {
if auxIntToInt64(v.AuxInt) != 1 {
break
}
x := v_0
v.reset(OpLOONG64ADDV)
v.AddArg2(x, x)
return true
}
return false
}
func rewriteBlockLOONG64latelower(b *Block) bool {
switch b.Kind {
case BlockLOONG64EQZ:
// match: (EQZ (XOR x y) yes no)
// result: (BEQ x y yes no)
for b.Controls[0].Op == OpLOONG64XOR {
v_0 := b.Controls[0]
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
x := v_0_0
y := v_0_1
b.resetWithControl2(BlockLOONG64BEQ, x, y)
return true
}
}
case BlockLOONG64NEZ:
// match: (NEZ (XOR x y) yes no)
// result: (BNE x y yes no)
for b.Controls[0].Op == OpLOONG64XOR {
v_0 := b.Controls[0]
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
x := v_0_0
y := v_0_1
b.resetWithControl2(BlockLOONG64BNE, x, y)
return true
}
}
}
return false
}