return false
}
func rewriteValueLOONG64_OpLOONG64MASKEQZ(v *Value) bool {
+ v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MASKEQZ (MOVVconst [0]) cond)
// result: (MOVVconst [0])
v.AuxInt = int64ToAuxInt(0)
return true
}
+ // match: (MASKEQZ x (MOVVconst [c]))
+ // cond: c == 0
+ // result: (MOVVconst [0])
+ for {
+ if v_1.Op != OpLOONG64MOVVconst {
+ break
+ }
+ c := auxIntToInt64(v_1.AuxInt)
+ if !(c == 0) {
+ break
+ }
+ v.reset(OpLOONG64MOVVconst)
+ v.AuxInt = int64ToAuxInt(0)
+ return true
+ }
+ // match: (MASKEQZ x (MOVVconst [c]))
+ // cond: c != 0
+ // result: x
+ for {
+ x := v_0
+ if v_1.Op != OpLOONG64MOVVconst {
+ break
+ }
+ c := auxIntToInt64(v_1.AuxInt)
+ if !(c != 0) {
+ break
+ }
+ v.copyOf(x)
+ return true
+ }
return false
}
func rewriteValueLOONG64_OpLOONG64MASKNEZ(v *Value) bool {
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x16 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SLLV <t> x (ZeroExt16to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt16to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x32 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SLLV <t> x (ZeroExt32to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt32to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x64 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SLLV <t> x y))
+ // result: (MASKEQZ (SLLV <t> x y) (SGTU (MOVVconst <typ.UInt64> [64]) y))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
v2.AuxInt = int64ToAuxInt(64)
v1.AddArg2(v2, y)
- v0.AddArg(v1)
- v3 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v3.AddArg2(x, y)
- v.AddArg2(v0, v3)
+ v.AddArg2(v0, v1)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x8 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SLLV <t> x (ZeroExt8to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt8to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x16 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SLLV <t> x (ZeroExt16to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt16to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x32 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SLLV <t> x (ZeroExt32to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt32to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x64 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SLLV <t> x y))
+ // result: (MASKEQZ (SLLV <t> x y) (SGTU (MOVVconst <typ.UInt64> [64]) y))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
v2.AuxInt = int64ToAuxInt(64)
v1.AddArg2(v2, y)
- v0.AddArg(v1)
- v3 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v3.AddArg2(x, y)
- v.AddArg2(v0, v3)
+ v.AddArg2(v0, v1)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x8 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SLLV <t> x (ZeroExt8to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt8to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x16 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SLLV <t> x (ZeroExt16to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt16to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x32 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SLLV <t> x (ZeroExt32to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt32to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x64 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SLLV <t> x y))
+ // result: (MASKEQZ (SLLV <t> x y) (SGTU (MOVVconst <typ.UInt64> [64]) y))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
v2.AuxInt = int64ToAuxInt(64)
v1.AddArg2(v2, y)
- v0.AddArg(v1)
- v3 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v3.AddArg2(x, y)
- v.AddArg2(v0, v3)
+ v.AddArg2(v0, v1)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x8 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SLLV <t> x (ZeroExt8to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt8to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x16 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SLLV <t> x (ZeroExt16to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt16to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x32 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SLLV <t> x (ZeroExt32to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt32to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x64 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SLLV <t> x y))
+ // result: (MASKEQZ (SLLV <t> x y) (SGTU (MOVVconst <typ.UInt64> [64]) y))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
v2.AuxInt = int64ToAuxInt(64)
v1.AddArg2(v2, y)
- v0.AddArg(v1)
- v3 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v3.AddArg2(x, y)
- v.AddArg2(v0, v3)
+ v.AddArg2(v0, v1)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x8 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SLLV <t> x (ZeroExt8to64 y)))
+ // result: (MASKEQZ (SLLV <t> x (ZeroExt8to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SLLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux16 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SRLV <t> (ZeroExt16to64 x) (ZeroExt16to64 y)))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt16to64 x) (ZeroExt16to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v5.AddArg(x)
- v4.AddArg2(v5, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v1.AddArg(x)
+ v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v2.AddArg(y)
+ v0.AddArg2(v1, v2)
+ v3 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v4 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v4.AuxInt = int64ToAuxInt(64)
+ v3.AddArg2(v4, v2)
+ v.AddArg2(v0, v3)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux32 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SRLV <t> (ZeroExt16to64 x) (ZeroExt32to64 y)))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt16to64 x) (ZeroExt32to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v5.AddArg(x)
- v4.AddArg2(v5, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v1.AddArg(x)
+ v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v2.AddArg(y)
+ v0.AddArg2(v1, v2)
+ v3 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v4 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v4.AuxInt = int64ToAuxInt(64)
+ v3.AddArg2(v4, v2)
+ v.AddArg2(v0, v3)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux64 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SRLV <t> (ZeroExt16to64 x) y))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt16to64 x) y) (SGTU (MOVVconst <typ.UInt64> [64]) y))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v1.AddArg2(v2, y)
- v0.AddArg(v1)
- v3 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v4.AddArg(x)
- v3.AddArg2(v4, y)
- v.AddArg2(v0, v3)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v1.AddArg(x)
+ v0.AddArg2(v1, y)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, y)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux8 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SRLV <t> (ZeroExt16to64 x) (ZeroExt8to64 y)))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt16to64 x) (ZeroExt8to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v5.AddArg(x)
- v4.AddArg2(v5, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v1.AddArg(x)
+ v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v2.AddArg(y)
+ v0.AddArg2(v1, v2)
+ v3 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v4 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v4.AuxInt = int64ToAuxInt(64)
+ v3.AddArg2(v4, v2)
+ v.AddArg2(v0, v3)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux16 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SRLV <t> (ZeroExt32to64 x) (ZeroExt16to64 y)))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt32to64 x) (ZeroExt16to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v5.AddArg(x)
- v4.AddArg2(v5, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v1.AddArg(x)
+ v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v2.AddArg(y)
+ v0.AddArg2(v1, v2)
+ v3 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v4 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v4.AuxInt = int64ToAuxInt(64)
+ v3.AddArg2(v4, v2)
+ v.AddArg2(v0, v3)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux32 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SRLV <t> (ZeroExt32to64 x) (ZeroExt32to64 y)))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt32to64 x) (ZeroExt32to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v5.AddArg(x)
- v4.AddArg2(v5, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v1.AddArg(x)
+ v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v2.AddArg(y)
+ v0.AddArg2(v1, v2)
+ v3 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v4 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v4.AuxInt = int64ToAuxInt(64)
+ v3.AddArg2(v4, v2)
+ v.AddArg2(v0, v3)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux64 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SRLV <t> (ZeroExt32to64 x) y))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt32to64 x) y) (SGTU (MOVVconst <typ.UInt64> [64]) y))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v1.AddArg2(v2, y)
- v0.AddArg(v1)
- v3 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v4.AddArg(x)
- v3.AddArg2(v4, y)
- v.AddArg2(v0, v3)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v1.AddArg(x)
+ v0.AddArg2(v1, y)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, y)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux8 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SRLV <t> (ZeroExt32to64 x) (ZeroExt8to64 y)))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt32to64 x) (ZeroExt8to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v5.AddArg(x)
- v4.AddArg2(v5, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v1.AddArg(x)
+ v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v2.AddArg(y)
+ v0.AddArg2(v1, v2)
+ v3 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v4 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v4.AuxInt = int64ToAuxInt(64)
+ v3.AddArg2(v4, v2)
+ v.AddArg2(v0, v3)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux16 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SRLV <t> x (ZeroExt16to64 y)))
+ // result: (MASKEQZ (SRLV <t> x (ZeroExt16to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux32 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SRLV <t> x (ZeroExt32to64 y)))
+ // result: (MASKEQZ (SRLV <t> x (ZeroExt32to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux64 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SRLV <t> x y))
+ // result: (MASKEQZ (SRLV <t> x y) (SGTU (MOVVconst <typ.UInt64> [64]) y))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
v2.AuxInt = int64ToAuxInt(64)
v1.AddArg2(v2, y)
- v0.AddArg(v1)
- v3 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v3.AddArg2(x, y)
- v.AddArg2(v0, v3)
+ v.AddArg2(v0, v1)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux8 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SRLV <t> x (ZeroExt8to64 y)))
+ // result: (MASKEQZ (SRLV <t> x (ZeroExt8to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v4.AddArg2(x, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v1.AddArg(y)
+ v0.AddArg2(x, v1)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, v1)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux16 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SRLV <t> (ZeroExt8to64 x) (ZeroExt16to64 y)))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt8to64 x) (ZeroExt16to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v5.AddArg(x)
- v4.AddArg2(v5, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v1.AddArg(x)
+ v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
+ v2.AddArg(y)
+ v0.AddArg2(v1, v2)
+ v3 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v4 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v4.AuxInt = int64ToAuxInt(64)
+ v3.AddArg2(v4, v2)
+ v.AddArg2(v0, v3)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux32 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SRLV <t> (ZeroExt8to64 x) (ZeroExt32to64 y)))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt8to64 x) (ZeroExt32to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v5.AddArg(x)
- v4.AddArg2(v5, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v1.AddArg(x)
+ v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
+ v2.AddArg(y)
+ v0.AddArg2(v1, v2)
+ v3 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v4 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v4.AuxInt = int64ToAuxInt(64)
+ v3.AddArg2(v4, v2)
+ v.AddArg2(v0, v3)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux64 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SRLV <t> (ZeroExt8to64 x) y))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt8to64 x) y) (SGTU (MOVVconst <typ.UInt64> [64]) y))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v1.AddArg2(v2, y)
- v0.AddArg(v1)
- v3 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v4.AddArg(x)
- v3.AddArg2(v4, y)
- v.AddArg2(v0, v3)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v1.AddArg(x)
+ v0.AddArg2(v1, y)
+ v2 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v3 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v3.AuxInt = int64ToAuxInt(64)
+ v2.AddArg2(v3, y)
+ v.AddArg2(v0, v2)
return true
}
}
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux8 <t> x y)
- // result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SRLV <t> (ZeroExt8to64 x) (ZeroExt8to64 y)))
+ // result: (MASKEQZ (SRLV <t> (ZeroExt8to64 x) (ZeroExt8to64 y)) (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y)))
for {
t := v.Type
x := v_0
y := v_1
- v.reset(OpLOONG64AND)
- v0 := b.NewValue0(v.Pos, OpLOONG64NEGV, t)
- v1 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
- v2 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
- v2.AuxInt = int64ToAuxInt(64)
- v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v3.AddArg(y)
- v1.AddArg2(v2, v3)
- v0.AddArg(v1)
- v4 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
- v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
- v5.AddArg(x)
- v4.AddArg2(v5, v3)
- v.AddArg2(v0, v4)
+ v.reset(OpLOONG64MASKEQZ)
+ v0 := b.NewValue0(v.Pos, OpLOONG64SRLV, t)
+ v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v1.AddArg(x)
+ v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
+ v2.AddArg(y)
+ v0.AddArg2(v1, v2)
+ v3 := b.NewValue0(v.Pos, OpLOONG64SGTU, typ.Bool)
+ v4 := b.NewValue0(v.Pos, OpLOONG64MOVVconst, typ.UInt64)
+ v4.AuxInt = int64ToAuxInt(64)
+ v3.AddArg2(v4, v2)
+ v.AddArg2(v0, v3)
return true
}
}