(Lsh64x64 x (I64Const [c])) && uint64(c) < 64 -> (I64Shl x (I64Const [c]))
(Lsh64x64 x (I64Const [c])) && uint64(c) >= 64 -> (I64Const [0])
(Lsh64x64 x y) -> (Select (I64Shl x y) (I64Const [0]) (I64LtU y (I64Const [64])))
-(Lsh64x(32|16|8) x y) -> (Lsh64x64 x (ZeroExt(32|16|8)to64 y))
+(Lsh64x(32|16|8) [c] x y) -> (Lsh64x64 [c] x (ZeroExt(32|16|8)to64 y))
-(Lsh32x64 x y) -> (Lsh64x64 x y)
-(Lsh32x(32|16|8) x y) -> (Lsh64x64 x (ZeroExt(32|16|8)to64 y))
+(Lsh32x64 [c] x y) -> (Lsh64x64 [c] x y)
+(Lsh32x(32|16|8) [c] x y) -> (Lsh64x64 [c] x (ZeroExt(32|16|8)to64 y))
-(Lsh16x64 x y) -> (Lsh64x64 x y)
-(Lsh16x(32|16|8) x y) -> (Lsh64x64 x (ZeroExt(32|16|8)to64 y))
+(Lsh16x64 [c] x y) -> (Lsh64x64 [c] x y)
+(Lsh16x(32|16|8) [c] x y) -> (Lsh64x64 [c] x (ZeroExt(32|16|8)to64 y))
-(Lsh8x64 x y) -> (Lsh64x64 x y)
-(Lsh8x(32|16|8) x y) -> (Lsh64x64 x (ZeroExt(32|16|8)to64 y))
+(Lsh8x64 [c] x y) -> (Lsh64x64 [c] x y)
+(Lsh8x(32|16|8) [c] x y) -> (Lsh64x64 [c] x (ZeroExt(32|16|8)to64 y))
(Rsh64Ux64 x y) && shiftIsBounded(v) -> (I64ShrU x y)
(Rsh64Ux64 x (I64Const [c])) && uint64(c) < 64 -> (I64ShrU x (I64Const [c]))
(Rsh64Ux64 x (I64Const [c])) && uint64(c) >= 64 -> (I64Const [0])
(Rsh64Ux64 x y) -> (Select (I64ShrU x y) (I64Const [0]) (I64LtU y (I64Const [64])))
-(Rsh64Ux(32|16|8) x y) -> (Rsh64Ux64 x (ZeroExt(32|16|8)to64 y))
+(Rsh64Ux(32|16|8) [c] x y) -> (Rsh64Ux64 [c] x (ZeroExt(32|16|8)to64 y))
-(Rsh32Ux64 x y) -> (Rsh64Ux64 (ZeroExt32to64 x) y)
-(Rsh32Ux(32|16|8) x y) -> (Rsh64Ux64 (ZeroExt32to64 x) (ZeroExt(32|16|8)to64 y))
+(Rsh32Ux64 [c] x y) -> (Rsh64Ux64 [c] (ZeroExt32to64 x) y)
+(Rsh32Ux(32|16|8) [c] x y) -> (Rsh64Ux64 [c] (ZeroExt32to64 x) (ZeroExt(32|16|8)to64 y))
-(Rsh16Ux64 x y) -> (Rsh64Ux64 (ZeroExt16to64 x) y)
-(Rsh16Ux(32|16|8) x y) -> (Rsh64Ux64 (ZeroExt16to64 x) (ZeroExt(32|16|8)to64 y))
+(Rsh16Ux64 [c] x y) -> (Rsh64Ux64 [c] (ZeroExt16to64 x) y)
+(Rsh16Ux(32|16|8) [c] x y) -> (Rsh64Ux64 [c] (ZeroExt16to64 x) (ZeroExt(32|16|8)to64 y))
-(Rsh8Ux64 x y) -> (Rsh64Ux64 (ZeroExt8to64 x) y)
-(Rsh8Ux(32|16|8) x y) -> (Rsh64Ux64 (ZeroExt8to64 x) (ZeroExt(32|16|8)to64 y))
+(Rsh8Ux64 [c] x y) -> (Rsh64Ux64 [c] (ZeroExt8to64 x) y)
+(Rsh8Ux(32|16|8) [c] x y) -> (Rsh64Ux64 [c] (ZeroExt8to64 x) (ZeroExt(32|16|8)to64 y))
// Signed right shift needs to return 0/-1 if shift amount is >= width of shifted value.
// We implement this by setting the shift value to (width - 1) if the shift value is >= width.
(Rsh64x64 x (I64Const [c])) && uint64(c) < 64 -> (I64ShrS x (I64Const [c]))
(Rsh64x64 x (I64Const [c])) && uint64(c) >= 64 -> (I64ShrS x (I64Const [63]))
(Rsh64x64 x y) -> (I64ShrS x (Select <typ.Int64> y (I64Const [63]) (I64LtU y (I64Const [64]))))
-(Rsh64x(32|16|8) x y) -> (Rsh64x64 x (ZeroExt(32|16|8)to64 y))
+(Rsh64x(32|16|8) [c] x y) -> (Rsh64x64 [c] x (ZeroExt(32|16|8)to64 y))
-(Rsh32x64 x y) -> (Rsh64x64 (SignExt32to64 x) y)
-(Rsh32x(32|16|8) x y) -> (Rsh64x64 (SignExt32to64 x) (ZeroExt(32|16|8)to64 y))
+(Rsh32x64 [c] x y) -> (Rsh64x64 [c] (SignExt32to64 x) y)
+(Rsh32x(32|16|8) [c] x y) -> (Rsh64x64 [c] (SignExt32to64 x) (ZeroExt(32|16|8)to64 y))
-(Rsh16x64 x y) -> (Rsh64x64 (SignExt16to64 x) y)
-(Rsh16x(32|16|8) x y) -> (Rsh64x64 (SignExt16to64 x) (ZeroExt(32|16|8)to64 y))
+(Rsh16x64 [c] x y) -> (Rsh64x64 [c] (SignExt16to64 x) y)
+(Rsh16x(32|16|8) [c] x y) -> (Rsh64x64 [c] (SignExt16to64 x) (ZeroExt(32|16|8)to64 y))
-(Rsh8x64 x y) -> (Rsh64x64 (SignExt8to64 x) y)
-(Rsh8x(32|16|8) x y) -> (Rsh64x64 (SignExt8to64 x) (ZeroExt(32|16|8)to64 y))
+(Rsh8x64 [c] x y) -> (Rsh64x64 [c] (SignExt8to64 x) y)
+(Rsh8x(32|16|8) [c] x y) -> (Rsh64x64 [c] (SignExt8to64 x) (ZeroExt(32|16|8)to64 y))
// Lowering rotates
(RotateLeft8 <t> x (I64Const [c])) -> (Or8 (Lsh8x64 <t> x (I64Const [c&7])) (Rsh8Ux64 <t> x (I64Const [-c&7])))
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh16x16 x y)
- // result: (Lsh64x64 x (ZeroExt16to64 y))
+ // match: (Lsh16x16 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh16x32 x y)
- // result: (Lsh64x64 x (ZeroExt32to64 y))
+ // match: (Lsh16x32 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v0.AddArg(y)
func rewriteValueWasm_OpLsh16x64(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
- // match: (Lsh16x64 x y)
- // result: (Lsh64x64 x y)
+ // match: (Lsh16x64 [c] x y)
+ // result: (Lsh64x64 [c] x y)
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v.AddArg(y)
return true
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh16x8 x y)
- // result: (Lsh64x64 x (ZeroExt8to64 y))
+ // match: (Lsh16x8 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh32x16 x y)
- // result: (Lsh64x64 x (ZeroExt16to64 y))
+ // match: (Lsh32x16 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh32x32 x y)
- // result: (Lsh64x64 x (ZeroExt32to64 y))
+ // match: (Lsh32x32 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v0.AddArg(y)
func rewriteValueWasm_OpLsh32x64(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
- // match: (Lsh32x64 x y)
- // result: (Lsh64x64 x y)
+ // match: (Lsh32x64 [c] x y)
+ // result: (Lsh64x64 [c] x y)
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v.AddArg(y)
return true
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh32x8 x y)
- // result: (Lsh64x64 x (ZeroExt8to64 y))
+ // match: (Lsh32x8 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh64x16 x y)
- // result: (Lsh64x64 x (ZeroExt16to64 y))
+ // match: (Lsh64x16 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh64x32 x y)
- // result: (Lsh64x64 x (ZeroExt32to64 y))
+ // match: (Lsh64x32 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh64x8 x y)
- // result: (Lsh64x64 x (ZeroExt8to64 y))
+ // match: (Lsh64x8 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh8x16 x y)
- // result: (Lsh64x64 x (ZeroExt16to64 y))
+ // match: (Lsh8x16 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh8x32 x y)
- // result: (Lsh64x64 x (ZeroExt32to64 y))
+ // match: (Lsh8x32 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v0.AddArg(y)
func rewriteValueWasm_OpLsh8x64(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
- // match: (Lsh8x64 x y)
- // result: (Lsh64x64 x y)
+ // match: (Lsh8x64 [c] x y)
+ // result: (Lsh64x64 [c] x y)
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v.AddArg(y)
return true
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Lsh8x8 x y)
- // result: (Lsh64x64 x (ZeroExt8to64 y))
+ // match: (Lsh8x8 [c] x y)
+ // result: (Lsh64x64 [c] x (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpLsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh16Ux16 x y)
- // result: (Rsh64Ux64 (ZeroExt16to64 x) (ZeroExt16to64 y))
+ // match: (Rsh16Ux16 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh16Ux32 x y)
- // result: (Rsh64Ux64 (ZeroExt16to64 x) (ZeroExt32to64 y))
+ // match: (Rsh16Ux32 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt16to64 x) (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh16Ux64 x y)
- // result: (Rsh64Ux64 (ZeroExt16to64 x) y)
+ // match: (Rsh16Ux64 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt16to64 x) y)
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh16Ux8 x y)
- // result: (Rsh64Ux64 (ZeroExt16to64 x) (ZeroExt8to64 y))
+ // match: (Rsh16Ux8 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt16to64 x) (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh16x16 x y)
- // result: (Rsh64x64 (SignExt16to64 x) (ZeroExt16to64 y))
+ // match: (Rsh16x16 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt16to64 x) (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh16x32 x y)
- // result: (Rsh64x64 (SignExt16to64 x) (ZeroExt32to64 y))
+ // match: (Rsh16x32 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt16to64 x) (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh16x64 x y)
- // result: (Rsh64x64 (SignExt16to64 x) y)
+ // match: (Rsh16x64 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt16to64 x) y)
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh16x8 x y)
- // result: (Rsh64x64 (SignExt16to64 x) (ZeroExt8to64 y))
+ // match: (Rsh16x8 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt16to64 x) (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh32Ux16 x y)
- // result: (Rsh64Ux64 (ZeroExt32to64 x) (ZeroExt16to64 y))
+ // match: (Rsh32Ux16 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt32to64 x) (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh32Ux32 x y)
- // result: (Rsh64Ux64 (ZeroExt32to64 x) (ZeroExt32to64 y))
+ // match: (Rsh32Ux32 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh32Ux64 x y)
- // result: (Rsh64Ux64 (ZeroExt32to64 x) y)
+ // match: (Rsh32Ux64 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt32to64 x) y)
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh32Ux8 x y)
- // result: (Rsh64Ux64 (ZeroExt32to64 x) (ZeroExt8to64 y))
+ // match: (Rsh32Ux8 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt32to64 x) (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh32x16 x y)
- // result: (Rsh64x64 (SignExt32to64 x) (ZeroExt16to64 y))
+ // match: (Rsh32x16 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt32to64 x) (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh32x32 x y)
- // result: (Rsh64x64 (SignExt32to64 x) (ZeroExt32to64 y))
+ // match: (Rsh32x32 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt32to64 x) (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh32x64 x y)
- // result: (Rsh64x64 (SignExt32to64 x) y)
+ // match: (Rsh32x64 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt32to64 x) y)
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh32x8 x y)
- // result: (Rsh64x64 (SignExt32to64 x) (ZeroExt8to64 y))
+ // match: (Rsh32x8 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt32to64 x) (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh64Ux16 x y)
- // result: (Rsh64Ux64 x (ZeroExt16to64 y))
+ // match: (Rsh64Ux16 [c] x y)
+ // result: (Rsh64Ux64 [c] x (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh64Ux32 x y)
- // result: (Rsh64Ux64 x (ZeroExt32to64 y))
+ // match: (Rsh64Ux32 [c] x y)
+ // result: (Rsh64Ux64 [c] x (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh64Ux8 x y)
- // result: (Rsh64Ux64 x (ZeroExt8to64 y))
+ // match: (Rsh64Ux8 [c] x y)
+ // result: (Rsh64Ux64 [c] x (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh64x16 x y)
- // result: (Rsh64x64 x (ZeroExt16to64 y))
+ // match: (Rsh64x16 [c] x y)
+ // result: (Rsh64x64 [c] x (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh64x32 x y)
- // result: (Rsh64x64 x (ZeroExt32to64 y))
+ // match: (Rsh64x32 [c] x y)
+ // result: (Rsh64x64 [c] x (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh64x8 x y)
- // result: (Rsh64x64 x (ZeroExt8to64 y))
+ // match: (Rsh64x8 [c] x y)
+ // result: (Rsh64x64 [c] x (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v.AddArg(x)
v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v0.AddArg(y)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh8Ux16 x y)
- // result: (Rsh64Ux64 (ZeroExt8to64 x) (ZeroExt16to64 y))
+ // match: (Rsh8Ux16 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt8to64 x) (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh8Ux32 x y)
- // result: (Rsh64Ux64 (ZeroExt8to64 x) (ZeroExt32to64 y))
+ // match: (Rsh8Ux32 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt8to64 x) (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh8Ux64 x y)
- // result: (Rsh64Ux64 (ZeroExt8to64 x) y)
+ // match: (Rsh8Ux64 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt8to64 x) y)
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh8Ux8 x y)
- // result: (Rsh64Ux64 (ZeroExt8to64 x) (ZeroExt8to64 y))
+ // match: (Rsh8Ux8 [c] x y)
+ // result: (Rsh64Ux64 [c] (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64Ux64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh8x16 x y)
- // result: (Rsh64x64 (SignExt8to64 x) (ZeroExt16to64 y))
+ // match: (Rsh8x16 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt8to64 x) (ZeroExt16to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh8x32 x y)
- // result: (Rsh64x64 (SignExt8to64 x) (ZeroExt32to64 y))
+ // match: (Rsh8x32 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt8to64 x) (ZeroExt32to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh8x64 x y)
- // result: (Rsh64x64 (SignExt8to64 x) y)
+ // match: (Rsh8x64 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt8to64 x) y)
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Rsh8x8 x y)
- // result: (Rsh64x64 (SignExt8to64 x) (ZeroExt8to64 y))
+ // match: (Rsh8x8 [c] x y)
+ // result: (Rsh64x64 [c] (SignExt8to64 x) (ZeroExt8to64 y))
for {
+ c := v.AuxInt
x := v_0
y := v_1
v.reset(OpRsh64x64)
+ v.AuxInt = c
v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
v0.AddArg(x)
v.AddArg(v0)