}
break
}
+ // match: (And16 <t> (Com16 x) (Com16 y))
+ // result: (Com16 (Or16 <t> x y))
+ for {
+ t := v.Type
+ 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 v_1.Op != OpCom16 {
+ continue
+ }
+ y := v_1.Args[0]
+ v.reset(OpCom16)
+ v0 := b.NewValue0(v.Pos, OpOr16, t)
+ v0.AddArg2(x, y)
+ v.AddArg(v0)
+ return true
+ }
+ break
+ }
// match: (And16 (Const16 [m]) (Rsh16Ux64 _ (Const64 [c])))
// cond: c >= int64(16-ntz16(m))
// result: (Const16 [0])
}
break
}
+ // match: (And32 <t> (Com32 x) (Com32 y))
+ // result: (Com32 (Or32 <t> x y))
+ for {
+ t := v.Type
+ 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 v_1.Op != OpCom32 {
+ continue
+ }
+ y := v_1.Args[0]
+ v.reset(OpCom32)
+ v0 := b.NewValue0(v.Pos, OpOr32, t)
+ v0.AddArg2(x, y)
+ v.AddArg(v0)
+ return true
+ }
+ break
+ }
// match: (And32 (Const32 [m]) (Rsh32Ux64 _ (Const64 [c])))
// cond: c >= int64(32-ntz32(m))
// result: (Const32 [0])
}
break
}
+ // match: (And64 <t> (Com64 x) (Com64 y))
+ // result: (Com64 (Or64 <t> x y))
+ for {
+ t := v.Type
+ 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 v_1.Op != OpCom64 {
+ continue
+ }
+ y := v_1.Args[0]
+ v.reset(OpCom64)
+ v0 := b.NewValue0(v.Pos, OpOr64, t)
+ v0.AddArg2(x, y)
+ v.AddArg(v0)
+ return true
+ }
+ break
+ }
// match: (And64 (Const64 [m]) (Rsh64Ux64 _ (Const64 [c])))
// cond: c >= int64(64-ntz64(m))
// result: (Const64 [0])
}
break
}
+ // match: (And8 <t> (Com8 x) (Com8 y))
+ // result: (Com8 (Or8 <t> x y))
+ for {
+ t := v.Type
+ 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 v_1.Op != OpCom8 {
+ continue
+ }
+ y := v_1.Args[0]
+ v.reset(OpCom8)
+ v0 := b.NewValue0(v.Pos, OpOr8, t)
+ v0.AddArg2(x, y)
+ v.AddArg(v0)
+ return true
+ }
+ break
+ }
// match: (And8 (Const8 [m]) (Rsh8Ux64 _ (Const64 [c])))
// cond: c >= int64(8-ntz8(m))
// result: (Const8 [0])
v.AuxInt = boolToAuxInt(true)
return true
}
+ // match: (IsNonNil (LocalAddr _ _))
+ // result: (ConstBool [true])
+ for {
+ if v_0.Op != OpLocalAddr {
+ break
+ }
+ v.reset(OpConstBool)
+ v.AuxInt = boolToAuxInt(true)
+ return true
+ }
return false
}
func rewriteValuegeneric_OpIsSliceInBounds(v *Value) bool {
}
break
}
+ // match: (Or16 <t> (Com16 x) (Com16 y))
+ // result: (Com16 (And16 <t> x y))
+ for {
+ t := v.Type
+ 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 v_1.Op != OpCom16 {
+ continue
+ }
+ y := v_1.Args[0]
+ v.reset(OpCom16)
+ v0 := b.NewValue0(v.Pos, OpAnd16, t)
+ v0.AddArg2(x, y)
+ v.AddArg(v0)
+ return true
+ }
+ break
+ }
// match: (Or16 x x)
// result: x
for {
}
break
}
+ // match: (Or32 <t> (Com32 x) (Com32 y))
+ // result: (Com32 (And32 <t> x y))
+ for {
+ t := v.Type
+ 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 v_1.Op != OpCom32 {
+ continue
+ }
+ y := v_1.Args[0]
+ v.reset(OpCom32)
+ v0 := b.NewValue0(v.Pos, OpAnd32, t)
+ v0.AddArg2(x, y)
+ v.AddArg(v0)
+ return true
+ }
+ break
+ }
// match: (Or32 x x)
// result: x
for {
}
break
}
+ // match: (Or64 <t> (Com64 x) (Com64 y))
+ // result: (Com64 (And64 <t> x y))
+ for {
+ t := v.Type
+ 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 v_1.Op != OpCom64 {
+ continue
+ }
+ y := v_1.Args[0]
+ v.reset(OpCom64)
+ v0 := b.NewValue0(v.Pos, OpAnd64, t)
+ v0.AddArg2(x, y)
+ v.AddArg(v0)
+ return true
+ }
+ break
+ }
// match: (Or64 x x)
// result: x
for {
}
break
}
+ // match: (Or8 <t> (Com8 x) (Com8 y))
+ // result: (Com8 (And8 <t> x y))
+ for {
+ t := v.Type
+ 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 v_1.Op != OpCom8 {
+ continue
+ }
+ y := v_1.Args[0]
+ v.reset(OpCom8)
+ v0 := b.NewValue0(v.Pos, OpAnd8, t)
+ v0.AddArg2(x, y)
+ v.AddArg(v0)
+ return true
+ }
+ break
+ }
// match: (Or8 x x)
// result: x
for {