]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: add specialized Value reset for OpCopy
authorJosh Bleecher Snyder <josharian@gmail.com>
Wed, 30 Oct 2019 17:29:47 +0000 (10:29 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Mon, 2 Mar 2020 16:24:47 +0000 (16:24 +0000)
This:

* Simplifies and shortens the generated code for rewrite rules.
* Shrinks cmd/compile by 86k (0.4%) and makes it easier to compile.
* Removes the stmt boundary code wrangling from Value.reset,
  in favor of doing it in the one place where it actually does some work,
  namely the writebarrier pass. (This was ascertained by inspecting the
  code for cases in which notStmtBoundary values were generated.)

Passes toolstash-check -all.

Change-Id: I25671d4c4bbd772f235195d11da090878ea2cc07
Reviewed-on: https://go-review.googlesource.com/c/go/+/221421
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
17 files changed:
src/cmd/compile/internal/ssa/gen/rulegen.go
src/cmd/compile/internal/ssa/numberlines.go
src/cmd/compile/internal/ssa/rewrite386.go
src/cmd/compile/internal/ssa/rewriteAMD64.go
src/cmd/compile/internal/ssa/rewriteARM.go
src/cmd/compile/internal/ssa/rewriteARM64.go
src/cmd/compile/internal/ssa/rewriteMIPS.go
src/cmd/compile/internal/ssa/rewriteMIPS64.go
src/cmd/compile/internal/ssa/rewritePPC64.go
src/cmd/compile/internal/ssa/rewriteRISCV64.go
src/cmd/compile/internal/ssa/rewriteS390X.go
src/cmd/compile/internal/ssa/rewriteWasm.go
src/cmd/compile/internal/ssa/rewritedec.go
src/cmd/compile/internal/ssa/rewritedec64.go
src/cmd/compile/internal/ssa/rewritegeneric.go
src/cmd/compile/internal/ssa/value.go
src/cmd/compile/internal/ssa/writebarrier.go

index 0fba0546e74e7788512a511995801ae1e10d6d0c..53c6bdbf6567875eda591826c19d2f0807037645 100644 (file)
@@ -1093,9 +1093,7 @@ func genResult0(rr *RuleRewrite, arch arch, result string, top, move bool, pos s
                        // It in not safe in general to move a variable between blocks
                        // (and particularly not a phi node).
                        // Introduce a copy.
-                       rr.add(stmtf("v.reset(OpCopy)"))
-                       rr.add(stmtf("v.Type = %s.Type", result))
-                       rr.add(stmtf("v.AddArg(%s)", result))
+                       rr.add(stmtf("v.copyOf(%s)", result))
                }
                return result
        }
@@ -1123,8 +1121,7 @@ func genResult0(rr *RuleRewrite, arch arch, result string, top, move bool, pos s
                rr.add(declf(v, "b.NewValue0(%s, Op%s%s, %s)", pos, oparch, op.name, typ))
                if move && top {
                        // Rewrite original into a copy
-                       rr.add(stmtf("v.reset(OpCopy)"))
-                       rr.add(stmtf("v.AddArg(%s)", v))
+                       rr.add(stmtf("v.copyOf(%s)", v))
                }
        }
 
index 3d77fe5bb420bee469169e9cd802eea36f9b0b20..f4e62b88c4f6b64ab6665914c570973222e12182 100644 (file)
@@ -66,12 +66,9 @@ func nextGoodStatementIndex(v *Value, i int, b *Block) int {
        return i
 }
 
-// notStmtBoundary indicates which value opcodes can never be a statement
-// boundary because they don't correspond to a user's understanding of a
-// statement boundary.  Called from *Value.reset(), and *Func.newValue(),
-// located here to keep all the statement boundary heuristics in one place.
-// Note: *Value.reset() filters out OpCopy because of how that is used in
-// rewrite.
+// notStmtBoundary reports whether a value with opcode op can never be a statement
+// boundary. Such values don't correspond to a user's understanding of a
+// statement boundary.
 func notStmtBoundary(op Op) bool {
        switch op {
        case OpCopy, OpPhi, OpVarKill, OpVarDef, OpVarLive, OpUnknown, OpFwdRef, OpArg:
index 7a75b7121f76e9f640a426f92e67530b0ac5c07e..bff76e9029373755a46ca86bc8d35880b8aadcad 100644 (file)
@@ -1235,9 +1235,7 @@ func rewriteValue386_Op386ADDLconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ADDLconst [c] (MOVLconst [d]))
@@ -1950,9 +1948,7 @@ func rewriteValue386_Op386ANDL(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -1994,9 +1990,7 @@ func rewriteValue386_Op386ANDLconst(v *Value) bool {
                if !(int32(c) == -1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDLconst [c] (MOVLconst [d]))
@@ -2706,8 +2700,7 @@ func rewriteValue386_Op386CMPBconst(v *Value) bool {
                }
                b = l.Block
                v0 := b.NewValue0(l.Pos, Op386CMPBconstload, types.TypeFlags)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -3015,8 +3008,7 @@ func rewriteValue386_Op386CMPLconst(v *Value) bool {
                }
                b = l.Block
                v0 := b.NewValue0(l.Pos, Op386CMPLconstload, types.TypeFlags)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -3309,8 +3301,7 @@ func rewriteValue386_Op386CMPWconst(v *Value) bool {
                }
                b = l.Block
                v0 := b.NewValue0(l.Pos, Op386CMPWconstload, types.TypeFlags)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -4054,8 +4045,7 @@ func rewriteValue386_Op386MOVBLSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, Op386MOVBLSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -4151,8 +4141,7 @@ func rewriteValue386_Op386MOVBLZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, Op386MOVBload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -4176,8 +4165,7 @@ func rewriteValue386_Op386MOVBLZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, Op386MOVBloadidx1, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg3(ptr, idx, mem)
@@ -5127,9 +5115,7 @@ func rewriteValue386_Op386MOVLload(v *Value) bool {
                if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVLload [off1] {sym} (ADDLconst [off2] ptr) mem)
@@ -7495,8 +7481,7 @@ func rewriteValue386_Op386MOVWLSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, Op386MOVWLSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -7592,8 +7577,7 @@ func rewriteValue386_Op386MOVWLZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, Op386MOVWload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -7617,8 +7601,7 @@ func rewriteValue386_Op386MOVWLZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, Op386MOVWloadidx1, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg3(ptr, idx, mem)
@@ -7642,8 +7625,7 @@ func rewriteValue386_Op386MOVWLZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, Op386MOVWloadidx2, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg3(ptr, idx, mem)
@@ -8899,9 +8881,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MULLconst [3] x)
@@ -9750,9 +9730,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORL x0:(MOVBload [i0] {s} p mem) s0:(SHLLconst [8] x1:(MOVBload [i1] {s} p mem)))
@@ -9786,8 +9764,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, Op386MOVWload, typ.UInt16)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -9850,8 +9827,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2)
                                v0 := b.NewValue0(x2.Pos, Op386MOVLload, typ.UInt32)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v0.AuxInt = i0
                                v0.Aux = s
                                v0.AddArg2(p, mem)
@@ -9898,8 +9874,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, Op386MOVWloadidx1, v.Type)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -9974,8 +9949,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                                                        }
                                                        b = mergePoint(b, x0, x1, x2)
                                                        v0 := b.NewValue0(v.Pos, Op386MOVLloadidx1, v.Type)
-                                                       v.reset(OpCopy)
-                                                       v.AddArg(v0)
+                                                       v.copyOf(v0)
                                                        v0.AuxInt = i0
                                                        v0.Aux = s
                                                        v0.AddArg3(p, idx, mem)
@@ -10000,9 +9974,7 @@ func rewriteValue386_Op386ORLconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORLconst [c] _)
@@ -10489,9 +10461,7 @@ func rewriteValue386_Op386ROLBconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -10519,9 +10489,7 @@ func rewriteValue386_Op386ROLLconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -10549,9 +10517,7 @@ func rewriteValue386_Op386ROLWconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -10583,9 +10549,7 @@ func rewriteValue386_Op386SARBconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SARBconst [c] (MOVLconst [d]))
@@ -10641,9 +10605,7 @@ func rewriteValue386_Op386SARLconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SARLconst [c] (MOVLconst [d]))
@@ -10687,9 +10649,7 @@ func rewriteValue386_Op386SARWconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SARWconst [c] (MOVLconst [d]))
@@ -11469,9 +11429,7 @@ func rewriteValue386_Op386SHLLconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -11522,9 +11480,7 @@ func rewriteValue386_Op386SHRBconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -11568,9 +11524,7 @@ func rewriteValue386_Op386SHRLconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -11621,9 +11575,7 @@ func rewriteValue386_Op386SHRWconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -11747,9 +11699,7 @@ func rewriteValue386_Op386SUBLconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SUBLconst [c] x)
@@ -12419,9 +12369,7 @@ func rewriteValue386_Op386XORLconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (XORLconst [c] (MOVLconst [d]))
@@ -14043,9 +13991,7 @@ func rewriteValue386_OpMove(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Move [1] dst src mem)
@@ -15773,9 +15719,7 @@ func rewriteValue386_OpZero(v *Value) bool {
                        break
                }
                mem := v_1
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero [1] destptr mem)
index 566a7aaf66ab69c8e7c82bc8e7e8ab37f4bfdd72..a30c609a684b7957dfbdf4232c3e4ceb9fb9bdbc 100644 (file)
@@ -1705,9 +1705,7 @@ func rewriteValueAMD64_OpAMD64ADDLconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ADDLconst [c] (MOVLconst [d]))
@@ -2324,9 +2322,7 @@ func rewriteValueAMD64_OpAMD64ADDQconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ADDQconst [c] (MOVQconst [d]))
@@ -2824,9 +2820,7 @@ func rewriteValueAMD64_OpAMD64ANDL(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDL x l:(MOVLload [off] {sym} ptr mem))
@@ -2943,9 +2937,7 @@ func rewriteValueAMD64_OpAMD64ANDLconst(v *Value) bool {
                if !(int32(c) == -1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDLconst [c] (MOVLconst [d]))
@@ -3208,9 +3200,7 @@ func rewriteValueAMD64_OpAMD64ANDQ(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDQ x l:(MOVQload [off] {sym} ptr mem))
@@ -3334,9 +3324,7 @@ func rewriteValueAMD64_OpAMD64ANDQconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDQconst [c] (MOVQconst [d]))
@@ -4725,9 +4713,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLCC _ x (FlagGT_UGT))
@@ -4737,9 +4723,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLCC y _ (FlagGT_ULT))
@@ -4749,9 +4733,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLCC y _ (FlagLT_ULT))
@@ -4761,9 +4743,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLCC _ x (FlagLT_UGT))
@@ -4773,9 +4753,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -4804,9 +4782,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLCS y _ (FlagGT_UGT))
@@ -4816,9 +4792,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLCS _ x (FlagGT_ULT))
@@ -4828,9 +4802,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLCS _ x (FlagLT_ULT))
@@ -4840,9 +4812,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLCS y _ (FlagLT_UGT))
@@ -4852,9 +4822,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -4883,9 +4851,7 @@ func rewriteValueAMD64_OpAMD64CMOVLEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLEQ y _ (FlagGT_UGT))
@@ -4895,9 +4861,7 @@ func rewriteValueAMD64_OpAMD64CMOVLEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLEQ y _ (FlagGT_ULT))
@@ -4907,9 +4871,7 @@ func rewriteValueAMD64_OpAMD64CMOVLEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLEQ y _ (FlagLT_ULT))
@@ -4919,9 +4881,7 @@ func rewriteValueAMD64_OpAMD64CMOVLEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLEQ y _ (FlagLT_UGT))
@@ -4931,9 +4891,7 @@ func rewriteValueAMD64_OpAMD64CMOVLEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -4962,9 +4920,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLGE _ x (FlagGT_UGT))
@@ -4974,9 +4930,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLGE _ x (FlagGT_ULT))
@@ -4986,9 +4940,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLGE y _ (FlagLT_ULT))
@@ -4998,9 +4950,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLGE y _ (FlagLT_UGT))
@@ -5010,9 +4960,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -5041,9 +4989,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLGT _ x (FlagGT_UGT))
@@ -5053,9 +4999,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLGT _ x (FlagGT_ULT))
@@ -5065,9 +5009,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLGT y _ (FlagLT_ULT))
@@ -5077,9 +5019,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLGT y _ (FlagLT_UGT))
@@ -5089,9 +5029,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -5120,9 +5058,7 @@ func rewriteValueAMD64_OpAMD64CMOVLHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLHI _ x (FlagGT_UGT))
@@ -5132,9 +5068,7 @@ func rewriteValueAMD64_OpAMD64CMOVLHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLHI y _ (FlagGT_ULT))
@@ -5144,9 +5078,7 @@ func rewriteValueAMD64_OpAMD64CMOVLHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLHI y _ (FlagLT_ULT))
@@ -5156,9 +5088,7 @@ func rewriteValueAMD64_OpAMD64CMOVLHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLHI _ x (FlagLT_UGT))
@@ -5168,9 +5098,7 @@ func rewriteValueAMD64_OpAMD64CMOVLHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -5199,9 +5127,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLLE y _ (FlagGT_UGT))
@@ -5211,9 +5137,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLLE y _ (FlagGT_ULT))
@@ -5223,9 +5147,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLLE _ x (FlagLT_ULT))
@@ -5235,9 +5157,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLLE _ x (FlagLT_UGT))
@@ -5247,9 +5167,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -5278,9 +5196,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLLS y _ (FlagGT_UGT))
@@ -5290,9 +5206,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLLS _ x (FlagGT_ULT))
@@ -5302,9 +5216,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLLS _ x (FlagLT_ULT))
@@ -5314,9 +5226,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLLS y _ (FlagLT_UGT))
@@ -5326,9 +5236,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -5357,9 +5265,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLLT y _ (FlagGT_UGT))
@@ -5369,9 +5275,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLLT y _ (FlagGT_ULT))
@@ -5381,9 +5285,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLLT _ x (FlagLT_ULT))
@@ -5393,9 +5295,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLLT _ x (FlagLT_UGT))
@@ -5405,9 +5305,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -5436,9 +5334,7 @@ func rewriteValueAMD64_OpAMD64CMOVLNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVLNE _ x (FlagGT_UGT))
@@ -5448,9 +5344,7 @@ func rewriteValueAMD64_OpAMD64CMOVLNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLNE _ x (FlagGT_ULT))
@@ -5460,9 +5354,7 @@ func rewriteValueAMD64_OpAMD64CMOVLNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLNE _ x (FlagLT_ULT))
@@ -5472,9 +5364,7 @@ func rewriteValueAMD64_OpAMD64CMOVLNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVLNE _ x (FlagLT_UGT))
@@ -5484,9 +5374,7 @@ func rewriteValueAMD64_OpAMD64CMOVLNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -5515,9 +5403,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQCC _ x (FlagGT_UGT))
@@ -5527,9 +5413,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQCC y _ (FlagGT_ULT))
@@ -5539,9 +5423,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQCC y _ (FlagLT_ULT))
@@ -5551,9 +5433,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQCC _ x (FlagLT_UGT))
@@ -5563,9 +5443,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -5594,9 +5472,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQCS y _ (FlagGT_UGT))
@@ -5606,9 +5482,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQCS _ x (FlagGT_ULT))
@@ -5618,9 +5492,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQCS _ x (FlagLT_ULT))
@@ -5630,9 +5502,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQCS y _ (FlagLT_UGT))
@@ -5642,9 +5512,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -5673,9 +5541,7 @@ func rewriteValueAMD64_OpAMD64CMOVQEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQEQ y _ (FlagGT_UGT))
@@ -5685,9 +5551,7 @@ func rewriteValueAMD64_OpAMD64CMOVQEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQEQ y _ (FlagGT_ULT))
@@ -5697,9 +5561,7 @@ func rewriteValueAMD64_OpAMD64CMOVQEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQEQ y _ (FlagLT_ULT))
@@ -5709,9 +5571,7 @@ func rewriteValueAMD64_OpAMD64CMOVQEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQEQ y _ (FlagLT_UGT))
@@ -5721,9 +5581,7 @@ func rewriteValueAMD64_OpAMD64CMOVQEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQEQ x _ (Select1 (BSFQ (ORQconst [c] _))))
@@ -5746,9 +5604,7 @@ func rewriteValueAMD64_OpAMD64CMOVQEQ(v *Value) bool {
                if !(c != 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -5777,9 +5633,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQGE _ x (FlagGT_UGT))
@@ -5789,9 +5643,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQGE _ x (FlagGT_ULT))
@@ -5801,9 +5653,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQGE y _ (FlagLT_ULT))
@@ -5813,9 +5663,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQGE y _ (FlagLT_UGT))
@@ -5825,9 +5673,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -5856,9 +5702,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQGT _ x (FlagGT_UGT))
@@ -5868,9 +5712,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQGT _ x (FlagGT_ULT))
@@ -5880,9 +5722,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQGT y _ (FlagLT_ULT))
@@ -5892,9 +5732,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQGT y _ (FlagLT_UGT))
@@ -5904,9 +5742,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -5935,9 +5771,7 @@ func rewriteValueAMD64_OpAMD64CMOVQHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQHI _ x (FlagGT_UGT))
@@ -5947,9 +5781,7 @@ func rewriteValueAMD64_OpAMD64CMOVQHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQHI y _ (FlagGT_ULT))
@@ -5959,9 +5791,7 @@ func rewriteValueAMD64_OpAMD64CMOVQHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQHI y _ (FlagLT_ULT))
@@ -5971,9 +5801,7 @@ func rewriteValueAMD64_OpAMD64CMOVQHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQHI _ x (FlagLT_UGT))
@@ -5983,9 +5811,7 @@ func rewriteValueAMD64_OpAMD64CMOVQHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -6014,9 +5840,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQLE y _ (FlagGT_UGT))
@@ -6026,9 +5850,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQLE y _ (FlagGT_ULT))
@@ -6038,9 +5860,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQLE _ x (FlagLT_ULT))
@@ -6050,9 +5870,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQLE _ x (FlagLT_UGT))
@@ -6062,9 +5880,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -6093,9 +5909,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQLS y _ (FlagGT_UGT))
@@ -6105,9 +5919,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQLS _ x (FlagGT_ULT))
@@ -6117,9 +5929,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQLS _ x (FlagLT_ULT))
@@ -6129,9 +5939,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQLS y _ (FlagLT_UGT))
@@ -6141,9 +5949,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -6172,9 +5978,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQLT y _ (FlagGT_UGT))
@@ -6184,9 +5988,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQLT y _ (FlagGT_ULT))
@@ -6196,9 +5998,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQLT _ x (FlagLT_ULT))
@@ -6208,9 +6008,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQLT _ x (FlagLT_UGT))
@@ -6220,9 +6018,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -6251,9 +6047,7 @@ func rewriteValueAMD64_OpAMD64CMOVQNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVQNE _ x (FlagGT_UGT))
@@ -6263,9 +6057,7 @@ func rewriteValueAMD64_OpAMD64CMOVQNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQNE _ x (FlagGT_ULT))
@@ -6275,9 +6067,7 @@ func rewriteValueAMD64_OpAMD64CMOVQNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQNE _ x (FlagLT_ULT))
@@ -6287,9 +6077,7 @@ func rewriteValueAMD64_OpAMD64CMOVQNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVQNE _ x (FlagLT_UGT))
@@ -6299,9 +6087,7 @@ func rewriteValueAMD64_OpAMD64CMOVQNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -6330,9 +6116,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWCC _ x (FlagGT_UGT))
@@ -6342,9 +6126,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWCC y _ (FlagGT_ULT))
@@ -6354,9 +6136,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWCC y _ (FlagLT_ULT))
@@ -6366,9 +6146,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWCC _ x (FlagLT_UGT))
@@ -6378,9 +6156,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCC(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -6409,9 +6185,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWCS y _ (FlagGT_UGT))
@@ -6421,9 +6195,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWCS _ x (FlagGT_ULT))
@@ -6433,9 +6205,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWCS _ x (FlagLT_ULT))
@@ -6445,9 +6215,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWCS y _ (FlagLT_UGT))
@@ -6457,9 +6225,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -6488,9 +6254,7 @@ func rewriteValueAMD64_OpAMD64CMOVWEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWEQ y _ (FlagGT_UGT))
@@ -6500,9 +6264,7 @@ func rewriteValueAMD64_OpAMD64CMOVWEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWEQ y _ (FlagGT_ULT))
@@ -6512,9 +6274,7 @@ func rewriteValueAMD64_OpAMD64CMOVWEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWEQ y _ (FlagLT_ULT))
@@ -6524,9 +6284,7 @@ func rewriteValueAMD64_OpAMD64CMOVWEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWEQ y _ (FlagLT_UGT))
@@ -6536,9 +6294,7 @@ func rewriteValueAMD64_OpAMD64CMOVWEQ(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -6567,9 +6323,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWGE _ x (FlagGT_UGT))
@@ -6579,9 +6333,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWGE _ x (FlagGT_ULT))
@@ -6591,9 +6343,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWGE y _ (FlagLT_ULT))
@@ -6603,9 +6353,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWGE y _ (FlagLT_UGT))
@@ -6615,9 +6363,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -6646,9 +6392,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWGT _ x (FlagGT_UGT))
@@ -6658,9 +6402,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWGT _ x (FlagGT_ULT))
@@ -6670,9 +6412,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWGT y _ (FlagLT_ULT))
@@ -6682,9 +6422,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWGT y _ (FlagLT_UGT))
@@ -6694,9 +6432,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -6725,9 +6461,7 @@ func rewriteValueAMD64_OpAMD64CMOVWHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWHI _ x (FlagGT_UGT))
@@ -6737,9 +6471,7 @@ func rewriteValueAMD64_OpAMD64CMOVWHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWHI y _ (FlagGT_ULT))
@@ -6749,9 +6481,7 @@ func rewriteValueAMD64_OpAMD64CMOVWHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWHI y _ (FlagLT_ULT))
@@ -6761,9 +6491,7 @@ func rewriteValueAMD64_OpAMD64CMOVWHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWHI _ x (FlagLT_UGT))
@@ -6773,9 +6501,7 @@ func rewriteValueAMD64_OpAMD64CMOVWHI(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -6804,9 +6530,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWLE y _ (FlagGT_UGT))
@@ -6816,9 +6540,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWLE y _ (FlagGT_ULT))
@@ -6828,9 +6550,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWLE _ x (FlagLT_ULT))
@@ -6840,9 +6560,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWLE _ x (FlagLT_UGT))
@@ -6852,9 +6570,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -6883,9 +6599,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWLS y _ (FlagGT_UGT))
@@ -6895,9 +6609,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWLS _ x (FlagGT_ULT))
@@ -6907,9 +6619,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWLS _ x (FlagLT_ULT))
@@ -6919,9 +6629,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWLS y _ (FlagLT_UGT))
@@ -6931,9 +6639,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLS(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -6962,9 +6668,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWLT y _ (FlagGT_UGT))
@@ -6974,9 +6678,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWLT y _ (FlagGT_ULT))
@@ -6986,9 +6688,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWLT _ x (FlagLT_ULT))
@@ -6998,9 +6698,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWLT _ x (FlagLT_UGT))
@@ -7010,9 +6708,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLT(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -7041,9 +6737,7 @@ func rewriteValueAMD64_OpAMD64CMOVWNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CMOVWNE _ x (FlagGT_UGT))
@@ -7053,9 +6747,7 @@ func rewriteValueAMD64_OpAMD64CMOVWNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWNE _ x (FlagGT_ULT))
@@ -7065,9 +6757,7 @@ func rewriteValueAMD64_OpAMD64CMOVWNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWNE _ x (FlagLT_ULT))
@@ -7077,9 +6767,7 @@ func rewriteValueAMD64_OpAMD64CMOVWNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWNE _ x (FlagLT_UGT))
@@ -7089,9 +6777,7 @@ func rewriteValueAMD64_OpAMD64CMOVWNE(v *Value) bool {
                if v_2.Op != OpAMD64FlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -7338,8 +7024,7 @@ func rewriteValueAMD64_OpAMD64CMPBconst(v *Value) bool {
                }
                b = l.Block
                v0 := b.NewValue0(l.Pos, OpAMD64CMPBconstload, types.TypeFlags)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -7724,8 +7409,7 @@ func rewriteValueAMD64_OpAMD64CMPLconst(v *Value) bool {
                }
                b = l.Block
                v0 := b.NewValue0(l.Pos, OpAMD64CMPLconstload, types.TypeFlags)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -8290,8 +7974,7 @@ func rewriteValueAMD64_OpAMD64CMPQconst(v *Value) bool {
                }
                b = l.Block
                v0 := b.NewValue0(l.Pos, OpAMD64CMPQconstload, types.TypeFlags)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -8661,8 +8344,7 @@ func rewriteValueAMD64_OpAMD64CMPWconst(v *Value) bool {
                }
                b = l.Block
                v0 := b.NewValue0(l.Pos, OpAMD64CMPWconstload, types.TypeFlags)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -9964,8 +9646,7 @@ func rewriteValueAMD64_OpAMD64MOVBQSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVBQSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -9988,8 +9669,7 @@ func rewriteValueAMD64_OpAMD64MOVBQSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVBQSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -10012,8 +9692,7 @@ func rewriteValueAMD64_OpAMD64MOVBQSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVBQSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -10036,8 +9715,7 @@ func rewriteValueAMD64_OpAMD64MOVBQSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVBQSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -10142,8 +9820,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVBload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -10166,8 +9843,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVBload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -10190,8 +9866,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVBload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -10214,8 +9889,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVBload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -10229,9 +9903,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                if !(zeroUpper56Bits(x, 3)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBQZX x:(MOVBloadidx1 [off] {sym} ptr idx mem))
@@ -10252,8 +9924,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpAMD64MOVBloadidx1, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg3(ptr, idx, mem)
@@ -12279,8 +11950,7 @@ func rewriteValueAMD64_OpAMD64MOVLQSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVLQSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -12303,8 +11973,7 @@ func rewriteValueAMD64_OpAMD64MOVLQSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVLQSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -12431,8 +12100,7 @@ func rewriteValueAMD64_OpAMD64MOVLQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVLload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -12455,8 +12123,7 @@ func rewriteValueAMD64_OpAMD64MOVLQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVLload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -12470,9 +12137,7 @@ func rewriteValueAMD64_OpAMD64MOVLQZX(v *Value) bool {
                if !(zeroUpper32Bits(x, 3)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVLQZX x:(MOVLloadidx1 [off] {sym} ptr idx mem))
@@ -12493,8 +12158,7 @@ func rewriteValueAMD64_OpAMD64MOVLQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx1, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg3(ptr, idx, mem)
@@ -12518,8 +12182,7 @@ func rewriteValueAMD64_OpAMD64MOVLQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx4, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg3(ptr, idx, mem)
@@ -12640,8 +12303,7 @@ func rewriteValueAMD64_OpAMD64MOVLf2i(v *Value) bool {
                }
                b = b.Func.Entry
                v0 := b.NewValue0(v.Pos, OpArg, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                return true
@@ -12667,8 +12329,7 @@ func rewriteValueAMD64_OpAMD64MOVLi2f(v *Value) bool {
                }
                b = b.Func.Entry
                v0 := b.NewValue0(v.Pos, OpArg, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                return true
@@ -15152,8 +14813,7 @@ func rewriteValueAMD64_OpAMD64MOVQf2i(v *Value) bool {
                }
                b = b.Func.Entry
                v0 := b.NewValue0(v.Pos, OpArg, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                return true
@@ -15179,8 +14839,7 @@ func rewriteValueAMD64_OpAMD64MOVQi2f(v *Value) bool {
                }
                b = b.Func.Entry
                v0 := b.NewValue0(v.Pos, OpArg, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                return true
@@ -15210,9 +14869,7 @@ func rewriteValueAMD64_OpAMD64MOVQload(v *Value) bool {
                if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVQload [off1] {sym} (ADDQconst [off2] ptr) mem)
@@ -18082,8 +17739,7 @@ func rewriteValueAMD64_OpAMD64MOVWQSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVWQSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -18106,8 +17762,7 @@ func rewriteValueAMD64_OpAMD64MOVWQSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVWQSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -18130,8 +17785,7 @@ func rewriteValueAMD64_OpAMD64MOVWQSX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVWQSXload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -18247,8 +17901,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVWload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -18271,8 +17924,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVWload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -18295,8 +17947,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpAMD64MOVWload, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -18310,9 +17961,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                if !(zeroUpper48Bits(x, 3)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWQZX x:(MOVWloadidx1 [off] {sym} ptr idx mem))
@@ -18333,8 +17982,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg3(ptr, idx, mem)
@@ -18358,8 +18006,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx2, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg3(ptr, idx, mem)
@@ -20132,9 +19779,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MULLconst [ 3] x)
@@ -20587,9 +20232,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MULQconst [ 3] x)
@@ -21163,9 +20806,7 @@ func rewriteValueAMD64_OpAMD64NEGL(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (NEGL s:(SUBL x y))
@@ -21207,9 +20848,7 @@ func rewriteValueAMD64_OpAMD64NEGQ(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (NEGQ s:(SUBQ x y))
@@ -22050,9 +21689,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORL x0:(MOVBload [i0] {s} p mem) sh:(SHLLconst [8] x1:(MOVBload [i1] {s} p mem)))
@@ -22086,8 +21723,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpAMD64MOVWload, typ.UInt16)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -22126,8 +21762,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpAMD64MOVLload, typ.UInt32)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -22184,8 +21819,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x0.Pos, OpAMD64ORL, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x0.Pos, OpAMD64SHLLconst, v.Type)
                                v1.AuxInt = j0
                                v2 := b.NewValue0(x0.Pos, OpAMD64MOVWload, typ.UInt16)
@@ -22237,8 +21871,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, v.Type)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -22286,8 +21919,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx1, typ.UInt32)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -22353,8 +21985,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
                                                v1.AuxInt = j0
                                                v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
@@ -22401,8 +22032,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpAMD64ROLWconst, v.Type)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = 8
                        v1 := b.NewValue0(x0.Pos, OpAMD64MOVWload, typ.UInt16)
                        v1.AuxInt = i0
@@ -22452,8 +22082,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpAMD64BSWAPL, v.Type)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x0.Pos, OpAMD64MOVLload, typ.UInt32)
                        v1.AuxInt = i0
                        v1.Aux = s
@@ -22512,8 +22141,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x1.Pos, OpAMD64ORL, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x1.Pos, OpAMD64SHLLconst, v.Type)
                                v1.AuxInt = j1
                                v2 := b.NewValue0(x1.Pos, OpAMD64ROLWconst, typ.UInt16)
@@ -22568,8 +22196,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpAMD64ROLWconst, v.Type)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = 8
                                        v1 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
                                        v1.AuxInt = i0
@@ -22628,8 +22255,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpAMD64BSWAPL, v.Type)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v1 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx1, typ.UInt32)
                                        v1.AuxInt = i0
                                        v1.Aux = s
@@ -22697,8 +22323,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
                                                v1.AuxInt = j1
                                                v2 := b.NewValue0(v.Pos, OpAMD64ROLWconst, typ.UInt16)
@@ -22797,9 +22422,7 @@ func rewriteValueAMD64_OpAMD64ORLconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORLconst [c] _)
@@ -23330,9 +22953,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORQ x0:(MOVBload [i0] {s} p mem) sh:(SHLQconst [8] x1:(MOVBload [i1] {s} p mem)))
@@ -23366,8 +22987,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpAMD64MOVWload, typ.UInt16)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -23406,8 +23026,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpAMD64MOVLload, typ.UInt32)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -23446,8 +23065,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpAMD64MOVQload, typ.UInt64)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -23504,8 +23122,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x0.Pos, OpAMD64ORQ, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x0.Pos, OpAMD64SHLQconst, v.Type)
                                v1.AuxInt = j0
                                v2 := b.NewValue0(x0.Pos, OpAMD64MOVWload, typ.UInt16)
@@ -23568,8 +23185,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x0.Pos, OpAMD64ORQ, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x0.Pos, OpAMD64SHLQconst, v.Type)
                                v1.AuxInt = j0
                                v2 := b.NewValue0(x0.Pos, OpAMD64MOVLload, typ.UInt32)
@@ -23621,8 +23237,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, v.Type)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -23670,8 +23285,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx1, typ.UInt32)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -23719,8 +23333,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpAMD64MOVQloadidx1, typ.UInt64)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -23786,8 +23399,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
                                                v1.AuxInt = j0
                                                v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
@@ -23859,8 +23471,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
                                                v1.AuxInt = j0
                                                v2 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx1, typ.UInt32)
@@ -23907,8 +23518,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpAMD64ROLWconst, v.Type)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = 8
                        v1 := b.NewValue0(x0.Pos, OpAMD64MOVWload, typ.UInt16)
                        v1.AuxInt = i0
@@ -23958,8 +23568,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpAMD64BSWAPL, v.Type)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x0.Pos, OpAMD64MOVLload, typ.UInt32)
                        v1.AuxInt = i0
                        v1.Aux = s
@@ -24008,8 +23617,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpAMD64BSWAPQ, v.Type)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x0.Pos, OpAMD64MOVQload, typ.UInt64)
                        v1.AuxInt = i0
                        v1.Aux = s
@@ -24068,8 +23676,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x1.Pos, OpAMD64ORQ, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x1.Pos, OpAMD64SHLQconst, v.Type)
                                v1.AuxInt = j1
                                v2 := b.NewValue0(x1.Pos, OpAMD64ROLWconst, typ.UInt16)
@@ -24143,8 +23750,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x1.Pos, OpAMD64ORQ, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x1.Pos, OpAMD64SHLQconst, v.Type)
                                v1.AuxInt = j1
                                v2 := b.NewValue0(x1.Pos, OpAMD64BSWAPL, typ.UInt32)
@@ -24198,8 +23804,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpAMD64ROLWconst, v.Type)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = 8
                                        v1 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
                                        v1.AuxInt = i0
@@ -24258,8 +23863,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpAMD64BSWAPL, v.Type)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v1 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx1, typ.UInt32)
                                        v1.AuxInt = i0
                                        v1.Aux = s
@@ -24317,8 +23921,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpAMD64BSWAPQ, v.Type)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v1 := b.NewValue0(v.Pos, OpAMD64MOVQloadidx1, typ.UInt64)
                                        v1.AuxInt = i0
                                        v1.Aux = s
@@ -24386,8 +23989,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
                                                v1.AuxInt = j1
                                                v2 := b.NewValue0(v.Pos, OpAMD64ROLWconst, typ.UInt16)
@@ -24470,8 +24072,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
                                                v1.AuxInt = j1
                                                v2 := b.NewValue0(v.Pos, OpAMD64BSWAPL, typ.UInt32)
@@ -24567,9 +24168,7 @@ func rewriteValueAMD64_OpAMD64ORQconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORQconst [-1] _)
@@ -24847,9 +24446,7 @@ func rewriteValueAMD64_OpAMD64ROLBconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -24932,9 +24529,7 @@ func rewriteValueAMD64_OpAMD64ROLLconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -25017,9 +24612,7 @@ func rewriteValueAMD64_OpAMD64ROLQconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -25102,9 +24695,7 @@ func rewriteValueAMD64_OpAMD64ROLWconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -25369,9 +24960,7 @@ func rewriteValueAMD64_OpAMD64SARBconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SARBconst [c] (MOVQconst [d]))
@@ -25593,9 +25182,7 @@ func rewriteValueAMD64_OpAMD64SARLconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SARLconst [c] (MOVQconst [d]))
@@ -25817,9 +25404,7 @@ func rewriteValueAMD64_OpAMD64SARQconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SARQconst [c] (MOVQconst [d]))
@@ -25876,9 +25461,7 @@ func rewriteValueAMD64_OpAMD64SARWconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SARWconst [c] (MOVQconst [d]))
@@ -30170,9 +29753,7 @@ func rewriteValueAMD64_OpAMD64SHLLconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SHLLconst [d] (MOVLconst [c]))
@@ -30406,9 +29987,7 @@ func rewriteValueAMD64_OpAMD64SHLQconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SHLQconst [d] (MOVQconst [c]))
@@ -30515,9 +30094,7 @@ func rewriteValueAMD64_OpAMD64SHRBconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -30739,9 +30316,7 @@ func rewriteValueAMD64_OpAMD64SHRLconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -30963,9 +30538,7 @@ func rewriteValueAMD64_OpAMD64SHRQconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -31048,9 +30621,7 @@ func rewriteValueAMD64_OpAMD64SHRWconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -31133,9 +30704,7 @@ func rewriteValueAMD64_OpAMD64SUBLconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SUBLconst [c] x)
@@ -31380,9 +30949,7 @@ func rewriteValueAMD64_OpAMD64SUBQconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SUBQconst [c] x)
@@ -31797,8 +31364,7 @@ func rewriteValueAMD64_OpAMD64TESTB(v *Value) bool {
                        }
                        b = l.Block
                        v0 := b.NewValue0(l.Pos, OpAMD64CMPBconstload, types.TypeFlags)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = makeValAndOff(0, off)
                        v0.Aux = sym
                        v0.AddArg2(ptr, mem)
@@ -31866,8 +31432,7 @@ func rewriteValueAMD64_OpAMD64TESTL(v *Value) bool {
                        }
                        b = l.Block
                        v0 := b.NewValue0(l.Pos, OpAMD64CMPLconstload, types.TypeFlags)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = makeValAndOff(0, off)
                        v0.Aux = sym
                        v0.AddArg2(ptr, mem)
@@ -31949,8 +31514,7 @@ func rewriteValueAMD64_OpAMD64TESTQ(v *Value) bool {
                        }
                        b = l.Block
                        v0 := b.NewValue0(l.Pos, OpAMD64CMPQconstload, types.TypeFlags)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = makeValAndOff(0, off)
                        v0.Aux = sym
                        v0.AddArg2(ptr, mem)
@@ -32028,8 +31592,7 @@ func rewriteValueAMD64_OpAMD64TESTW(v *Value) bool {
                        }
                        b = l.Block
                        v0 := b.NewValue0(l.Pos, OpAMD64CMPWconstload, types.TypeFlags)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = makeValAndOff(0, off)
                        v0.Aux = sym
                        v0.AddArg2(ptr, mem)
@@ -32549,9 +32112,7 @@ func rewriteValueAMD64_OpAMD64XORLconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (XORLconst [c] (MOVLconst [d]))
@@ -32916,9 +32477,7 @@ func rewriteValueAMD64_OpAMD64XORQconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (XORQconst [c] (MOVQconst [d]))
@@ -35955,9 +35514,7 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Move [1] dst src mem)
@@ -38272,9 +37829,7 @@ func rewriteValueAMD64_OpSelect1(v *Value) bool {
                        break
                }
                x := v_0_0_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Select1 (AddTupleFirst32 _ tuple))
@@ -38438,9 +37993,7 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                        break
                }
                mem := v_1
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero [1] destptr mem)
index 5be3e34dcbd78e828c764d00afb64eaeaec0b984..bf1cf2d183712cd0c6582caed9c5e32380090782 100644 (file)
@@ -1938,9 +1938,7 @@ func rewriteValueARM_OpARMADDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ADDconst [c] x)
@@ -2440,9 +2438,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (AND x (MVN y))
@@ -2534,9 +2530,7 @@ func rewriteValueARM_OpARMANDconst(v *Value) bool {
                if !(int32(c) == -1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDconst [c] x)
@@ -2644,9 +2638,7 @@ func rewriteValueARM_OpARMANDshiftLL(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -2737,9 +2729,7 @@ func rewriteValueARM_OpARMANDshiftRA(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -2830,9 +2820,7 @@ func rewriteValueARM_OpARMANDshiftRL(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -3025,9 +3013,7 @@ func rewriteValueARM_OpARMBICconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (BICconst [c] _)
@@ -3723,9 +3709,7 @@ func rewriteValueARM_OpARMCMOVWHSconst(v *Value) bool {
                if v_1.Op != OpARMFlagLT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWHSconst _ (FlagLT_UGT) [c])
@@ -3746,9 +3730,7 @@ func rewriteValueARM_OpARMCMOVWHSconst(v *Value) bool {
                if v_1.Op != OpARMFlagGT_ULT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWHSconst _ (FlagGT_UGT) [c])
@@ -3810,9 +3792,7 @@ func rewriteValueARM_OpARMCMOVWLSconst(v *Value) bool {
                if v_1.Op != OpARMFlagLT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWLSconst _ (FlagGT_ULT) [c])
@@ -3833,9 +3813,7 @@ func rewriteValueARM_OpARMCMOVWLSconst(v *Value) bool {
                if v_1.Op != OpARMFlagGT_UGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CMOVWLSconst x (InvertFlags flags) [c])
@@ -5779,9 +5757,7 @@ func rewriteValueARM_OpARMMOVDload(v *Value) bool {
                if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -5928,9 +5904,7 @@ func rewriteValueARM_OpARMMOVFload(v *Value) bool {
                if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -6747,9 +6721,7 @@ func rewriteValueARM_OpARMMOVWload(v *Value) bool {
                if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWload [0] {sym} (ADD ptr idx) mem)
@@ -6879,9 +6851,7 @@ func rewriteValueARM_OpARMMOVWloadidx(v *Value) bool {
                if !(isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWloadidx ptr (MOVWconst [c]) mem)
@@ -7028,9 +6998,7 @@ func rewriteValueARM_OpARMMOVWloadshiftLL(v *Value) bool {
                if !(c == d && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWloadshiftLL ptr (MOVWconst [c]) [d] mem)
@@ -7074,9 +7042,7 @@ func rewriteValueARM_OpARMMOVWloadshiftRA(v *Value) bool {
                if !(c == d && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWloadshiftRA ptr (MOVWconst [c]) [d] mem)
@@ -7120,9 +7086,7 @@ func rewriteValueARM_OpARMMOVWloadshiftRL(v *Value) bool {
                if !(c == d && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWloadshiftRL ptr (MOVWconst [c]) [d] mem)
@@ -7575,9 +7539,7 @@ func rewriteValueARM_OpARMMUL(v *Value) bool {
                        if v_1.Op != OpARMMOVWconst || v_1.AuxInt != 1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -7783,9 +7745,7 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                        break
                }
                a := v_2
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MULA x (MOVWconst [1]) a)
@@ -7976,9 +7936,7 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                        break
                }
                a := v_2
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MULA (MOVWconst [1]) x a)
@@ -8241,9 +8199,7 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                        break
                }
                a := v_2
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MULS x (MOVWconst [1]) a)
@@ -8434,9 +8390,7 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                        break
                }
                a := v_2
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MULS (MOVWconst [1]) x a)
@@ -9084,9 +9038,7 @@ func rewriteValueARM_OpARMOR(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -9100,9 +9052,7 @@ func rewriteValueARM_OpARMORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORconst [c] _)
@@ -9244,9 +9194,7 @@ func rewriteValueARM_OpARMORshiftLL(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -9337,9 +9285,7 @@ func rewriteValueARM_OpARMORshiftRA(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -9446,9 +9392,7 @@ func rewriteValueARM_OpARMORshiftRL(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -11952,9 +11896,7 @@ func rewriteValueARM_OpARMSUBconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SUBconst [c] x)
@@ -13253,9 +13195,7 @@ func rewriteValueARM_OpARMXORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (XORconst [c] (MOVWconst [d]))
@@ -15168,9 +15108,7 @@ func rewriteValueARM_OpMove(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Move [1] dst src mem)
@@ -16402,9 +16340,7 @@ func rewriteValueARM_OpSelect0(v *Value) bool {
                if v_0_1.Op != OpARMMOVWconst || v_0_1.AuxInt != 1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Select0 (CALLudiv x (MOVWconst [c])))
@@ -16637,9 +16573,7 @@ func rewriteValueARM_OpZero(v *Value) bool {
                        break
                }
                mem := v_1
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero [1] ptr mem)
index dd3a8b922b907a9bf97e5098e29cfd8f10eea426..a6b13497acabd85f344357612ebf9f0e82755607 100644 (file)
@@ -1613,9 +1613,7 @@ func rewriteValueARM64_OpARM64ADDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ADDconst [c] (MOVDconst [d]))
@@ -1915,9 +1913,7 @@ func rewriteValueARM64_OpARM64AND(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (AND x (MVN y))
@@ -2022,9 +2018,7 @@ func rewriteValueARM64_OpARM64ANDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDconst [c] (MOVDconst [d]))
@@ -2179,9 +2173,7 @@ func rewriteValueARM64_OpARM64ANDshiftLL(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -2235,9 +2227,7 @@ func rewriteValueARM64_OpARM64ANDshiftRA(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -2291,9 +2281,7 @@ func rewriteValueARM64_OpARM64ANDshiftRL(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -3504,9 +3492,7 @@ func rewriteValueARM64_OpARM64CSEL(v *Value) bool {
                if !(ccARM64Eval(cc, flag) > 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CSEL {cc} _ y flag)
@@ -3519,9 +3505,7 @@ func rewriteValueARM64_OpARM64CSEL(v *Value) bool {
                if !(ccARM64Eval(cc, flag) < 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (CSEL {cc} x y (CMPWconst [0] boolval))
@@ -3591,9 +3575,7 @@ func rewriteValueARM64_OpARM64CSEL0(v *Value) bool {
                if !(ccARM64Eval(cc, flag) > 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (CSEL0 {cc} _ flag)
@@ -4094,8 +4076,7 @@ func rewriteValueARM64_OpARM64FMOVDfpgp(v *Value) bool {
                sym := v_0.Aux
                b = b.Func.Entry
                v0 := b.NewValue0(v.Pos, OpArg, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                return true
@@ -4116,8 +4097,7 @@ func rewriteValueARM64_OpARM64FMOVDgpfp(v *Value) bool {
                sym := v_0.Aux
                b = b.Func.Entry
                v0 := b.NewValue0(v.Pos, OpArg, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                return true
@@ -5474,9 +5454,7 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MADD a x (MOVDconst [1]))
@@ -5652,9 +5630,7 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MADD a (MOVDconst [1]) x)
@@ -5880,9 +5856,7 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MADDW a x (MOVDconst [c]))
@@ -6073,9 +6047,7 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MADDW a (MOVDconst [c]) x)
@@ -6284,9 +6256,7 @@ func rewriteValueARM64_OpARM64MNEG(v *Value) bool {
                        if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != -1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -6521,9 +6491,7 @@ func rewriteValueARM64_OpARM64MNEGW(v *Value) bool {
                        if !(int32(c) == -1) {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -13868,9 +13836,7 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MSUB a x (MOVDconst [1]))
@@ -14046,9 +14012,7 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MSUB a (MOVDconst [1]) x)
@@ -14274,9 +14238,7 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MSUBW a x (MOVDconst [c]))
@@ -14467,9 +14429,7 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (MSUBW a (MOVDconst [c]) x)
@@ -14720,9 +14680,7 @@ func rewriteValueARM64_OpARM64MUL(v *Value) bool {
                        if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -14972,9 +14930,7 @@ func rewriteValueARM64_OpARM64MULW(v *Value) bool {
                        if !(int32(c) == 1) {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -15506,9 +15462,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (OR x (MVN y))
@@ -16005,8 +15959,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2, x3)
                        v0 := b.NewValue0(x3.Pos, OpARM64MOVWUload, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.Aux = s
                        v1 := b.NewValue0(x3.Pos, OpOffPtr, p.Type)
                        v1.AuxInt = i0
@@ -16097,8 +16050,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2, x3)
                                v0 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v0.AddArg3(ptr0, idx0, mem)
                                return true
                        }
@@ -16186,8 +16138,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2, x3)
                        v0 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AddArg3(ptr, idx, mem)
                        return true
                }
@@ -16359,8 +16310,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
                        v0 := b.NewValue0(x7.Pos, OpARM64MOVDload, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.Aux = s
                        v1 := b.NewValue0(x7.Pos, OpOffPtr, p.Type)
                        v1.AuxInt = i0
@@ -16519,8 +16469,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
                                v0 := b.NewValue0(x6.Pos, OpARM64MOVDloadidx, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v0.AddArg3(ptr0, idx0, mem)
                                return true
                        }
@@ -16692,8 +16641,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
                        v0 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AddArg3(ptr, idx, mem)
                        return true
                }
@@ -16781,8 +16729,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2, x3)
                        v0 := b.NewValue0(x3.Pos, OpARM64REVW, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x3.Pos, OpARM64MOVWUload, t)
                        v1.Aux = s
                        v2 := b.NewValue0(x3.Pos, OpOffPtr, p.Type)
@@ -16875,8 +16822,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2, x3)
                                v0 := b.NewValue0(x3.Pos, OpARM64REVW, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x3.Pos, OpARM64MOVWUloadidx, t)
                                v1.AddArg3(ptr0, idx0, mem)
                                v0.AddArg(v1)
@@ -16966,8 +16912,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2, x3)
                        v0 := b.NewValue0(v.Pos, OpARM64REVW, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
                        v1.AddArg3(ptr, idx, mem)
                        v0.AddArg(v1)
@@ -17141,8 +17086,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
                        v0 := b.NewValue0(x7.Pos, OpARM64REV, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x7.Pos, OpARM64MOVDload, t)
                        v1.Aux = s
                        v2 := b.NewValue0(x7.Pos, OpOffPtr, p.Type)
@@ -17303,8 +17247,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
                                v0 := b.NewValue0(x7.Pos, OpARM64REV, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x7.Pos, OpARM64MOVDloadidx, t)
                                v1.AddArg3(ptr0, idx0, mem)
                                v0.AddArg(v1)
@@ -17478,8 +17421,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
                        v0 := b.NewValue0(v.Pos, OpARM64REV, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
                        v1.AddArg3(ptr, idx, mem)
                        v0.AddArg(v1)
@@ -17692,9 +17634,7 @@ func rewriteValueARM64_OpARM64ORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORconst [-1] _)
@@ -17803,9 +17743,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: ( ORshiftLL [c] (SRLconst x [64-c]) x)
@@ -17951,8 +17889,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1)
                v0 := b.NewValue0(x1.Pos, OpARM64MOVHUload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.Aux = s
                v1 := b.NewValue0(x1.Pos, OpOffPtr, p.Type)
                v1.AuxInt = i0
@@ -18004,8 +17941,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpARM64MOVHUloadidx, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AddArg3(ptr0, idx0, mem)
                        return true
                }
@@ -18048,8 +17984,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1)
                v0 := b.NewValue0(v.Pos, OpARM64MOVHUloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AddArg3(ptr, idx, mem)
                return true
        }
@@ -18108,8 +18043,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1, x2)
                v0 := b.NewValue0(x2.Pos, OpARM64MOVWUload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.Aux = s
                v1 := b.NewValue0(x2.Pos, OpOffPtr, p.Type)
                v1.AuxInt = i0
@@ -18175,8 +18109,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2)
                        v0 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AddArg3(ptr0, idx0, mem)
                        return true
                }
@@ -18236,8 +18169,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1, x2)
                v0 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AddArg3(ptr, idx, mem)
                return true
        }
@@ -18295,8 +18227,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1, x2)
                v0 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(x2.Pos, OpARM64SLLconst, idx0.Type)
                v1.AuxInt = 1
                v1.AddArg(idx0)
@@ -18400,8 +18331,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1, x2, x3, x4)
                v0 := b.NewValue0(x4.Pos, OpARM64MOVDload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.Aux = s
                v1 := b.NewValue0(x4.Pos, OpOffPtr, p.Type)
                v1.AuxInt = i0
@@ -18501,8 +18431,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2, x3, x4)
                        v0 := b.NewValue0(x4.Pos, OpARM64MOVDloadidx, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AddArg3(ptr0, idx0, mem)
                        return true
                }
@@ -18596,8 +18525,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1, x2, x3, x4)
                v0 := b.NewValue0(x4.Pos, OpARM64MOVDloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(x4.Pos, OpARM64SLLconst, idx0.Type)
                v1.AuxInt = 2
                v1.AddArg(idx0)
@@ -18700,8 +18628,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1, x2, x3, x4)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AddArg3(ptr, idx, mem)
                return true
        }
@@ -18743,8 +18670,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1)
                v0 := b.NewValue0(x1.Pos, OpARM64REV16W, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(x1.Pos, OpARM64MOVHUload, t)
                v1.AuxInt = i0
                v1.Aux = s
@@ -18796,8 +18722,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpARM64REV16W, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x0.Pos, OpARM64MOVHUloadidx, t)
                        v1.AddArg3(ptr0, idx0, mem)
                        v0.AddArg(v1)
@@ -18842,8 +18767,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1)
                v0 := b.NewValue0(v.Pos, OpARM64REV16W, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVHUloadidx, t)
                v1.AddArg3(ptr, idx, mem)
                v0.AddArg(v1)
@@ -18908,8 +18832,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1, x2)
                v0 := b.NewValue0(x2.Pos, OpARM64REVW, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(x2.Pos, OpARM64MOVWUload, t)
                v1.Aux = s
                v2 := b.NewValue0(x2.Pos, OpOffPtr, p.Type)
@@ -18981,8 +18904,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2)
                        v0 := b.NewValue0(x1.Pos, OpARM64REVW, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x1.Pos, OpARM64MOVWUloadidx, t)
                        v1.AddArg3(ptr0, idx0, mem)
                        v0.AddArg(v1)
@@ -19048,8 +18970,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1, x2)
                v0 := b.NewValue0(v.Pos, OpARM64REVW, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
                v1.AddArg3(ptr, idx, mem)
                v0.AddArg(v1)
@@ -19156,8 +19077,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1, x2, x3, x4)
                v0 := b.NewValue0(x4.Pos, OpARM64REV, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(x4.Pos, OpARM64MOVDload, t)
                v1.Aux = s
                v2 := b.NewValue0(x4.Pos, OpOffPtr, p.Type)
@@ -19263,8 +19183,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1, x2, x3, x4)
                        v0 := b.NewValue0(x3.Pos, OpARM64REV, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x3.Pos, OpARM64MOVDloadidx, t)
                        v1.AddArg3(ptr0, idx0, mem)
                        v0.AddArg(v1)
@@ -19372,8 +19291,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                b = mergePoint(b, x0, x1, x2, x3, x4)
                v0 := b.NewValue0(v.Pos, OpARM64REV, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
                v1.AddArg3(ptr, idx, mem)
                v0.AddArg(v1)
@@ -19430,9 +19348,7 @@ func rewriteValueARM64_OpARM64ORshiftRA(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        return false
@@ -19486,9 +19402,7 @@ func rewriteValueARM64_OpARM64ORshiftRL(v *Value) bool {
                if x != y.Args[0] || !(c == d) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: ( ORshiftRL [c] (SLLconst x [64-c]) x)
@@ -20455,9 +20369,7 @@ func rewriteValueARM64_OpARM64SUBconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SUBconst [c] (MOVDconst [d]))
@@ -21035,9 +20947,7 @@ func rewriteValueARM64_OpARM64UDIV(v *Value) bool {
                if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (UDIV x (MOVDconst [c]))
@@ -21089,9 +20999,7 @@ func rewriteValueARM64_OpARM64UDIVW(v *Value) bool {
                if !(uint32(c) == 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (UDIVW x (MOVDconst [c]))
@@ -21666,9 +21574,7 @@ func rewriteValueARM64_OpARM64XORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (XORconst [-1] x)
@@ -23648,9 +23554,7 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Move [1] dst src mem)
@@ -25446,9 +25350,7 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                        break
                }
                mem := v_1
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero [1] ptr mem)
index 58dc71bd040ba50e2adcb9040a812cd954bb0b5c..e036885a16bc1bb6e1d8f17d55f552d5d2fcd5e1 100644 (file)
@@ -2094,9 +2094,7 @@ func rewriteValueMIPS_OpMIPSADDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ADDconst [c] (MOVWconst [d]))
@@ -2168,9 +2166,7 @@ func rewriteValueMIPS_OpMIPSAND(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (AND (SGTUconst [1] x) (SGTUconst [1] y))
@@ -2215,9 +2211,7 @@ func rewriteValueMIPS_OpMIPSANDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDconst [c] (MOVWconst [d]))
@@ -2259,9 +2253,7 @@ func rewriteValueMIPS_OpMIPSCMOVZ(v *Value) bool {
                if v_2.Op != OpMIPSMOVWconst || v_2.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = f.Type
-               v.AddArg(f)
+               v.copyOf(f)
                return true
        }
        // match: (CMOVZ a _ (MOVWconst [c]))
@@ -2276,9 +2268,7 @@ func rewriteValueMIPS_OpMIPSCMOVZ(v *Value) bool {
                if !(c != 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        // match: (CMOVZ a (MOVWconst [0]) c)
@@ -2320,9 +2310,7 @@ func rewriteValueMIPS_OpMIPSCMOVZzero(v *Value) bool {
                if !(c != 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = a.Type
-               v.AddArg(a)
+               v.copyOf(a)
                return true
        }
        return false
@@ -2484,8 +2472,7 @@ func rewriteValueMIPS_OpMIPSMOVBUreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpMIPSMOVBUload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -2632,8 +2619,7 @@ func rewriteValueMIPS_OpMIPSMOVBreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpMIPSMOVBload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -2936,9 +2922,7 @@ func rewriteValueMIPS_OpMIPSMOVDload(v *Value) bool {
                if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -3060,9 +3044,7 @@ func rewriteValueMIPS_OpMIPSMOVFload(v *Value) bool {
                if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -3257,8 +3239,7 @@ func rewriteValueMIPS_OpMIPSMOVHUreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpMIPSMOVHUload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -3451,8 +3432,7 @@ func rewriteValueMIPS_OpMIPSMOVHreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpMIPSMOVHload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -3721,9 +3701,7 @@ func rewriteValueMIPS_OpMIPSMOVWload(v *Value) bool {
                if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -3913,9 +3891,7 @@ func rewriteValueMIPS_OpMIPSMUL(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -4053,9 +4029,7 @@ func rewriteValueMIPS_OpMIPSOR(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (OR (SGTUzero x) (SGTUzero y))
@@ -4089,9 +4063,7 @@ func rewriteValueMIPS_OpMIPSORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORconst [-1] _)
@@ -4712,9 +4684,7 @@ func rewriteValueMIPS_OpMIPSSUBconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SUBconst [c] (MOVWconst [d]))
@@ -4800,9 +4770,7 @@ func rewriteValueMIPS_OpMIPSXORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (XORconst [-1] x)
@@ -4977,9 +4945,7 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Move [1] dst src mem)
@@ -6699,9 +6665,7 @@ func rewriteValueMIPS_OpSelect1(v *Value) bool {
                                continue
                        }
                        x := v_0_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -6962,9 +6926,7 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                        break
                }
                mem := v_1
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero [1] ptr mem)
index 346fa6f28ee3f24dbdd17623e2d26b47bff3f6b5..4413c535d617d83b456467e15e9e4956601b8163 100644 (file)
@@ -2327,9 +2327,7 @@ func rewriteValueMIPS64_OpMIPS64ADDVconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ADDVconst [c] (MOVVconst [d]))
@@ -2412,9 +2410,7 @@ func rewriteValueMIPS64_OpMIPS64AND(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -2438,9 +2434,7 @@ func rewriteValueMIPS64_OpMIPS64ANDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDconst [c] (MOVVconst [d]))
@@ -4290,9 +4284,7 @@ func rewriteValueMIPS64_OpMIPS64OR(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -4306,9 +4298,7 @@ func rewriteValueMIPS64_OpMIPS64ORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORconst [-1] _)
@@ -4867,9 +4857,7 @@ func rewriteValueMIPS64_OpMIPS64SUBVconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SUBVconst [c] (MOVVconst [d]))
@@ -4967,9 +4955,7 @@ func rewriteValueMIPS64_OpMIPS64XORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (XORconst [-1] x)
@@ -5190,9 +5176,7 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Move [1] dst src mem)
@@ -7104,9 +7088,7 @@ func rewriteValueMIPS64_OpSelect1(v *Value) bool {
                        if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -7149,9 +7131,7 @@ func rewriteValueMIPS64_OpSelect1(v *Value) bool {
                if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Select1 (DIVVU x (MOVVconst [c])))
@@ -7369,9 +7349,7 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                        break
                }
                mem := v_1
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero [1] ptr mem)
index c7b4f44920baa61ec4df8e5977cbb35174ef2813..279fed4edb71ddba964562b239ed21b8dc77e829 100644 (file)
@@ -3424,9 +3424,7 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Move [1] dst src mem)
@@ -3999,9 +3997,7 @@ func rewriteValuePPC64_OpPPC64ADDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ADDconst [c] (MOVDaddr [d] {sym} x))
@@ -4094,9 +4090,7 @@ func rewriteValuePPC64_OpPPC64AND(v *Value) bool {
                        if y.Op != OpPPC64MOVWZreg || !(c&0xFFFFFFFF == 0xFFFFFFFF) {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = y.Type
-                       v.AddArg(y)
+                       v.copyOf(y)
                        return true
                }
                break
@@ -4164,9 +4158,7 @@ func rewriteValuePPC64_OpPPC64ANDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDconst [0] _)
@@ -4188,9 +4180,7 @@ func rewriteValuePPC64_OpPPC64ANDconst(v *Value) bool {
                if y.Op != OpPPC64MOVBZreg || !(c&0xFF == 0xFF) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ANDconst [0xFF] y:(MOVBreg _))
@@ -4203,9 +4193,7 @@ func rewriteValuePPC64_OpPPC64ANDconst(v *Value) bool {
                if y.Op != OpPPC64MOVBreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ANDconst [c] y:(MOVHZreg _))
@@ -4217,9 +4205,7 @@ func rewriteValuePPC64_OpPPC64ANDconst(v *Value) bool {
                if y.Op != OpPPC64MOVHZreg || !(c&0xFFFF == 0xFFFF) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ANDconst [0xFFFF] y:(MOVHreg _))
@@ -4232,9 +4218,7 @@ func rewriteValuePPC64_OpPPC64ANDconst(v *Value) bool {
                if y.Op != OpPPC64MOVHreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ANDconst [c] (MOVBreg x))
@@ -5464,9 +5448,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ISEL [2] _ y (FlagLT))
@@ -5479,9 +5461,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagLT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ISEL [2] _ y (FlagGT))
@@ -5494,9 +5474,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ISEL [6] _ y (FlagEQ))
@@ -5509,9 +5487,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ISEL [6] x _ (FlagLT))
@@ -5524,9 +5500,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagLT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ISEL [6] x _ (FlagGT))
@@ -5539,9 +5513,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ISEL [0] _ y (FlagEQ))
@@ -5554,9 +5526,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ISEL [0] _ y (FlagGT))
@@ -5569,9 +5539,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ISEL [0] x _ (FlagLT))
@@ -5584,9 +5552,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagLT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ISEL [5] _ x (FlagEQ))
@@ -5599,9 +5565,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ISEL [5] _ x (FlagLT))
@@ -5614,9 +5578,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagLT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ISEL [5] y _ (FlagGT))
@@ -5629,9 +5591,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ISEL [1] _ y (FlagEQ))
@@ -5644,9 +5604,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ISEL [1] _ y (FlagLT))
@@ -5659,9 +5617,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagLT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ISEL [1] x _ (FlagGT))
@@ -5674,9 +5630,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ISEL [4] x _ (FlagEQ))
@@ -5689,9 +5643,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagEQ {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ISEL [4] x _ (FlagGT))
@@ -5704,9 +5656,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagGT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ISEL [4] _ y (FlagLT))
@@ -5719,9 +5669,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                if v_2.Op != OpPPC64FlagLT {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (ISEL [n] x y (InvertFlags bool))
@@ -6173,8 +6121,7 @@ func rewriteValuePPC64_OpPPC64MFVSRD(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpPPC64MOVDload, typ.Int64)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -6311,9 +6258,7 @@ func rewriteValuePPC64_OpPPC64MOVBZreg(v *Value) bool {
                if !(uint64(c) <= 0xFF) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVBZreg (SRWconst [c] (MOVBZreg x)))
@@ -6393,9 +6338,7 @@ func rewriteValuePPC64_OpPPC64MOVBZreg(v *Value) bool {
                if y.Op != OpPPC64MOVBZreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVBZreg (MOVBreg x))
@@ -6417,9 +6360,7 @@ func rewriteValuePPC64_OpPPC64MOVBZreg(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBZreg x:(MOVBZloadidx _ _ _))
@@ -6430,9 +6371,7 @@ func rewriteValuePPC64_OpPPC64MOVBZreg(v *Value) bool {
                        break
                }
                _ = x.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBZreg x:(Arg <t>))
@@ -6447,9 +6386,7 @@ func rewriteValuePPC64_OpPPC64MOVBZreg(v *Value) bool {
                if !(is8BitInt(t) && !isSigned(t)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBZreg (MOVDconst [c]))
@@ -6481,9 +6418,7 @@ func rewriteValuePPC64_OpPPC64MOVBreg(v *Value) bool {
                if !(uint64(c) <= 0x7F) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVBreg (SRAWconst [c] (MOVBreg x)))
@@ -6597,9 +6532,7 @@ func rewriteValuePPC64_OpPPC64MOVBreg(v *Value) bool {
                if y.Op != OpPPC64MOVBreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVBreg (MOVBZreg x))
@@ -6625,9 +6558,7 @@ func rewriteValuePPC64_OpPPC64MOVBreg(v *Value) bool {
                if !(is8BitInt(t) && isSigned(t)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBreg (MOVDconst [c]))
@@ -8234,9 +8165,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
                if !(uint64(c) <= 0xFFFF) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVHZreg (SRWconst [c] (MOVBZreg x)))
@@ -8335,9 +8264,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
                if y.Op != OpPPC64MOVHZreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVHZreg y:(MOVBZreg _))
@@ -8347,9 +8274,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
                if y.Op != OpPPC64MOVBZreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVHZreg y:(MOVHBRload _ _))
@@ -8360,9 +8285,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
                        break
                }
                _ = y.Args[1]
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVHZreg y:(MOVHreg x))
@@ -8385,9 +8308,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHZreg x:(MOVBZloadidx _ _ _))
@@ -8398,9 +8319,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
                        break
                }
                _ = x.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHZreg x:(MOVHZload _ _))
@@ -8411,9 +8330,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHZreg x:(MOVHZloadidx _ _ _))
@@ -8424,9 +8341,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
                        break
                }
                _ = x.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHZreg x:(Arg <t>))
@@ -8441,9 +8356,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
                if !((is8BitInt(t) || is16BitInt(t)) && !isSigned(t)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHZreg (MOVDconst [c]))
@@ -8588,9 +8501,7 @@ func rewriteValuePPC64_OpPPC64MOVHreg(v *Value) bool {
                if !(uint64(c) <= 0x7FFF) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVHreg (SRAWconst [c] (MOVBreg x)))
@@ -8723,9 +8634,7 @@ func rewriteValuePPC64_OpPPC64MOVHreg(v *Value) bool {
                if y.Op != OpPPC64MOVHreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVHreg y:(MOVBreg _))
@@ -8735,9 +8644,7 @@ func rewriteValuePPC64_OpPPC64MOVHreg(v *Value) bool {
                if y.Op != OpPPC64MOVBreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVHreg y:(MOVHZreg x))
@@ -8760,9 +8667,7 @@ func rewriteValuePPC64_OpPPC64MOVHreg(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHreg x:(MOVHloadidx _ _ _))
@@ -8773,9 +8678,7 @@ func rewriteValuePPC64_OpPPC64MOVHreg(v *Value) bool {
                        break
                }
                _ = x.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHreg x:(Arg <t>))
@@ -8790,9 +8693,7 @@ func rewriteValuePPC64_OpPPC64MOVHreg(v *Value) bool {
                if !((is8BitInt(t) || is16BitInt(t)) && isSigned(t)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHreg (MOVDconst [c]))
@@ -9356,9 +9257,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                if !(uint64(c) <= 0xFFFFFFFF) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVWZreg y:(AND (MOVDconst [c]) _))
@@ -9380,9 +9279,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                        if !(uint64(c) <= 0xFFFFFFFF) {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = y.Type
-                       v.AddArg(y)
+                       v.copyOf(y)
                        return true
                }
                break
@@ -9485,9 +9382,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                if y.Op != OpPPC64MOVWZreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVWZreg y:(MOVHZreg _))
@@ -9497,9 +9392,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                if y.Op != OpPPC64MOVHZreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVWZreg y:(MOVBZreg _))
@@ -9509,9 +9402,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                if y.Op != OpPPC64MOVBZreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVWZreg y:(MOVHBRload _ _))
@@ -9522,9 +9413,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                        break
                }
                _ = y.Args[1]
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVWZreg y:(MOVWBRload _ _))
@@ -9535,9 +9424,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                        break
                }
                _ = y.Args[1]
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVWZreg y:(MOVWreg x))
@@ -9560,9 +9447,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(MOVBZloadidx _ _ _))
@@ -9573,9 +9458,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                        break
                }
                _ = x.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(MOVHZload _ _))
@@ -9586,9 +9469,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(MOVHZloadidx _ _ _))
@@ -9599,9 +9480,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                        break
                }
                _ = x.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(MOVWZload _ _))
@@ -9612,9 +9491,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(MOVWZloadidx _ _ _))
@@ -9625,9 +9502,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                        break
                }
                _ = x.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(Arg <t>))
@@ -9642,9 +9517,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
                if !((is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && !isSigned(t)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg (MOVDconst [c]))
@@ -9789,9 +9662,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
                if !(uint64(c) <= 0xFFFF) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVWreg y:(AND (MOVDconst [c]) _))
@@ -9813,9 +9684,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
                        if !(uint64(c) <= 0x7FFFFFFF) {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = y.Type
-                       v.AddArg(y)
+                       v.copyOf(y)
                        return true
                }
                break
@@ -9935,9 +9804,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
                if y.Op != OpPPC64MOVWreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVWreg y:(MOVHreg _))
@@ -9947,9 +9814,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
                if y.Op != OpPPC64MOVHreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVWreg y:(MOVBreg _))
@@ -9959,9 +9824,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
                if y.Op != OpPPC64MOVBreg {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = y.Type
-               v.AddArg(y)
+               v.copyOf(y)
                return true
        }
        // match: (MOVWreg y:(MOVWZreg x))
@@ -9984,9 +9847,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVHloadidx _ _ _))
@@ -9997,9 +9858,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
                        break
                }
                _ = x.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVWload _ _))
@@ -10010,9 +9869,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVWloadidx _ _ _))
@@ -10023,9 +9880,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
                        break
                }
                _ = x.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(Arg <t>))
@@ -10040,9 +9895,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
                if !((is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && isSigned(t)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg (MOVDconst [c]))
@@ -10343,8 +10196,7 @@ func rewriteValuePPC64_OpPPC64MTVSRD(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpPPC64FMOVDload, typ.Float64)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = off
                v0.Aux = sym
                v0.AddArg2(ptr, mem)
@@ -10637,8 +10489,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpPPC64MOVHZload, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -10678,8 +10529,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpPPC64MOVHZload, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -10719,8 +10569,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpPPC64MOVHBRload, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x1.Pos, OpPPC64MOVDaddr, typ.Uintptr)
                        v1.AuxInt = i0
                        v1.Aux = s
@@ -10762,8 +10611,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpPPC64MOVHBRload, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x1.Pos, OpPPC64MOVDaddr, typ.Uintptr)
                        v1.AuxInt = i0
                        v1.Aux = s
@@ -10811,8 +10659,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpPPC64SLDconst, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = n1
                        v1 := b.NewValue0(x1.Pos, OpPPC64MOVHBRload, t)
                        v2 := b.NewValue0(x1.Pos, OpPPC64MOVDaddr, typ.Uintptr)
@@ -10863,8 +10710,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpPPC64SLDconst, t)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = n1
                        v1 := b.NewValue0(x1.Pos, OpPPC64MOVHBRload, t)
                        v2 := b.NewValue0(x1.Pos, OpPPC64MOVDaddr, typ.Uintptr)
@@ -10933,8 +10779,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2)
                                v0 := b.NewValue0(x0.Pos, OpPPC64MOVWZload, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v0.AuxInt = i0
                                v0.Aux = s
                                v0.AddArg2(p, mem)
@@ -10999,8 +10844,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2)
                                v0 := b.NewValue0(x0.Pos, OpPPC64MOVWZload, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v0.AuxInt = i0
                                v0.Aux = s
                                v0.AddArg2(p, mem)
@@ -11066,8 +10910,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2)
                                v0 := b.NewValue0(x0.Pos, OpPPC64MOVWBRload, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x0.Pos, OpPPC64MOVDaddr, typ.Uintptr)
                                v1.AuxInt = i0
                                v1.Aux = s
@@ -11135,8 +10978,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2)
                                v0 := b.NewValue0(x0.Pos, OpPPC64MOVWBRload, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x0.Pos, OpPPC64MOVDaddr, typ.Uintptr)
                                v1.AuxInt = i0
                                v1.Aux = s
@@ -11204,8 +11046,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2)
                                v0 := b.NewValue0(x2.Pos, OpPPC64MOVWBRload, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x2.Pos, OpPPC64MOVDaddr, typ.Uintptr)
                                v1.AuxInt = i0
                                v1.Aux = s
@@ -11273,8 +11114,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2)
                                v0 := b.NewValue0(x2.Pos, OpPPC64MOVWBRload, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x2.Pos, OpPPC64MOVDaddr, typ.Uintptr)
                                v1.AuxInt = i0
                                v1.Aux = s
@@ -11346,8 +11186,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2)
                                v0 := b.NewValue0(x0.Pos, OpPPC64SLDconst, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v0.AuxInt = 32
                                v1 := b.NewValue0(x0.Pos, OpPPC64MOVWBRload, t)
                                v2 := b.NewValue0(x0.Pos, OpPPC64MOVDaddr, typ.Uintptr)
@@ -11422,8 +11261,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, x2)
                                v0 := b.NewValue0(x0.Pos, OpPPC64SLDconst, t)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v0.AuxInt = 32
                                v1 := b.NewValue0(x0.Pos, OpPPC64MOVWBRload, t)
                                v2 := b.NewValue0(x0.Pos, OpPPC64MOVDaddr, typ.Uintptr)
@@ -11541,8 +11379,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x4, x5, x6, x7)
                                                v0 := b.NewValue0(x0.Pos, OpPPC64MOVDload, t)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v0.AuxInt = i0
                                                v0.Aux = s
                                                v0.AddArg2(p, mem)
@@ -11658,8 +11495,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, x2, x3, x4)
                                                v0 := b.NewValue0(x4.Pos, OpPPC64MOVDBRload, t)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(x4.Pos, OpPPC64MOVDaddr, typ.Uintptr)
                                                v1.AuxInt = i0
                                                v1.Aux = s
@@ -11777,8 +11613,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                                }
                                                b = mergePoint(b, x3, x4, x5, x6, x7)
                                                v0 := b.NewValue0(x3.Pos, OpPPC64MOVDBRload, t)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(x3.Pos, OpPPC64MOVDaddr, typ.Uintptr)
                                                v1.AuxInt = i0
                                                v1.Aux = s
@@ -11896,8 +11731,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                                }
                                                b = mergePoint(b, x3, x4, x5, x6, x7)
                                                v0 := b.NewValue0(x3.Pos, OpPPC64MOVDBRload, t)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(x3.Pos, OpPPC64MOVDaddr, typ.Uintptr)
                                                v1.AuxInt = i0
                                                v1.Aux = s
@@ -11922,9 +11756,7 @@ func rewriteValuePPC64_OpPPC64ORN(v *Value) bool {
                if v_1.Op != OpPPC64MOVDconst || v_1.AuxInt != -1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -11962,9 +11794,7 @@ func rewriteValuePPC64_OpPPC64ORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -12223,9 +12053,7 @@ func rewriteValuePPC64_OpPPC64XORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -15075,9 +14903,7 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                        break
                }
                mem := v_1
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero [1] destptr mem)
index e40fe69930b4698b9ca81dd992be8b0ad924b91d..f20f744456ab567a96de44865e2a6670d76483b6 100644 (file)
@@ -1864,9 +1864,7 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Move [1] dst src mem)
@@ -2289,9 +2287,7 @@ func rewriteValueRISCV64_OpRISCV64ADDI(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -4081,9 +4077,7 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
                        break
                }
                mem := v_1
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero [1] ptr mem)
index 7a78dfdac703ab0a4e1cf896b80a011116970885..874bac1fdec7cbcf3df9876a3bb37b74617f0fc4 100644 (file)
@@ -3097,9 +3097,7 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Move [1] dst src mem)
@@ -5450,9 +5448,7 @@ func rewriteValueS390X_OpS390XADDWconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ADDWconst [c] (MOVDconst [d]))
@@ -5604,9 +5600,7 @@ func rewriteValueS390X_OpS390XADDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ADDconst [c] (MOVDconst [d]))
@@ -5849,9 +5843,7 @@ func rewriteValueS390X_OpS390XAND(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (AND <t> x g:(MOVDload [off] {sym} ptr mem))
@@ -5909,9 +5901,7 @@ func rewriteValueS390X_OpS390XANDW(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDW <t> x g:(MOVWload [off] {sym} ptr mem))
@@ -6029,9 +6019,7 @@ func rewriteValueS390X_OpS390XANDWconst(v *Value) bool {
                if !(int32(c) == -1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDWconst [c] (MOVDconst [d]))
@@ -6132,9 +6120,7 @@ func rewriteValueS390X_OpS390XANDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ANDconst [c] (MOVDconst [d]))
@@ -7285,9 +7271,7 @@ func rewriteValueS390X_OpS390XFMOVDload(v *Value) bool {
                if !(isSamePtr(ptr1, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (FMOVDload [off1] {sym} (ADDconst [off2] ptr) mem)
@@ -7610,9 +7594,7 @@ func rewriteValueS390X_OpS390XFMOVSload(v *Value) bool {
                if !(isSamePtr(ptr1, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (FMOVSload [off1] {sym} (ADDconst [off2] ptr) mem)
@@ -8094,8 +8076,7 @@ func rewriteValueS390X_OpS390XLDGR(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpS390XLNDFR, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(x.Pos, OpS390XLDGR, t)
                v2 := b.NewValue0(x.Pos, OpS390XMOVDload, t1)
                v2.AuxInt = off
@@ -8112,9 +8093,7 @@ func rewriteValueS390X_OpS390XLDGR(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -8162,9 +8141,7 @@ func rewriteValueS390X_OpS390XLGDR(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -8197,9 +8174,7 @@ func rewriteValueS390X_OpS390XLOCGR(v *Value) bool {
                if v_2.Op != OpS390XFlagEQ || !(c.(s390x.CCMask)&s390x.Equal != 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (LOCGR {c} _ x (FlagLT))
@@ -8211,9 +8186,7 @@ func rewriteValueS390X_OpS390XLOCGR(v *Value) bool {
                if v_2.Op != OpS390XFlagLT || !(c.(s390x.CCMask)&s390x.Less != 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (LOCGR {c} _ x (FlagGT))
@@ -8225,9 +8198,7 @@ func rewriteValueS390X_OpS390XLOCGR(v *Value) bool {
                if v_2.Op != OpS390XFlagGT || !(c.(s390x.CCMask)&s390x.Greater != 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (LOCGR {c} _ x (FlagOV))
@@ -8239,9 +8210,7 @@ func rewriteValueS390X_OpS390XLOCGR(v *Value) bool {
                if v_2.Op != OpS390XFlagOV || !(c.(s390x.CCMask)&s390x.Unordered != 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (LOCGR {c} x _ (FlagEQ))
@@ -8253,9 +8222,7 @@ func rewriteValueS390X_OpS390XLOCGR(v *Value) bool {
                if v_2.Op != OpS390XFlagEQ || !(c.(s390x.CCMask)&s390x.Equal == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (LOCGR {c} x _ (FlagLT))
@@ -8267,9 +8234,7 @@ func rewriteValueS390X_OpS390XLOCGR(v *Value) bool {
                if v_2.Op != OpS390XFlagLT || !(c.(s390x.CCMask)&s390x.Less == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (LOCGR {c} x _ (FlagGT))
@@ -8281,9 +8246,7 @@ func rewriteValueS390X_OpS390XLOCGR(v *Value) bool {
                if v_2.Op != OpS390XFlagGT || !(c.(s390x.CCMask)&s390x.Greater == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (LOCGR {c} x _ (FlagOV))
@@ -8295,9 +8258,7 @@ func rewriteValueS390X_OpS390XLOCGR(v *Value) bool {
                if v_2.Op != OpS390XFlagOV || !(c.(s390x.CCMask)&s390x.Unordered == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -8311,9 +8272,7 @@ func rewriteValueS390X_OpS390XLoweredRound32F(v *Value) bool {
                if x.Op != OpS390XFMOVSconst {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -8327,9 +8286,7 @@ func rewriteValueS390X_OpS390XLoweredRound64F(v *Value) bool {
                if x.Op != OpS390XFMOVDconst {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -8620,9 +8577,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBZreg x:(MOVBZloadidx _ _ _))
@@ -8637,9 +8592,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBZreg <t> x:(MOVBload [o] {s} p mem))
@@ -8660,8 +8613,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpS390XMOVBZload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg2(p, mem)
@@ -8686,8 +8638,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg3(p, i, mem)
@@ -8705,9 +8656,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
                if !(!t.IsSigned() && t.Size() == 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBZreg (MOVDconst [c]))
@@ -8743,9 +8692,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
                if !(int64(uint8(c)) == c && int64(uint8(d)) == d && (!x.Type.IsSigned() || x.Type.Size() > 1)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBZreg (ANDWconst [m] x))
@@ -9051,9 +8998,7 @@ func rewriteValueS390X_OpS390XMOVBreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBreg x:(MOVBloadidx _ _ _))
@@ -9068,9 +9013,7 @@ func rewriteValueS390X_OpS390XMOVBreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBreg <t> x:(MOVBZload [o] {s} p mem))
@@ -9091,8 +9034,7 @@ func rewriteValueS390X_OpS390XMOVBreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpS390XMOVBload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg2(p, mem)
@@ -9117,8 +9059,7 @@ func rewriteValueS390X_OpS390XMOVBreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpS390XMOVBloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg3(p, i, mem)
@@ -9136,9 +9077,7 @@ func rewriteValueS390X_OpS390XMOVBreg(v *Value) bool {
                if !(t.IsSigned() && t.Size() == 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVBreg (MOVDconst [c]))
@@ -10085,9 +10024,7 @@ func rewriteValueS390X_OpS390XMOVDload(v *Value) bool {
                if !(isSamePtr(ptr1, ptr2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVDload [off] {sym} ptr1 (FMOVDstore [off] {sym} ptr2 x _))
@@ -11111,9 +11048,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHZreg x:(MOVBZloadidx _ _ _))
@@ -11128,9 +11063,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHZreg x:(MOVHZload _ _))
@@ -11145,9 +11078,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHZreg x:(MOVHZloadidx _ _ _))
@@ -11162,9 +11093,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHZreg <t> x:(MOVHload [o] {s} p mem))
@@ -11185,8 +11114,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpS390XMOVHZload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg2(p, mem)
@@ -11211,8 +11139,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg3(p, i, mem)
@@ -11230,9 +11157,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
                if !(!t.IsSigned() && t.Size() <= 2) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHZreg (MOVDconst [c]))
@@ -11534,9 +11459,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHreg x:(MOVBloadidx _ _ _))
@@ -11551,9 +11474,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHreg x:(MOVHload _ _))
@@ -11568,9 +11489,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHreg x:(MOVHloadidx _ _ _))
@@ -11585,9 +11504,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHreg x:(MOVBZload _ _))
@@ -11602,9 +11519,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHreg x:(MOVBZloadidx _ _ _))
@@ -11619,9 +11534,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHreg <t> x:(MOVHZload [o] {s} p mem))
@@ -11642,8 +11555,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpS390XMOVHload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg2(p, mem)
@@ -11668,8 +11580,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpS390XMOVHloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg3(p, i, mem)
@@ -11687,9 +11598,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                if !(t.IsSigned() && t.Size() <= 2) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVHreg (MOVDconst [c]))
@@ -12672,9 +12581,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(MOVBZloadidx _ _ _))
@@ -12689,9 +12596,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(MOVHZload _ _))
@@ -12706,9 +12611,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(MOVHZloadidx _ _ _))
@@ -12723,9 +12626,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(MOVWZload _ _))
@@ -12740,9 +12641,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 4) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg x:(MOVWZloadidx _ _ _))
@@ -12757,9 +12656,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 4) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg <t> x:(MOVWload [o] {s} p mem))
@@ -12780,8 +12677,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpS390XMOVWZload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg2(p, mem)
@@ -12806,8 +12702,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpS390XMOVWZloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg3(p, i, mem)
@@ -12825,9 +12720,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                if !(!t.IsSigned() && t.Size() <= 4) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWZreg (MOVDconst [c]))
@@ -13097,9 +12990,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVBloadidx _ _ _))
@@ -13114,9 +13005,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVHload _ _))
@@ -13131,9 +13020,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVHloadidx _ _ _))
@@ -13148,9 +13035,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVWload _ _))
@@ -13165,9 +13050,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVWloadidx _ _ _))
@@ -13182,9 +13065,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(x.Type.IsSigned() || x.Type.Size() == 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVBZload _ _))
@@ -13199,9 +13080,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVBZloadidx _ _ _))
@@ -13216,9 +13095,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVHZload _ _))
@@ -13233,9 +13110,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg x:(MOVHZloadidx _ _ _))
@@ -13250,9 +13125,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg <t> x:(MOVWZload [o] {s} p mem))
@@ -13273,8 +13146,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(x.Pos, OpS390XMOVWload, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg2(p, mem)
@@ -13299,8 +13171,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpS390XMOVWloadidx, t)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v0.AuxInt = o
                v0.Aux = s
                v0.AddArg3(p, i, mem)
@@ -13318,9 +13189,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                if !(t.IsSigned() && t.Size() <= 4) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MOVWreg (MOVDconst [c]))
@@ -13924,9 +13793,7 @@ func rewriteValueS390X_OpS390XMULLDconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MULLDconst [c] x)
@@ -14171,9 +14038,7 @@ func rewriteValueS390X_OpS390XMULLWconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (MULLWconst [c] x)
@@ -14591,9 +14456,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (OR <t> x g:(MOVDload [off] {sym} ptr mem))
@@ -14654,8 +14517,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpS390XMOVHZload, typ.UInt16)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -14694,8 +14556,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpS390XMOVWZload, typ.UInt32)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -14734,8 +14595,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpS390XMOVDload, typ.UInt64)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -14792,8 +14652,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x1.Pos, OpS390XSLDconst, v.Type)
                                v1.AuxInt = j1
                                v2 := b.NewValue0(x1.Pos, OpS390XMOVHZload, typ.UInt16)
@@ -14856,8 +14715,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x1.Pos, OpS390XSLDconst, v.Type)
                                v1.AuxInt = j1
                                v2 := b.NewValue0(x1.Pos, OpS390XMOVWZload, typ.UInt32)
@@ -14909,8 +14767,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, typ.UInt16)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -14958,8 +14815,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpS390XMOVWZloadidx, typ.UInt32)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -15007,8 +14863,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpS390XMOVDloadidx, typ.UInt64)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -15074,8 +14929,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
                                                v1.AuxInt = j1
                                                v2 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, typ.UInt16)
@@ -15147,8 +15001,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
                                                v1.AuxInt = j1
                                                v2 := b.NewValue0(v.Pos, OpS390XMOVWZloadidx, typ.UInt32)
@@ -15195,8 +15048,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpS390XMOVHZreg, typ.UInt64)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x1.Pos, OpS390XMOVHBRload, typ.UInt16)
                        v1.AuxInt = i0
                        v1.Aux = s
@@ -15245,8 +15097,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpS390XMOVWZreg, typ.UInt64)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x1.Pos, OpS390XMOVWBRload, typ.UInt32)
                        v1.AuxInt = i0
                        v1.Aux = s
@@ -15295,8 +15146,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpS390XMOVDBRload, typ.UInt64)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -15353,8 +15203,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x0.Pos, OpS390XSLDconst, v.Type)
                                v1.AuxInt = j0
                                v2 := b.NewValue0(x0.Pos, OpS390XMOVHZreg, typ.UInt64)
@@ -15427,8 +15276,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x0.Pos, OpS390XSLDconst, v.Type)
                                v1.AuxInt = j0
                                v2 := b.NewValue0(x0.Pos, OpS390XMOVWZreg, typ.UInt64)
@@ -15482,8 +15330,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v1 := b.NewValue0(v.Pos, OpS390XMOVHBRloadidx, typ.Int16)
                                        v1.AuxInt = i0
                                        v1.Aux = s
@@ -15541,8 +15388,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v1 := b.NewValue0(v.Pos, OpS390XMOVWBRloadidx, typ.Int32)
                                        v1.AuxInt = i0
                                        v1.Aux = s
@@ -15600,8 +15446,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpS390XMOVDBRloadidx, typ.Int64)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -15667,8 +15512,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
                                                v1.AuxInt = j0
                                                v2 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
@@ -15750,8 +15594,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
                                                v1.AuxInt = j0
                                                v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
@@ -15823,9 +15666,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORW <t> x g:(MOVWload [off] {sym} ptr mem))
@@ -15913,8 +15754,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpS390XMOVHZload, typ.UInt16)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -15953,8 +15793,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x0.Pos, OpS390XMOVWZload, typ.UInt32)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -16011,8 +15850,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x1.Pos, OpS390XORW, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x1.Pos, OpS390XSLWconst, v.Type)
                                v1.AuxInt = j1
                                v2 := b.NewValue0(x1.Pos, OpS390XMOVHZload, typ.UInt16)
@@ -16064,8 +15902,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, typ.UInt16)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -16113,8 +15950,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpS390XMOVWZloadidx, typ.UInt32)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -16180,8 +16016,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
                                                v1.AuxInt = j1
                                                v2 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, typ.UInt16)
@@ -16228,8 +16063,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpS390XMOVHZreg, typ.UInt64)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v1 := b.NewValue0(x1.Pos, OpS390XMOVHBRload, typ.UInt16)
                        v1.AuxInt = i0
                        v1.Aux = s
@@ -16278,8 +16112,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                        }
                        b = mergePoint(b, x0, x1)
                        v0 := b.NewValue0(x1.Pos, OpS390XMOVWBRload, typ.UInt32)
-                       v.reset(OpCopy)
-                       v.AddArg(v0)
+                       v.copyOf(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
                        v0.AddArg2(p, mem)
@@ -16336,8 +16169,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                }
                                b = mergePoint(b, x0, x1, y)
                                v0 := b.NewValue0(x0.Pos, OpS390XORW, v.Type)
-                               v.reset(OpCopy)
-                               v.AddArg(v0)
+                               v.copyOf(v0)
                                v1 := b.NewValue0(x0.Pos, OpS390XSLWconst, v.Type)
                                v1.AuxInt = j0
                                v2 := b.NewValue0(x0.Pos, OpS390XMOVHZreg, typ.UInt64)
@@ -16391,8 +16223,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v1 := b.NewValue0(v.Pos, OpS390XMOVHBRloadidx, typ.Int16)
                                        v1.AuxInt = i0
                                        v1.Aux = s
@@ -16450,8 +16281,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                        }
                                        b = mergePoint(b, x0, x1)
                                        v0 := b.NewValue0(v.Pos, OpS390XMOVWBRloadidx, typ.Int32)
-                                       v.reset(OpCopy)
-                                       v.AddArg(v0)
+                                       v.copyOf(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
                                        v0.AddArg3(p, idx, mem)
@@ -16517,8 +16347,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                                }
                                                b = mergePoint(b, x0, x1, y)
                                                v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type)
-                                               v.reset(OpCopy)
-                                               v.AddArg(v0)
+                                               v.copyOf(v0)
                                                v1 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
                                                v1.AuxInt = j0
                                                v2 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
@@ -16549,9 +16378,7 @@ func rewriteValueS390X_OpS390XORWconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORWconst [c] _)
@@ -16640,9 +16467,7 @@ func rewriteValueS390X_OpS390XORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ORconst [-1] _)
@@ -17984,9 +17809,7 @@ func rewriteValueS390X_OpS390XSUBWconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SUBWconst [c] x)
@@ -18060,9 +17883,7 @@ func rewriteValueS390X_OpS390XSUBconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SUBconst [c] x)
@@ -18465,9 +18286,7 @@ func rewriteValueS390X_OpS390XXORWconst(v *Value) bool {
                if !(int32(c) == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (XORWconst [c] (MOVDconst [d]))
@@ -18544,9 +18363,7 @@ func rewriteValueS390X_OpS390XXORconst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (XORconst [c] (MOVDconst [d]))
@@ -19064,9 +18881,7 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                        break
                }
                mem := v_1
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero [1] destptr mem)
index 81acd7e7c45e8058ca9d0bee889ac5f81be8706a..4b100b6c323d7afbf45f48df4dbad3f57deab1ad 100644 (file)
@@ -1853,9 +1853,7 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Move [1] dst src mem)
@@ -3099,9 +3097,7 @@ func rewriteValueWasm_OpSignExt16to32(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SignExt16to32 x)
@@ -3143,9 +3139,7 @@ func rewriteValueWasm_OpSignExt16to64(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SignExt16to64 x)
@@ -3187,9 +3181,7 @@ func rewriteValueWasm_OpSignExt32to64(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SignExt32to64 x)
@@ -3231,9 +3223,7 @@ func rewriteValueWasm_OpSignExt8to16(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SignExt8to16 x)
@@ -3275,9 +3265,7 @@ func rewriteValueWasm_OpSignExt8to32(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SignExt8to32 x)
@@ -3319,9 +3307,7 @@ func rewriteValueWasm_OpSignExt8to64(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (SignExt8to64 x)
@@ -3596,9 +3582,7 @@ func rewriteValueWasm_OpWasmI64AddConst(v *Value) bool {
                        break
                }
                x := v_0
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (I64AddConst [off] (LoweredAddr {sym} [off2] base))
@@ -4350,9 +4334,7 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                        break
                }
                mem := v_1
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero [1] destptr mem)
@@ -4610,9 +4592,7 @@ func rewriteValueWasm_OpZeroExt16to32(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ZeroExt16to32 x)
@@ -4638,9 +4618,7 @@ func rewriteValueWasm_OpZeroExt16to64(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ZeroExt16to64 x)
@@ -4666,9 +4644,7 @@ func rewriteValueWasm_OpZeroExt32to64(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ZeroExt32to64 x)
@@ -4694,9 +4670,7 @@ func rewriteValueWasm_OpZeroExt8to16(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ZeroExt8to16 x)
@@ -4722,9 +4696,7 @@ func rewriteValueWasm_OpZeroExt8to32(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ZeroExt8to32 x)
@@ -4750,9 +4722,7 @@ func rewriteValueWasm_OpZeroExt8to64(v *Value) bool {
                        break
                }
                _ = x.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ZeroExt8to64 x)
index a031fca4add614a32cacae85df903c29569c593e..08ed1fd1299a81c4933b8f388821308e5e73f62f 100644 (file)
@@ -41,9 +41,7 @@ func rewriteValuedec_OpComplexImag(v *Value) bool {
                        break
                }
                imag := v_0.Args[1]
-               v.reset(OpCopy)
-               v.Type = imag.Type
-               v.AddArg(imag)
+               v.copyOf(imag)
                return true
        }
        return false
@@ -58,9 +56,7 @@ func rewriteValuedec_OpComplexReal(v *Value) bool {
                }
                _ = v_0.Args[1]
                real := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = real.Type
-               v.AddArg(real)
+               v.copyOf(real)
                return true
        }
        return false
@@ -74,9 +70,7 @@ func rewriteValuedec_OpIData(v *Value) bool {
                        break
                }
                data := v_0.Args[1]
-               v.reset(OpCopy)
-               v.Type = data.Type
-               v.AddArg(data)
+               v.copyOf(data)
                return true
        }
        return false
@@ -91,9 +85,7 @@ func rewriteValuedec_OpITab(v *Value) bool {
                }
                _ = v_0.Args[1]
                itab := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = itab.Type
-               v.AddArg(itab)
+               v.copyOf(itab)
                return true
        }
        return false
@@ -225,9 +217,7 @@ func rewriteValuedec_OpSliceCap(v *Value) bool {
                        break
                }
                cap := v_0.Args[2]
-               v.reset(OpCopy)
-               v.Type = cap.Type
-               v.AddArg(cap)
+               v.copyOf(cap)
                return true
        }
        return false
@@ -242,9 +232,7 @@ func rewriteValuedec_OpSliceLen(v *Value) bool {
                }
                _ = v_0.Args[2]
                len := v_0.Args[1]
-               v.reset(OpCopy)
-               v.Type = len.Type
-               v.AddArg(len)
+               v.copyOf(len)
                return true
        }
        return false
@@ -259,9 +247,7 @@ func rewriteValuedec_OpSlicePtr(v *Value) bool {
                }
                _ = v_0.Args[2]
                ptr := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = ptr.Type
-               v.AddArg(ptr)
+               v.copyOf(ptr)
                return true
        }
        return false
@@ -406,9 +392,7 @@ func rewriteValuedec_OpStringLen(v *Value) bool {
                        break
                }
                len := v_0.Args[1]
-               v.reset(OpCopy)
-               v.Type = len.Type
-               v.AddArg(len)
+               v.copyOf(len)
                return true
        }
        return false
@@ -423,9 +407,7 @@ func rewriteValuedec_OpStringPtr(v *Value) bool {
                }
                _ = v_0.Args[1]
                ptr := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = ptr.Type
-               v.AddArg(ptr)
+               v.copyOf(ptr)
                return true
        }
        return false
index 3beaf8e99fa3af4072a00d42fc841f593f14e4fd..08a045ccac47f9bd979cd94faa8fdfb1229e1a7d 100644 (file)
@@ -441,9 +441,7 @@ func rewriteValuedec64_OpInt64Hi(v *Value) bool {
                }
                _ = v_0.Args[1]
                hi := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = hi.Type
-               v.AddArg(hi)
+               v.copyOf(hi)
                return true
        }
        return false
@@ -457,9 +455,7 @@ func rewriteValuedec64_OpInt64Lo(v *Value) bool {
                        break
                }
                lo := v_0.Args[1]
-               v.reset(OpCopy)
-               v.Type = lo.Type
-               v.AddArg(lo)
+               v.copyOf(lo)
                return true
        }
        return false
@@ -2174,9 +2170,7 @@ func rewriteValuedec64_OpTrunc64to32(v *Value) bool {
                        break
                }
                lo := v_0.Args[1]
-               v.reset(OpCopy)
-               v.Type = lo.Type
-               v.AddArg(lo)
+               v.copyOf(lo)
                return true
        }
        return false
index 5a9dd7ed5b9bf5fb786813c3f56433f586f49737..0089df46b9f6abc06466d483cfc9e223579bed54 100644 (file)
@@ -508,9 +508,7 @@ func rewriteValuegeneric_OpAdd16(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -763,9 +761,7 @@ func rewriteValuegeneric_OpAdd32(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -1041,9 +1037,7 @@ func rewriteValuegeneric_OpAdd64(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -1319,9 +1313,7 @@ func rewriteValuegeneric_OpAdd8(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -1627,9 +1619,7 @@ func rewriteValuegeneric_OpAnd16(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (And16 (Const16 [-1]) x)
@@ -1640,9 +1630,7 @@ func rewriteValuegeneric_OpAnd16(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -1829,9 +1817,7 @@ func rewriteValuegeneric_OpAnd32(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (And32 (Const32 [-1]) x)
@@ -1842,9 +1828,7 @@ func rewriteValuegeneric_OpAnd32(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -2031,9 +2015,7 @@ func rewriteValuegeneric_OpAnd64(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (And64 (Const64 [-1]) x)
@@ -2044,9 +2026,7 @@ func rewriteValuegeneric_OpAnd64(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -2233,9 +2213,7 @@ func rewriteValuegeneric_OpAnd8(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (And8 (Const8 [-1]) x)
@@ -2246,9 +2224,7 @@ func rewriteValuegeneric_OpAnd8(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -2361,9 +2337,7 @@ func rewriteValuegeneric_OpArraySelect(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (ArraySelect [0] (IData x))
@@ -2388,9 +2362,7 @@ func rewriteValuegeneric_OpCom16(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Com16 (Const16 [c]))
@@ -2435,9 +2407,7 @@ func rewriteValuegeneric_OpCom32(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Com32 (Const32 [c]))
@@ -2482,9 +2452,7 @@ func rewriteValuegeneric_OpCom64(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Com64 (Const64 [c]))
@@ -2529,9 +2497,7 @@ func rewriteValuegeneric_OpCom8(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Com8 (Const8 [c]))
@@ -2755,9 +2721,7 @@ func rewriteValuegeneric_OpConvert(v *Value) bool {
                if mem != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = ptr.Type
-               v.AddArg(ptr)
+               v.copyOf(ptr)
                return true
        }
        return false
@@ -6803,9 +6767,7 @@ func rewriteValuegeneric_OpEqB(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -8894,9 +8856,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                if !(isSamePtr(p1, p2) && t1.Compare(x.Type) == types.CMPeq && t1.Size() == sizeof(t2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Load <t1> p1 (Store {t2} p2 _ (Store {t3} p3 x _)))
@@ -8922,9 +8882,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                if !(isSamePtr(p1, p3) && t1.Compare(x.Type) == types.CMPeq && t1.Size() == sizeof(t2) && disjoint(p3, sizeof(t3), p2, sizeof(t2))) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Load <t1> p1 (Store {t2} p2 _ (Store {t3} p3 _ (Store {t4} p4 x _))))
@@ -8957,9 +8915,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                if !(isSamePtr(p1, p4) && t1.Compare(x.Type) == types.CMPeq && t1.Size() == sizeof(t2) && disjoint(p4, sizeof(t4), p2, sizeof(t2)) && disjoint(p4, sizeof(t4), p3, sizeof(t3))) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Load <t1> p1 (Store {t2} p2 _ (Store {t3} p3 _ (Store {t4} p4 _ (Store {t5} p5 x _)))))
@@ -8999,9 +8955,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                if !(isSamePtr(p1, p5) && t1.Compare(x.Type) == types.CMPeq && t1.Size() == sizeof(t2) && disjoint(p5, sizeof(t5), p2, sizeof(t2)) && disjoint(p5, sizeof(t5), p3, sizeof(t3)) && disjoint(p5, sizeof(t5), p4, sizeof(t4))) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Load <t1> p1 (Store {t2} p2 (Const64 [x]) _))
@@ -9129,8 +9083,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                }
                b = mem.Block
                v0 := b.NewValue0(v.Pos, OpLoad, t1)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, op.Type)
                v1.AuxInt = o1
                v1.AddArg(p3)
@@ -9173,8 +9126,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                }
                b = mem.Block
                v0 := b.NewValue0(v.Pos, OpLoad, t1)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, op.Type)
                v1.AuxInt = o1
                v1.AddArg(p4)
@@ -9224,8 +9176,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                }
                b = mem.Block
                v0 := b.NewValue0(v.Pos, OpLoad, t1)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, op.Type)
                v1.AuxInt = o1
                v1.AddArg(p5)
@@ -9282,8 +9233,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                }
                b = mem.Block
                v0 := b.NewValue0(v.Pos, OpLoad, t1)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, op.Type)
                v1.AuxInt = o1
                v1.AddArg(p6)
@@ -9686,9 +9636,7 @@ func rewriteValuegeneric_OpLsh16x64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Lsh16x64 (Const16 [0]) _)
@@ -9903,9 +9851,7 @@ func rewriteValuegeneric_OpLsh32x64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Lsh32x64 (Const32 [0]) _)
@@ -10120,9 +10066,7 @@ func rewriteValuegeneric_OpLsh64x64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Lsh64x64 (Const64 [0]) _)
@@ -10337,9 +10281,7 @@ func rewriteValuegeneric_OpLsh8x64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Lsh8x64 (Const8 [0]) _)
@@ -10831,9 +10773,7 @@ func rewriteValuegeneric_OpMod64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != -1<<63 || !(isNonNegative(n)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = n.Type
-               v.AddArg(n)
+               v.copyOf(n)
                return true
        }
        // match: (Mod64 <t> n (Const64 [c]))
@@ -12451,9 +12391,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                if !(isSamePtr(dst, src)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        return false
@@ -12489,9 +12427,7 @@ func rewriteValuegeneric_OpMul16(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -12633,9 +12569,7 @@ func rewriteValuegeneric_OpMul32(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -12809,9 +12743,7 @@ func rewriteValuegeneric_OpMul32F(v *Value) bool {
                        if v_1.Op != OpConst32F || v_1.AuxInt != auxFrom64F(1) {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -12877,9 +12809,7 @@ func rewriteValuegeneric_OpMul64(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -13053,9 +12983,7 @@ func rewriteValuegeneric_OpMul64F(v *Value) bool {
                        if v_1.Op != OpConst64F || v_1.AuxInt != auxFrom64F(1) {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -13121,9 +13049,7 @@ func rewriteValuegeneric_OpMul8(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -13267,9 +13193,7 @@ func rewriteValuegeneric_OpNeg16(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Neg16 <t> (Com16 x))
@@ -13321,9 +13245,7 @@ func rewriteValuegeneric_OpNeg32(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Neg32 <t> (Com32 x))
@@ -13394,9 +13316,7 @@ func rewriteValuegeneric_OpNeg64(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Neg64 <t> (Com64 x))
@@ -13467,9 +13387,7 @@ func rewriteValuegeneric_OpNeg8(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Neg8 <t> (Com8 x))
@@ -14311,9 +14229,7 @@ func rewriteValuegeneric_OpNeqB(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -14792,9 +14708,7 @@ func rewriteValuegeneric_OpNilCheck(v *Value) bool {
                if mem != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (NilCheck (Load (OffPtr [c] (SP)) (StaticCall {sym} _)) _)
@@ -15285,9 +15199,7 @@ func rewriteValuegeneric_OpOffPtr(v *Value) bool {
                if !(v.Type.Compare(p.Type) == types.CMPeq) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = p.Type
-               v.AddArg(p)
+               v.copyOf(p)
                return true
        }
        return false
@@ -15321,9 +15233,7 @@ func rewriteValuegeneric_OpOr16(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Or16 (Const16 [0]) x)
@@ -15334,9 +15244,7 @@ func rewriteValuegeneric_OpOr16(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -15503,9 +15411,7 @@ func rewriteValuegeneric_OpOr32(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Or32 (Const32 [0]) x)
@@ -15516,9 +15422,7 @@ func rewriteValuegeneric_OpOr32(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -15685,9 +15589,7 @@ func rewriteValuegeneric_OpOr64(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Or64 (Const64 [0]) x)
@@ -15698,9 +15600,7 @@ func rewriteValuegeneric_OpOr64(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -15867,9 +15767,7 @@ func rewriteValuegeneric_OpOr8(v *Value) bool {
                if x != v_1 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Or8 (Const8 [0]) x)
@@ -15880,9 +15778,7 @@ func rewriteValuegeneric_OpOr8(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -16150,9 +16046,7 @@ func rewriteValuegeneric_OpRotateLeft16(v *Value) bool {
                if !(c%16 == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -16172,9 +16066,7 @@ func rewriteValuegeneric_OpRotateLeft32(v *Value) bool {
                if !(c%32 == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -16194,9 +16086,7 @@ func rewriteValuegeneric_OpRotateLeft64(v *Value) bool {
                if !(c%64 == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -16216,9 +16106,7 @@ func rewriteValuegeneric_OpRotateLeft8(v *Value) bool {
                if !(c%8 == 0) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -16232,9 +16120,7 @@ func rewriteValuegeneric_OpRound32F(v *Value) bool {
                if x.Op != OpConst32F {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -16248,9 +16134,7 @@ func rewriteValuegeneric_OpRound64F(v *Value) bool {
                if x.Op != OpConst64F {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -16344,9 +16228,7 @@ func rewriteValuegeneric_OpRsh16Ux64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Rsh16Ux64 (Const16 [0]) _)
@@ -16600,9 +16482,7 @@ func rewriteValuegeneric_OpRsh16x64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Rsh16x64 (Const16 [0]) _)
@@ -16783,9 +16663,7 @@ func rewriteValuegeneric_OpRsh32Ux64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Rsh32Ux64 (Const32 [0]) _)
@@ -17057,9 +16935,7 @@ func rewriteValuegeneric_OpRsh32x64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Rsh32x64 (Const32 [0]) _)
@@ -17258,9 +17134,7 @@ func rewriteValuegeneric_OpRsh64Ux64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Rsh64Ux64 (Const64 [0]) _)
@@ -17550,9 +17424,7 @@ func rewriteValuegeneric_OpRsh64x64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Rsh64x64 (Const64 [0]) _)
@@ -17769,9 +17641,7 @@ func rewriteValuegeneric_OpRsh8Ux64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Rsh8Ux64 (Const8 [0]) _)
@@ -18006,9 +17876,7 @@ func rewriteValuegeneric_OpRsh8x64(v *Value) bool {
                if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Rsh8x64 (Const8 [0]) _)
@@ -18155,9 +18023,7 @@ func rewriteValuegeneric_OpSignExt16to32(v *Value) bool {
                if !(s >= 16) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -18195,9 +18061,7 @@ func rewriteValuegeneric_OpSignExt16to64(v *Value) bool {
                if !(s >= 48) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -18235,9 +18099,7 @@ func rewriteValuegeneric_OpSignExt32to64(v *Value) bool {
                if !(s >= 32) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -18275,9 +18137,7 @@ func rewriteValuegeneric_OpSignExt8to16(v *Value) bool {
                if !(s >= 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -18315,9 +18175,7 @@ func rewriteValuegeneric_OpSignExt8to32(v *Value) bool {
                if !(s >= 24) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -18355,9 +18213,7 @@ func rewriteValuegeneric_OpSignExt8to64(v *Value) bool {
                if !(s >= 56) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -18666,9 +18522,7 @@ func rewriteValuegeneric_OpStaticCall(v *Value) bool {
                if !(needRaceCleanup(sym, v)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -18695,9 +18549,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                if mem != v_2 || !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store {t1} p1 (Load <t2> p2 oldmem) mem:(Store {t3} p3 _ oldmem))
@@ -18722,9 +18574,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                if oldmem != mem.Args[2] || !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1) && disjoint(p1, sizeof(t1), p3, sizeof(t3))) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store {t1} p1 (Load <t2> p2 oldmem) mem:(Store {t3} p3 _ (Store {t4} p4 _ oldmem)))
@@ -18756,9 +18606,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                if oldmem != mem_2.Args[2] || !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1) && disjoint(p1, sizeof(t1), p3, sizeof(t3)) && disjoint(p1, sizeof(t1), p4, sizeof(t4))) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store {t1} p1 (Load <t2> p2 oldmem) mem:(Store {t3} p3 _ (Store {t4} p4 _ (Store {t5} p5 _ oldmem))))
@@ -18797,9 +18645,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                if oldmem != mem_2_2.Args[2] || !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1) && disjoint(p1, sizeof(t1), p3, sizeof(t3)) && disjoint(p1, sizeof(t1), p4, sizeof(t4)) && disjoint(p1, sizeof(t1), p5, sizeof(t5))) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store {t} (OffPtr [o] p1) x mem:(Zero [n] p2 _))
@@ -18823,9 +18669,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                if !(isConstZero(x) && o >= 0 && sizeof(t)+o <= n && isSamePtr(p1, p2)) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store {t1} op:(OffPtr [o1] p1) x mem:(Store {t2} p2 _ (Zero [n] p3 _)))
@@ -18857,9 +18701,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                if !(isConstZero(x) && o1 >= 0 && sizeof(t1)+o1 <= n && isSamePtr(p1, p3) && disjoint(op, sizeof(t1), p2, sizeof(t2))) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store {t1} op:(OffPtr [o1] p1) x mem:(Store {t2} p2 _ (Store {t3} p3 _ (Zero [n] p4 _))))
@@ -18898,9 +18740,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                if !(isConstZero(x) && o1 >= 0 && sizeof(t1)+o1 <= n && isSamePtr(p1, p4) && disjoint(op, sizeof(t1), p2, sizeof(t2)) && disjoint(op, sizeof(t1), p3, sizeof(t3))) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store {t1} op:(OffPtr [o1] p1) x mem:(Store {t2} p2 _ (Store {t3} p3 _ (Store {t4} p4 _ (Zero [n] p5 _)))))
@@ -18946,9 +18786,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                if !(isConstZero(x) && o1 >= 0 && sizeof(t1)+o1 <= n && isSamePtr(p1, p5) && disjoint(op, sizeof(t1), p2, sizeof(t2)) && disjoint(op, sizeof(t1), p3, sizeof(t3)) && disjoint(op, sizeof(t1), p4, sizeof(t4))) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store _ (StructMake0) mem)
@@ -18958,9 +18796,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store dst (StructMake1 <t> f0) mem)
@@ -19131,9 +18967,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                        break
                }
                mem := v_2
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store dst (ArrayMake1 e) mem)
@@ -19171,9 +19005,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                if mem != v_2 || !(isConstZero(x) && mem.Op == OpStaticCall && isSameSym(mem.Aux, "runtime.newobject") && c == config.ctxt.FixedFrameSize()+config.RegSize) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store (OffPtr (Load (OffPtr [c] (SP)) mem)) x mem)
@@ -19201,9 +19033,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                if mem != v_2 || !(isConstZero(x) && mem.Op == OpStaticCall && isSameSym(mem.Aux, "runtime.newobject") && c == config.ctxt.FixedFrameSize()+config.RegSize) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Store {t1} op1:(OffPtr [o1] p1) d1 m2:(Store {t2} op2:(OffPtr [0] p2) d2 m3:(Move [n] p3 _ mem)))
@@ -19613,9 +19443,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (StructSelect [0] (StructMake2 x _))
@@ -19626,9 +19454,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                }
                _ = v_0.Args[1]
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (StructSelect [1] (StructMake2 _ x))
@@ -19638,9 +19464,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                        break
                }
                x := v_0.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (StructSelect [0] (StructMake3 x _ _))
@@ -19651,9 +19475,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                }
                _ = v_0.Args[2]
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (StructSelect [1] (StructMake3 _ x _))
@@ -19664,9 +19486,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                }
                _ = v_0.Args[2]
                x := v_0.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (StructSelect [2] (StructMake3 _ _ x))
@@ -19676,9 +19496,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                        break
                }
                x := v_0.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (StructSelect [0] (StructMake4 x _ _ _))
@@ -19689,9 +19507,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                }
                _ = v_0.Args[3]
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (StructSelect [1] (StructMake4 _ x _ _))
@@ -19702,9 +19518,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                }
                _ = v_0.Args[3]
                x := v_0.Args[1]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (StructSelect [2] (StructMake4 _ _ x _))
@@ -19715,9 +19529,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                }
                _ = v_0.Args[3]
                x := v_0.Args[2]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (StructSelect [3] (StructMake4 _ _ _ x))
@@ -19727,9 +19539,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                        break
                }
                x := v_0.Args[3]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (StructSelect [i] x:(Load <t> ptr mem))
@@ -19749,8 +19559,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                }
                b = x.Block
                v0 := b.NewValue0(v.Pos, OpLoad, v.Type)
-               v.reset(OpCopy)
-               v.AddArg(v0)
+               v.copyOf(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, v.Type.PtrTo())
                v1.AuxInt = t.FieldOff(int(i))
                v1.AddArg(ptr)
@@ -19867,9 +19676,7 @@ func rewriteValuegeneric_OpSub16(v *Value) bool {
                        if x != v_1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = y.Type
-                       v.AddArg(y)
+                       v.copyOf(y)
                        return true
                }
                break
@@ -19889,9 +19696,7 @@ func rewriteValuegeneric_OpSub16(v *Value) bool {
                        if y != v_1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -20089,9 +19894,7 @@ func rewriteValuegeneric_OpSub32(v *Value) bool {
                        if x != v_1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = y.Type
-                       v.AddArg(y)
+                       v.copyOf(y)
                        return true
                }
                break
@@ -20111,9 +19914,7 @@ func rewriteValuegeneric_OpSub32(v *Value) bool {
                        if y != v_1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -20331,9 +20132,7 @@ func rewriteValuegeneric_OpSub64(v *Value) bool {
                        if x != v_1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = y.Type
-                       v.AddArg(y)
+                       v.copyOf(y)
                        return true
                }
                break
@@ -20353,9 +20152,7 @@ func rewriteValuegeneric_OpSub64(v *Value) bool {
                        if y != v_1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -20573,9 +20370,7 @@ func rewriteValuegeneric_OpSub8(v *Value) bool {
                        if x != v_1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = y.Type
-                       v.AddArg(y)
+                       v.copyOf(y)
                        return true
                }
                break
@@ -20595,9 +20390,7 @@ func rewriteValuegeneric_OpSub8(v *Value) bool {
                        if y != v_1 {
                                continue
                        }
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -20718,9 +20511,7 @@ func rewriteValuegeneric_OpTrunc16to8(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc16to8 (SignExt8to16 x))
@@ -20730,9 +20521,7 @@ func rewriteValuegeneric_OpTrunc16to8(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc16to8 (And16 (Const16 [y]) x))
@@ -20793,9 +20582,7 @@ func rewriteValuegeneric_OpTrunc32to16(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc32to16 (SignExt8to32 x))
@@ -20816,9 +20603,7 @@ func rewriteValuegeneric_OpTrunc32to16(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc32to16 (And32 (Const32 [y]) x))
@@ -20868,9 +20653,7 @@ func rewriteValuegeneric_OpTrunc32to8(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc32to8 (SignExt8to32 x))
@@ -20880,9 +20663,7 @@ func rewriteValuegeneric_OpTrunc32to8(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc32to8 (And32 (Const32 [y]) x))
@@ -20943,9 +20724,7 @@ func rewriteValuegeneric_OpTrunc64to16(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc64to16 (SignExt8to64 x))
@@ -20966,9 +20745,7 @@ func rewriteValuegeneric_OpTrunc64to16(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc64to16 (And64 (Const64 [y]) x))
@@ -21040,9 +20817,7 @@ func rewriteValuegeneric_OpTrunc64to32(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc64to32 (SignExt8to64 x))
@@ -21074,9 +20849,7 @@ func rewriteValuegeneric_OpTrunc64to32(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc64to32 (And64 (Const64 [y]) x))
@@ -21126,9 +20899,7 @@ func rewriteValuegeneric_OpTrunc64to8(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc64to8 (SignExt8to64 x))
@@ -21138,9 +20909,7 @@ func rewriteValuegeneric_OpTrunc64to8(v *Value) bool {
                        break
                }
                x := v_0.Args[0]
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        // match: (Trunc64to8 (And64 (Const64 [y]) x))
@@ -21211,9 +20980,7 @@ func rewriteValuegeneric_OpXor16(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -21234,9 +21001,7 @@ func rewriteValuegeneric_OpXor16(v *Value) bool {
                                        continue
                                }
                                y := v_1_1
-                               v.reset(OpCopy)
-                               v.Type = y.Type
-                               v.AddArg(y)
+                               v.copyOf(y)
                                return true
                        }
                }
@@ -21346,9 +21111,7 @@ func rewriteValuegeneric_OpXor32(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -21369,9 +21132,7 @@ func rewriteValuegeneric_OpXor32(v *Value) bool {
                                        continue
                                }
                                y := v_1_1
-                               v.reset(OpCopy)
-                               v.Type = y.Type
-                               v.AddArg(y)
+                               v.copyOf(y)
                                return true
                        }
                }
@@ -21481,9 +21242,7 @@ func rewriteValuegeneric_OpXor64(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -21504,9 +21263,7 @@ func rewriteValuegeneric_OpXor64(v *Value) bool {
                                        continue
                                }
                                y := v_1_1
-                               v.reset(OpCopy)
-                               v.Type = y.Type
-                               v.AddArg(y)
+                               v.copyOf(y)
                                return true
                        }
                }
@@ -21616,9 +21373,7 @@ func rewriteValuegeneric_OpXor8(v *Value) bool {
                                continue
                        }
                        x := v_1
-                       v.reset(OpCopy)
-                       v.Type = x.Type
-                       v.AddArg(x)
+                       v.copyOf(x)
                        return true
                }
                break
@@ -21639,9 +21394,7 @@ func rewriteValuegeneric_OpXor8(v *Value) bool {
                                        continue
                                }
                                y := v_1_1
-                               v.reset(OpCopy)
-                               v.Type = y.Type
-                               v.AddArg(y)
+                               v.copyOf(y)
                                return true
                        }
                }
@@ -21732,9 +21485,7 @@ func rewriteValuegeneric_OpZero(v *Value) bool {
                if v_0_0_0.Op != OpSP || mem != v_1 || !(mem.Op == OpStaticCall && isSameSym(mem.Aux, "runtime.newobject") && c == config.ctxt.FixedFrameSize()+config.RegSize) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = mem.Type
-               v.AddArg(mem)
+               v.copyOf(mem)
                return true
        }
        // match: (Zero {t1} [n] p1 store:(Store {t2} (OffPtr [o2] p2) _ mem))
@@ -21852,9 +21603,7 @@ func rewriteValuegeneric_OpZeroExt16to32(v *Value) bool {
                if !(s >= 16) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -21892,9 +21641,7 @@ func rewriteValuegeneric_OpZeroExt16to64(v *Value) bool {
                if !(s >= 48) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -21932,9 +21679,7 @@ func rewriteValuegeneric_OpZeroExt32to64(v *Value) bool {
                if !(s >= 32) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -21972,9 +21717,7 @@ func rewriteValuegeneric_OpZeroExt8to16(v *Value) bool {
                if !(s >= 8) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -22012,9 +21755,7 @@ func rewriteValuegeneric_OpZeroExt8to32(v *Value) bool {
                if !(s >= 24) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
@@ -22052,9 +21793,7 @@ func rewriteValuegeneric_OpZeroExt8to64(v *Value) bool {
                if !(s >= 56) {
                        break
                }
-               v.reset(OpCopy)
-               v.Type = x.Type
-               v.AddArg(x)
+               v.copyOf(x)
                return true
        }
        return false
index 8c5834d530a1e8eea40bbfa2fcd72ac97f5fa52a..e5246779fcec302875fd5430c091fc1c001a5645 100644 (file)
@@ -310,17 +310,29 @@ func (v *Value) resetArgs() {
        v.Args = v.argstorage[:0]
 }
 
+// reset is called from most rewrite rules.
+// Allowing it to be inlined increases the size
+// of cmd/compile by almost 10%, and slows it down.
+//go:noinline
 func (v *Value) reset(op Op) {
        v.Op = op
-       if op != OpCopy && notStmtBoundary(op) {
-               // Special case for OpCopy because of how it is used in rewrite
-               v.Pos = v.Pos.WithNotStmt()
-       }
        v.resetArgs()
        v.AuxInt = 0
        v.Aux = nil
 }
 
+// copyOf is called from rewrite rules.
+// It modifies v to be (Copy a).
+//go:noinline
+func (v *Value) copyOf(a *Value) {
+       v.Op = OpCopy
+       v.resetArgs()
+       v.AddArg(a)
+       v.AuxInt = 0
+       v.Aux = nil
+       v.Type = a.Type
+}
+
 // copyInto makes a new value identical to v and adds it to the end of b.
 // unlike copyIntoWithXPos this does not check for v.Pos being a statement.
 func (v *Value) copyInto(b *Block) *Value {
index d246fb333c89fcc9dc0d32261f85b6bb73b58479..cebfbb8c9d341b6f4555765b7cd23bbad61eabaa 100644 (file)
@@ -347,6 +347,7 @@ func writebarrier(f *Func) {
                bEnd.Values = append(bEnd.Values, last)
                last.Block = bEnd
                last.reset(OpPhi)
+               last.Pos = last.Pos.WithNotStmt()
                last.Type = types.TypeMem
                last.AddArg(memThen)
                last.AddArg(memElse)