]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: add specialized AddArgN functions for rewrite rules
authorJosh Bleecher Snyder <josharian@gmail.com>
Wed, 26 Feb 2020 19:29:34 +0000 (11:29 -0800)
committerJosh Bleecher Snyder <josharian@gmail.com>
Sun, 1 Mar 2020 15:27:58 +0000 (15:27 +0000)
This shrinks the compiler without impacting performance.
(The performance-sensitive part of rewrite rules is the non-match case.)
Passes toolstash-check -all.

Executable size:

file    before    after     Δ       %
compile 20356168  20163960  -192208 -0.944%
total   115599376 115407168 -192208 -0.166%

Text size:

file                       before   after    Δ       %
cmd/compile/internal/ssa.s 3928309  3778774  -149535 -3.807%
total                      18862943 18713408 -149535 -0.793%

Memory allocated compiling package SSA:

SSA               12.7M ± 0%        12.5M ± 0%  -1.74%  (p=0.008 n=5+5)

Compiler speed impact:

name        old time/op       new time/op       delta
Template          211ms ± 1%        211ms ± 2%    ~     (p=0.832 n=49+49)
Unicode          82.8ms ± 2%       83.2ms ± 2%  +0.44%  (p=0.022 n=46+49)
GoTypes           726ms ± 1%        728ms ± 2%    ~     (p=0.076 n=46+48)
Compiler          3.39s ± 2%        3.40s ± 2%    ~     (p=0.633 n=48+49)
SSA               7.71s ± 1%        7.65s ± 1%  -0.78%  (p=0.000 n=45+44)
Flate             134ms ± 1%        134ms ± 1%    ~     (p=0.195 n=50+49)
GoParser          167ms ± 1%        167ms ± 1%    ~     (p=0.390 n=47+47)
Reflect           453ms ± 3%        452ms ± 2%    ~     (p=0.492 n=48+49)
Tar               184ms ± 3%        184ms ± 2%    ~     (p=0.862 n=50+48)
XML               248ms ± 2%        248ms ± 2%    ~     (p=0.096 n=49+47)
[Geo mean]        415ms             415ms       -0.03%

name        old user-time/op  new user-time/op  delta
Template          273ms ± 1%        273ms ± 2%    ~     (p=0.711 n=48+48)
Unicode           117ms ± 6%        117ms ± 5%    ~     (p=0.633 n=50+50)
GoTypes           972ms ± 2%        974ms ± 1%  +0.29%  (p=0.016 n=47+49)
Compiler          4.46s ± 6%        4.51s ± 6%    ~     (p=0.093 n=50+50)
SSA               10.4s ± 1%        10.3s ± 2%  -0.94%  (p=0.000 n=45+50)
Flate             166ms ± 2%        167ms ± 2%    ~     (p=0.148 n=49+48)
GoParser          202ms ± 1%        202ms ± 2%  -0.28%  (p=0.014 n=47+49)
Reflect           594ms ± 2%        594ms ± 2%    ~     (p=0.717 n=48+49)
Tar               224ms ± 2%        224ms ± 2%    ~     (p=0.805 n=50+49)
XML               311ms ± 1%        310ms ± 1%    ~     (p=0.177 n=49+48)
[Geo mean]        537ms             537ms       +0.01%

Change-Id: I562b9f349b34ddcff01771769e6dbbc80604da7a
Reviewed-on: https://go-review.googlesource.com/c/go/+/221237
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
18 files changed:
src/cmd/compile/internal/ssa/gen/rulegen.go
src/cmd/compile/internal/ssa/rewrite386.go
src/cmd/compile/internal/ssa/rewrite386splitload.go
src/cmd/compile/internal/ssa/rewriteAMD64.go
src/cmd/compile/internal/ssa/rewriteAMD64splitload.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/rewritedecArgs.go
src/cmd/compile/internal/ssa/rewritegeneric.go
src/cmd/compile/internal/ssa/value.go

index 2a10f2fa2513ba33accc2fe2d3f81f295bee00f6..0fba0546e74e7788512a511995801ae1e10d6d0c 100644 (file)
@@ -1134,11 +1134,21 @@ func genResult0(rr *RuleRewrite, arch arch, result string, top, move bool, pos s
        if aux != "" {
                rr.add(stmtf("%s.Aux = %s", v, aux))
        }
-       for _, arg := range args {
+       all := new(strings.Builder)
+       for i, arg := range args {
                x := genResult0(rr, arch, arg, false, move, pos)
-               rr.add(stmtf("%s.AddArg(%s)", v, x))
+               if i > 0 {
+                       all.WriteString(", ")
+               }
+               all.WriteString(x)
+       }
+       switch len(args) {
+       case 0:
+       case 1:
+               rr.add(stmtf("%s.AddArg(%s)", v, all.String()))
+       default:
+               rr.add(stmtf("%s.AddArg%d(%s)", v, len(args), all.String()))
        }
-
        return v
 }
 
index 4efb2d4f7422daad12e434fe39d8520c82862b43..7a75b7121f76e9f640a426f92e67530b0ac5c07e 100644 (file)
@@ -791,8 +791,7 @@ func rewriteValue386_Op386ADCL(v *Value) bool {
                        f := v_2
                        v.reset(Op386ADCLconst)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(f)
+                       v.AddArg2(x, f)
                        return true
                }
                break
@@ -902,8 +901,7 @@ func rewriteValue386_Op386ADDL(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(Op386LEAL8)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -918,8 +916,7 @@ func rewriteValue386_Op386ADDL(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(Op386LEAL4)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -934,8 +931,7 @@ func rewriteValue386_Op386ADDL(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(Op386LEAL2)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -953,8 +949,7 @@ func rewriteValue386_Op386ADDL(v *Value) bool {
                                continue
                        }
                        v.reset(Op386LEAL2)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -976,8 +971,7 @@ func rewriteValue386_Op386ADDL(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(Op386LEAL2)
-                               v.AddArg(y)
-                               v.AddArg(x)
+                               v.AddArg2(y, x)
                                return true
                        }
                }
@@ -995,8 +989,7 @@ func rewriteValue386_Op386ADDL(v *Value) bool {
                        y := v_1
                        v.reset(Op386LEAL1)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1019,8 +1012,7 @@ func rewriteValue386_Op386ADDL(v *Value) bool {
                        v.reset(Op386LEAL1)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1045,9 +1037,7 @@ func rewriteValue386_Op386ADDL(v *Value) bool {
                        v.reset(Op386ADDLload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -1073,10 +1063,7 @@ func rewriteValue386_Op386ADDL(v *Value) bool {
                        v.reset(Op386ADDLloadidx4)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg4(x, ptr, idx, mem)
                        return true
                }
                break
@@ -1091,8 +1078,7 @@ func rewriteValue386_Op386ADDL(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(Op386SUBL)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1133,8 +1119,7 @@ func rewriteValue386_Op386ADDLconst(v *Value) bool {
                x := v_0.Args[0]
                v.reset(Op386LEAL1)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDLconst [c] (LEAL [d] {s} x))
@@ -1175,8 +1160,7 @@ func rewriteValue386_Op386ADDLconst(v *Value) bool {
                v.reset(Op386LEAL1)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDLconst [c] (LEAL2 [d] {s} x y))
@@ -1197,8 +1181,7 @@ func rewriteValue386_Op386ADDLconst(v *Value) bool {
                v.reset(Op386LEAL2)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDLconst [c] (LEAL4 [d] {s} x y))
@@ -1219,8 +1202,7 @@ func rewriteValue386_Op386ADDLconst(v *Value) bool {
                v.reset(Op386LEAL4)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDLconst [c] (LEAL8 [d] {s} x y))
@@ -1241,8 +1223,7 @@ func rewriteValue386_Op386ADDLconst(v *Value) bool {
                v.reset(Op386LEAL8)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDLconst [c] x)
@@ -1310,8 +1291,7 @@ func rewriteValue386_Op386ADDLconstmodify(v *Value) bool {
                v.reset(Op386ADDLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (ADDLconstmodify [valoff1] {sym1} (LEAL [off2] {sym2} base) mem)
@@ -1333,8 +1313,7 @@ func rewriteValue386_Op386ADDLconstmodify(v *Value) bool {
                v.reset(Op386ADDLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -1364,9 +1343,7 @@ func rewriteValue386_Op386ADDLconstmodifyidx4(v *Value) bool {
                v.reset(Op386ADDLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        // match: (ADDLconstmodifyidx4 [valoff1] {sym} base (ADDLconst [off2] idx) mem)
@@ -1388,9 +1365,7 @@ func rewriteValue386_Op386ADDLconstmodifyidx4(v *Value) bool {
                v.reset(Op386ADDLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2 * 4)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        // match: (ADDLconstmodifyidx4 [valoff1] {sym1} (LEAL [off2] {sym2} base) idx mem)
@@ -1413,9 +1388,7 @@ func rewriteValue386_Op386ADDLconstmodifyidx4(v *Value) bool {
                v.reset(Op386ADDLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        return false
@@ -1445,9 +1418,7 @@ func rewriteValue386_Op386ADDLload(v *Value) bool {
                v.reset(Op386ADDLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDLload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -1470,9 +1441,7 @@ func rewriteValue386_Op386ADDLload(v *Value) bool {
                v.reset(Op386ADDLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDLload [off1] {sym1} val (LEAL4 [off2] {sym2} ptr idx) mem)
@@ -1496,10 +1465,7 @@ func rewriteValue386_Op386ADDLload(v *Value) bool {
                v.reset(Op386ADDLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, ptr, idx, mem)
                return true
        }
        return false
@@ -1531,10 +1497,7 @@ func rewriteValue386_Op386ADDLloadidx4(v *Value) bool {
                v.reset(Op386ADDLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (ADDLloadidx4 [off1] {sym} val base (ADDLconst [off2] idx) mem)
@@ -1557,10 +1520,7 @@ func rewriteValue386_Op386ADDLloadidx4(v *Value) bool {
                v.reset(Op386ADDLloadidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (ADDLloadidx4 [off1] {sym1} val (LEAL [off2] {sym2} base) idx mem)
@@ -1584,10 +1544,7 @@ func rewriteValue386_Op386ADDLloadidx4(v *Value) bool {
                v.reset(Op386ADDLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        return false
@@ -1617,9 +1574,7 @@ func rewriteValue386_Op386ADDLmodify(v *Value) bool {
                v.reset(Op386ADDLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (ADDLmodify [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -1642,9 +1597,7 @@ func rewriteValue386_Op386ADDLmodify(v *Value) bool {
                v.reset(Op386ADDLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -1676,10 +1629,7 @@ func rewriteValue386_Op386ADDLmodifyidx4(v *Value) bool {
                v.reset(Op386ADDLmodifyidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (ADDLmodifyidx4 [off1] {sym} base (ADDLconst [off2] idx) val mem)
@@ -1702,10 +1652,7 @@ func rewriteValue386_Op386ADDLmodifyidx4(v *Value) bool {
                v.reset(Op386ADDLmodifyidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (ADDLmodifyidx4 [off1] {sym1} (LEAL [off2] {sym2} base) idx val mem)
@@ -1729,10 +1676,7 @@ func rewriteValue386_Op386ADDLmodifyidx4(v *Value) bool {
                v.reset(Op386ADDLmodifyidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (ADDLmodifyidx4 [off] {sym} ptr idx (MOVLconst [c]) mem)
@@ -1754,9 +1698,7 @@ func rewriteValue386_Op386ADDLmodifyidx4(v *Value) bool {
                v.reset(Op386ADDLconstmodifyidx4)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -1786,9 +1728,7 @@ func rewriteValue386_Op386ADDSD(v *Value) bool {
                        v.reset(Op386ADDSDload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -1820,9 +1760,7 @@ func rewriteValue386_Op386ADDSDload(v *Value) bool {
                v.reset(Op386ADDSDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDSDload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -1845,9 +1783,7 @@ func rewriteValue386_Op386ADDSDload(v *Value) bool {
                v.reset(Op386ADDSDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        return false
@@ -1877,9 +1813,7 @@ func rewriteValue386_Op386ADDSS(v *Value) bool {
                        v.reset(Op386ADDSSload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -1911,9 +1845,7 @@ func rewriteValue386_Op386ADDSSload(v *Value) bool {
                v.reset(Op386ADDSSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDSSload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -1936,9 +1868,7 @@ func rewriteValue386_Op386ADDSSload(v *Value) bool {
                v.reset(Op386ADDSSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        return false
@@ -1982,9 +1912,7 @@ func rewriteValue386_Op386ANDL(v *Value) bool {
                        v.reset(Op386ANDLload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -2010,10 +1938,7 @@ func rewriteValue386_Op386ANDL(v *Value) bool {
                        v.reset(Op386ANDLloadidx4)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg4(x, ptr, idx, mem)
                        return true
                }
                break
@@ -2111,8 +2036,7 @@ func rewriteValue386_Op386ANDLconstmodify(v *Value) bool {
                v.reset(Op386ANDLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (ANDLconstmodify [valoff1] {sym1} (LEAL [off2] {sym2} base) mem)
@@ -2134,8 +2058,7 @@ func rewriteValue386_Op386ANDLconstmodify(v *Value) bool {
                v.reset(Op386ANDLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -2165,9 +2088,7 @@ func rewriteValue386_Op386ANDLconstmodifyidx4(v *Value) bool {
                v.reset(Op386ANDLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        // match: (ANDLconstmodifyidx4 [valoff1] {sym} base (ADDLconst [off2] idx) mem)
@@ -2189,9 +2110,7 @@ func rewriteValue386_Op386ANDLconstmodifyidx4(v *Value) bool {
                v.reset(Op386ANDLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2 * 4)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        // match: (ANDLconstmodifyidx4 [valoff1] {sym1} (LEAL [off2] {sym2} base) idx mem)
@@ -2214,9 +2133,7 @@ func rewriteValue386_Op386ANDLconstmodifyidx4(v *Value) bool {
                v.reset(Op386ANDLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        return false
@@ -2246,9 +2163,7 @@ func rewriteValue386_Op386ANDLload(v *Value) bool {
                v.reset(Op386ANDLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ANDLload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -2271,9 +2186,7 @@ func rewriteValue386_Op386ANDLload(v *Value) bool {
                v.reset(Op386ANDLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ANDLload [off1] {sym1} val (LEAL4 [off2] {sym2} ptr idx) mem)
@@ -2297,10 +2210,7 @@ func rewriteValue386_Op386ANDLload(v *Value) bool {
                v.reset(Op386ANDLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, ptr, idx, mem)
                return true
        }
        return false
@@ -2332,10 +2242,7 @@ func rewriteValue386_Op386ANDLloadidx4(v *Value) bool {
                v.reset(Op386ANDLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (ANDLloadidx4 [off1] {sym} val base (ADDLconst [off2] idx) mem)
@@ -2358,10 +2265,7 @@ func rewriteValue386_Op386ANDLloadidx4(v *Value) bool {
                v.reset(Op386ANDLloadidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (ANDLloadidx4 [off1] {sym1} val (LEAL [off2] {sym2} base) idx mem)
@@ -2385,10 +2289,7 @@ func rewriteValue386_Op386ANDLloadidx4(v *Value) bool {
                v.reset(Op386ANDLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        return false
@@ -2418,9 +2319,7 @@ func rewriteValue386_Op386ANDLmodify(v *Value) bool {
                v.reset(Op386ANDLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (ANDLmodify [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -2443,9 +2342,7 @@ func rewriteValue386_Op386ANDLmodify(v *Value) bool {
                v.reset(Op386ANDLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -2477,10 +2374,7 @@ func rewriteValue386_Op386ANDLmodifyidx4(v *Value) bool {
                v.reset(Op386ANDLmodifyidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (ANDLmodifyidx4 [off1] {sym} base (ADDLconst [off2] idx) val mem)
@@ -2503,10 +2397,7 @@ func rewriteValue386_Op386ANDLmodifyidx4(v *Value) bool {
                v.reset(Op386ANDLmodifyidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (ANDLmodifyidx4 [off1] {sym1} (LEAL [off2] {sym2} base) idx val mem)
@@ -2530,10 +2421,7 @@ func rewriteValue386_Op386ANDLmodifyidx4(v *Value) bool {
                v.reset(Op386ANDLmodifyidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (ANDLmodifyidx4 [off] {sym} ptr idx (MOVLconst [c]) mem)
@@ -2555,9 +2443,7 @@ func rewriteValue386_Op386ANDLmodifyidx4(v *Value) bool {
                v.reset(Op386ANDLconstmodifyidx4)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -2605,8 +2491,7 @@ func rewriteValue386_Op386CMPB(v *Value) bool {
                }
                v.reset(Op386InvertFlags)
                v0 := b.NewValue0(v.Pos, Op386CMPB, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -2629,9 +2514,7 @@ func rewriteValue386_Op386CMPB(v *Value) bool {
                v.reset(Op386CMPBload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (CMPB x l:(MOVBload {sym} [off] ptr mem))
@@ -2654,9 +2537,7 @@ func rewriteValue386_Op386CMPB(v *Value) bool {
                v0 := b.NewValue0(l.Pos, Op386CMPBload, types.TypeFlags)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(x)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, x, mem)
                v.AddArg(v0)
                return true
        }
@@ -2772,8 +2653,7 @@ func rewriteValue386_Op386CMPBconst(v *Value) bool {
                        break
                }
                v.reset(Op386TESTB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPBconst l:(ANDLconst [c] x) [0])
@@ -2805,8 +2685,7 @@ func rewriteValue386_Op386CMPBconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386TESTB)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (CMPBconst l:(MOVBload {sym} [off] ptr mem) [c])
@@ -2831,8 +2710,7 @@ func rewriteValue386_Op386CMPBconst(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2859,8 +2737,7 @@ func rewriteValue386_Op386CMPBload(v *Value) bool {
                v.reset(Op386CMPBconstload)
                v.AuxInt = makeValAndOff(int64(int8(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2908,8 +2785,7 @@ func rewriteValue386_Op386CMPL(v *Value) bool {
                }
                v.reset(Op386InvertFlags)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -2932,9 +2808,7 @@ func rewriteValue386_Op386CMPL(v *Value) bool {
                v.reset(Op386CMPLload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (CMPL x l:(MOVLload {sym} [off] ptr mem))
@@ -2957,9 +2831,7 @@ func rewriteValue386_Op386CMPL(v *Value) bool {
                v0 := b.NewValue0(l.Pos, Op386CMPLload, types.TypeFlags)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(x)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, x, mem)
                v.AddArg(v0)
                return true
        }
@@ -3090,8 +2962,7 @@ func rewriteValue386_Op386CMPLconst(v *Value) bool {
                        break
                }
                v.reset(Op386TESTL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPLconst l:(ANDLconst [c] x) [0])
@@ -3123,8 +2994,7 @@ func rewriteValue386_Op386CMPLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386TESTL)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (CMPLconst l:(MOVLload {sym} [off] ptr mem) [c])
@@ -3149,8 +3019,7 @@ func rewriteValue386_Op386CMPLconst(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3177,8 +3046,7 @@ func rewriteValue386_Op386CMPLload(v *Value) bool {
                v.reset(Op386CMPLconstload)
                v.AuxInt = makeValAndOff(int64(int32(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3226,8 +3094,7 @@ func rewriteValue386_Op386CMPW(v *Value) bool {
                }
                v.reset(Op386InvertFlags)
                v0 := b.NewValue0(v.Pos, Op386CMPW, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -3250,9 +3117,7 @@ func rewriteValue386_Op386CMPW(v *Value) bool {
                v.reset(Op386CMPWload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (CMPW x l:(MOVWload {sym} [off] ptr mem))
@@ -3275,9 +3140,7 @@ func rewriteValue386_Op386CMPW(v *Value) bool {
                v0 := b.NewValue0(l.Pos, Op386CMPWload, types.TypeFlags)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(x)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, x, mem)
                v.AddArg(v0)
                return true
        }
@@ -3393,8 +3256,7 @@ func rewriteValue386_Op386CMPWconst(v *Value) bool {
                        break
                }
                v.reset(Op386TESTW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPWconst l:(ANDLconst [c] x) [0])
@@ -3426,8 +3288,7 @@ func rewriteValue386_Op386CMPWconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386TESTW)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (CMPWconst l:(MOVWload {sym} [off] ptr mem) [c])
@@ -3452,8 +3313,7 @@ func rewriteValue386_Op386CMPWconst(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3480,8 +3340,7 @@ func rewriteValue386_Op386CMPWload(v *Value) bool {
                v.reset(Op386CMPWconstload)
                v.AuxInt = makeValAndOff(int64(int16(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3510,9 +3369,7 @@ func rewriteValue386_Op386DIVSD(v *Value) bool {
                v.reset(Op386DIVSDload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -3542,9 +3399,7 @@ func rewriteValue386_Op386DIVSDload(v *Value) bool {
                v.reset(Op386DIVSDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (DIVSDload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -3567,9 +3422,7 @@ func rewriteValue386_Op386DIVSDload(v *Value) bool {
                v.reset(Op386DIVSDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        return false
@@ -3598,9 +3451,7 @@ func rewriteValue386_Op386DIVSS(v *Value) bool {
                v.reset(Op386DIVSSload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -3630,9 +3481,7 @@ func rewriteValue386_Op386DIVSSload(v *Value) bool {
                v.reset(Op386DIVSSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (DIVSSload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -3655,9 +3504,7 @@ func rewriteValue386_Op386DIVSSload(v *Value) bool {
                v.reset(Op386DIVSSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        return false
@@ -3705,8 +3552,7 @@ func rewriteValue386_Op386LEAL(v *Value) bool {
                        v.reset(Op386LEAL1)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3751,8 +3597,7 @@ func rewriteValue386_Op386LEAL(v *Value) bool {
                v.reset(Op386LEAL1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL [off1] {sym1} (LEAL2 [off2] {sym2} x y))
@@ -3774,8 +3619,7 @@ func rewriteValue386_Op386LEAL(v *Value) bool {
                v.reset(Op386LEAL2)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL [off1] {sym1} (LEAL4 [off2] {sym2} x y))
@@ -3797,8 +3641,7 @@ func rewriteValue386_Op386LEAL(v *Value) bool {
                v.reset(Op386LEAL4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL [off1] {sym1} (LEAL8 [off2] {sym2} x y))
@@ -3820,8 +3663,7 @@ func rewriteValue386_Op386LEAL(v *Value) bool {
                v.reset(Op386LEAL8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -3848,8 +3690,7 @@ func rewriteValue386_Op386LEAL1(v *Value) bool {
                        v.reset(Op386LEAL1)
                        v.AuxInt = c + d
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3868,8 +3709,7 @@ func rewriteValue386_Op386LEAL1(v *Value) bool {
                        v.reset(Op386LEAL2)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3888,8 +3728,7 @@ func rewriteValue386_Op386LEAL1(v *Value) bool {
                        v.reset(Op386LEAL4)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3908,8 +3747,7 @@ func rewriteValue386_Op386LEAL1(v *Value) bool {
                        v.reset(Op386LEAL8)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3934,8 +3772,7 @@ func rewriteValue386_Op386LEAL1(v *Value) bool {
                        v.reset(Op386LEAL1)
                        v.AuxInt = off1 + off2
                        v.Aux = mergeSym(sym1, sym2)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3963,8 +3800,7 @@ func rewriteValue386_Op386LEAL2(v *Value) bool {
                v.reset(Op386LEAL2)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL2 [c] {s} x (ADDLconst [d] y))
@@ -3985,8 +3821,7 @@ func rewriteValue386_Op386LEAL2(v *Value) bool {
                v.reset(Op386LEAL2)
                v.AuxInt = c + 2*d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL2 [c] {s} x (SHLLconst [1] y))
@@ -4002,8 +3837,7 @@ func rewriteValue386_Op386LEAL2(v *Value) bool {
                v.reset(Op386LEAL4)
                v.AuxInt = c
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL2 [c] {s} x (SHLLconst [2] y))
@@ -4019,8 +3853,7 @@ func rewriteValue386_Op386LEAL2(v *Value) bool {
                v.reset(Op386LEAL8)
                v.AuxInt = c
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL2 [off1] {sym1} (LEAL [off2] {sym2} x) y)
@@ -4042,8 +3875,7 @@ func rewriteValue386_Op386LEAL2(v *Value) bool {
                v.reset(Op386LEAL2)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -4069,8 +3901,7 @@ func rewriteValue386_Op386LEAL4(v *Value) bool {
                v.reset(Op386LEAL4)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL4 [c] {s} x (ADDLconst [d] y))
@@ -4091,8 +3922,7 @@ func rewriteValue386_Op386LEAL4(v *Value) bool {
                v.reset(Op386LEAL4)
                v.AuxInt = c + 4*d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL4 [c] {s} x (SHLLconst [1] y))
@@ -4108,8 +3938,7 @@ func rewriteValue386_Op386LEAL4(v *Value) bool {
                v.reset(Op386LEAL8)
                v.AuxInt = c
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL4 [off1] {sym1} (LEAL [off2] {sym2} x) y)
@@ -4131,8 +3960,7 @@ func rewriteValue386_Op386LEAL4(v *Value) bool {
                v.reset(Op386LEAL4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -4158,8 +3986,7 @@ func rewriteValue386_Op386LEAL8(v *Value) bool {
                v.reset(Op386LEAL8)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL8 [c] {s} x (ADDLconst [d] y))
@@ -4180,8 +4007,7 @@ func rewriteValue386_Op386LEAL8(v *Value) bool {
                v.reset(Op386LEAL8)
                v.AuxInt = c + 8*d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL8 [off1] {sym1} (LEAL [off2] {sym2} x) y)
@@ -4203,8 +4029,7 @@ func rewriteValue386_Op386LEAL8(v *Value) bool {
                v.reset(Op386LEAL8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -4233,8 +4058,7 @@ func rewriteValue386_Op386MOVBLSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBLSX (ANDLconst [c] x))
@@ -4302,8 +4126,7 @@ func rewriteValue386_Op386MOVBLSXload(v *Value) bool {
                v.reset(Op386MOVBLSXload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -4332,8 +4155,7 @@ func rewriteValue386_Op386MOVBLZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBLZX x:(MOVBloadidx1 [off] {sym} ptr idx mem))
@@ -4358,9 +4180,7 @@ func rewriteValue386_Op386MOVBLZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBLZX (ANDLconst [c] x))
@@ -4423,8 +4243,7 @@ func rewriteValue386_Op386MOVBload(v *Value) bool {
                v.reset(Op386MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off1] {sym1} (LEAL [off2] {sym2} base) mem)
@@ -4446,8 +4265,7 @@ func rewriteValue386_Op386MOVBload(v *Value) bool {
                v.reset(Op386MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVBload [off1] {sym1} (LEAL1 [off2] {sym2} ptr idx) mem)
@@ -4470,9 +4288,7 @@ func rewriteValue386_Op386MOVBload(v *Value) bool {
                v.reset(Op386MOVBloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBload [off] {sym} (ADDL ptr idx) mem)
@@ -4497,9 +4313,7 @@ func rewriteValue386_Op386MOVBload(v *Value) bool {
                        v.reset(Op386MOVBloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -4539,9 +4353,7 @@ func rewriteValue386_Op386MOVBloadidx1(v *Value) bool {
                        v.reset(Op386MOVBloadidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -4562,9 +4374,7 @@ func rewriteValue386_Op386MOVBloadidx1(v *Value) bool {
                        v.reset(Op386MOVBloadidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -4591,9 +4401,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBLZX x) mem)
@@ -4610,9 +4418,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym} (ADDLconst [off2] ptr) val mem)
@@ -4634,9 +4440,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVLconst [c]) mem)
@@ -4657,8 +4461,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVBstoreconst)
                v.AuxInt = makeValAndOff(int64(int8(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -4681,9 +4484,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (LEAL1 [off2] {sym2} ptr idx) val mem)
@@ -4707,10 +4508,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVBstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} (ADDL ptr idx) val mem)
@@ -4736,10 +4534,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                        v.reset(Op386MOVBstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -4766,9 +4561,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVWstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SHRLconst [8] w) x:(MOVBstore [i-1] {s} p w mem))
@@ -4793,9 +4586,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVWstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p w x:(MOVBstore {s} [i+1] p (SHRWconst [8] w) mem))
@@ -4821,9 +4612,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVWstore)
                v.AuxInt = i
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p w x:(MOVBstore {s} [i+1] p (SHRLconst [8] w) mem))
@@ -4849,9 +4638,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVWstore)
                v.AuxInt = i
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SHRLconst [j] w) x:(MOVBstore [i-1] {s} p w0:(SHRLconst [j-8] w) mem))
@@ -4881,9 +4668,7 @@ func rewriteValue386_Op386MOVBstore(v *Value) bool {
                v.reset(Op386MOVWstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        return false
@@ -4911,8 +4696,7 @@ func rewriteValue386_Op386MOVBstoreconst(v *Value) bool {
                v.reset(Op386MOVBstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstoreconst [sc] {sym1} (LEAL [off] {sym2} ptr) mem)
@@ -4934,8 +4718,7 @@ func rewriteValue386_Op386MOVBstoreconst(v *Value) bool {
                v.reset(Op386MOVBstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstoreconst [x] {sym1} (LEAL1 [off] {sym2} ptr idx) mem)
@@ -4958,9 +4741,7 @@ func rewriteValue386_Op386MOVBstoreconst(v *Value) bool {
                v.reset(Op386MOVBstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBstoreconst [x] {sym} (ADDL ptr idx) mem)
@@ -4977,9 +4758,7 @@ func rewriteValue386_Op386MOVBstoreconst(v *Value) bool {
                v.reset(Op386MOVBstoreconstidx1)
                v.AuxInt = x
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBstoreconst [c] {s} p x:(MOVBstoreconst [a] {s} p mem))
@@ -5004,8 +4783,7 @@ func rewriteValue386_Op386MOVBstoreconst(v *Value) bool {
                v.reset(Op386MOVWstoreconst)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xff|ValAndOff(c).Val()<<8, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        // match: (MOVBstoreconst [a] {s} p x:(MOVBstoreconst [c] {s} p mem))
@@ -5030,8 +4808,7 @@ func rewriteValue386_Op386MOVBstoreconst(v *Value) bool {
                v.reset(Op386MOVWstoreconst)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xff|ValAndOff(c).Val()<<8, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -5055,9 +4832,7 @@ func rewriteValue386_Op386MOVBstoreconstidx1(v *Value) bool {
                v.reset(Op386MOVBstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBstoreconstidx1 [x] {sym} ptr (ADDLconst [c] idx) mem)
@@ -5075,9 +4850,7 @@ func rewriteValue386_Op386MOVBstoreconstidx1(v *Value) bool {
                v.reset(Op386MOVBstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBstoreconstidx1 [c] {s} p i x:(MOVBstoreconstidx1 [a] {s} p i mem))
@@ -5103,9 +4876,7 @@ func rewriteValue386_Op386MOVBstoreconstidx1(v *Value) bool {
                v.reset(Op386MOVWstoreconstidx1)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xff|ValAndOff(c).Val()<<8, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(i)
-               v.AddArg(mem)
+               v.AddArg3(p, i, mem)
                return true
        }
        return false
@@ -5132,10 +4903,7 @@ func rewriteValue386_Op386MOVBstoreidx1(v *Value) bool {
                        v.reset(Op386MOVBstoreidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -5157,10 +4925,7 @@ func rewriteValue386_Op386MOVBstoreidx1(v *Value) bool {
                        v.reset(Op386MOVBstoreidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -5192,10 +4957,7 @@ func rewriteValue386_Op386MOVBstoreidx1(v *Value) bool {
                                v.reset(Op386MOVWstoreidx1)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -5228,10 +4990,7 @@ func rewriteValue386_Op386MOVBstoreidx1(v *Value) bool {
                                v.reset(Op386MOVWstoreidx1)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -5265,10 +5024,7 @@ func rewriteValue386_Op386MOVBstoreidx1(v *Value) bool {
                                v.reset(Op386MOVWstoreidx1)
                                v.AuxInt = i
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -5302,10 +5058,7 @@ func rewriteValue386_Op386MOVBstoreidx1(v *Value) bool {
                                v.reset(Op386MOVWstoreidx1)
                                v.AuxInt = i
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -5343,10 +5096,7 @@ func rewriteValue386_Op386MOVBstoreidx1(v *Value) bool {
                                v.reset(Op386MOVWstoreidx1)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -5400,8 +5150,7 @@ func rewriteValue386_Op386MOVLload(v *Value) bool {
                v.reset(Op386MOVLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLload [off1] {sym1} (LEAL [off2] {sym2} base) mem)
@@ -5423,8 +5172,7 @@ func rewriteValue386_Op386MOVLload(v *Value) bool {
                v.reset(Op386MOVLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVLload [off1] {sym1} (LEAL1 [off2] {sym2} ptr idx) mem)
@@ -5447,9 +5195,7 @@ func rewriteValue386_Op386MOVLload(v *Value) bool {
                v.reset(Op386MOVLloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLload [off1] {sym1} (LEAL4 [off2] {sym2} ptr idx) mem)
@@ -5472,9 +5218,7 @@ func rewriteValue386_Op386MOVLload(v *Value) bool {
                v.reset(Op386MOVLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLload [off] {sym} (ADDL ptr idx) mem)
@@ -5499,9 +5243,7 @@ func rewriteValue386_Op386MOVLload(v *Value) bool {
                        v.reset(Op386MOVLloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -5540,9 +5282,7 @@ func rewriteValue386_Op386MOVLloadidx1(v *Value) bool {
                        v.reset(Op386MOVLloadidx4)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -5563,9 +5303,7 @@ func rewriteValue386_Op386MOVLloadidx1(v *Value) bool {
                        v.reset(Op386MOVLloadidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -5586,9 +5324,7 @@ func rewriteValue386_Op386MOVLloadidx1(v *Value) bool {
                        v.reset(Op386MOVLloadidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -5614,9 +5350,7 @@ func rewriteValue386_Op386MOVLloadidx4(v *Value) bool {
                v.reset(Op386MOVLloadidx4)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLloadidx4 [c] {sym} ptr (ADDLconst [d] idx) mem)
@@ -5634,9 +5368,7 @@ func rewriteValue386_Op386MOVLloadidx4(v *Value) bool {
                v.reset(Op386MOVLloadidx4)
                v.AuxInt = int64(int32(c + 4*d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -5666,9 +5398,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386MOVLstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr (MOVLconst [c]) mem)
@@ -5689,8 +5419,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386MOVLstoreconst)
                v.AuxInt = makeValAndOff(int64(int32(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -5713,9 +5442,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386MOVLstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVLstore [off1] {sym1} (LEAL1 [off2] {sym2} ptr idx) val mem)
@@ -5739,10 +5466,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386MOVLstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstore [off1] {sym1} (LEAL4 [off2] {sym2} ptr idx) val mem)
@@ -5766,10 +5490,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386MOVLstoreidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} (ADDL ptr idx) val mem)
@@ -5795,10 +5516,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                        v.reset(Op386MOVLstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -5822,9 +5540,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386ADDLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ANDLload x [off] {sym} ptr mem) mem)
@@ -5846,9 +5562,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386ANDLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ORLload x [off] {sym} ptr mem) mem)
@@ -5870,9 +5584,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386ORLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(XORLload x [off] {sym} ptr mem) mem)
@@ -5894,9 +5606,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386XORLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ADDL l:(MOVLload [off] {sym} ptr mem) x) mem)
@@ -5929,9 +5639,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                        v.reset(Op386ADDLmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -5959,9 +5667,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386SUBLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ANDL l:(MOVLload [off] {sym} ptr mem) x) mem)
@@ -5994,9 +5700,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                        v.reset(Op386ANDLmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -6031,9 +5735,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                        v.reset(Op386ORLmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -6068,9 +5770,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                        v.reset(Op386XORLmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -6098,8 +5798,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386ADDLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ANDLconst [c] l:(MOVLload [off] {sym} ptr mem)) mem)
@@ -6125,8 +5824,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386ANDLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ORLconst [c] l:(MOVLload [off] {sym} ptr mem)) mem)
@@ -6152,8 +5850,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386ORLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(XORLconst [c] l:(MOVLload [off] {sym} ptr mem)) mem)
@@ -6179,8 +5876,7 @@ func rewriteValue386_Op386MOVLstore(v *Value) bool {
                v.reset(Op386XORLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -6208,8 +5904,7 @@ func rewriteValue386_Op386MOVLstoreconst(v *Value) bool {
                v.reset(Op386MOVLstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstoreconst [sc] {sym1} (LEAL [off] {sym2} ptr) mem)
@@ -6231,8 +5926,7 @@ func rewriteValue386_Op386MOVLstoreconst(v *Value) bool {
                v.reset(Op386MOVLstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstoreconst [x] {sym1} (LEAL1 [off] {sym2} ptr idx) mem)
@@ -6255,9 +5949,7 @@ func rewriteValue386_Op386MOVLstoreconst(v *Value) bool {
                v.reset(Op386MOVLstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreconst [x] {sym1} (LEAL4 [off] {sym2} ptr idx) mem)
@@ -6280,9 +5972,7 @@ func rewriteValue386_Op386MOVLstoreconst(v *Value) bool {
                v.reset(Op386MOVLstoreconstidx4)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreconst [x] {sym} (ADDL ptr idx) mem)
@@ -6299,9 +5989,7 @@ func rewriteValue386_Op386MOVLstoreconst(v *Value) bool {
                v.reset(Op386MOVLstoreconstidx1)
                v.AuxInt = x
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -6324,9 +6012,7 @@ func rewriteValue386_Op386MOVLstoreconstidx1(v *Value) bool {
                v.reset(Op386MOVLstoreconstidx4)
                v.AuxInt = c
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreconstidx1 [x] {sym} (ADDLconst [c] ptr) idx mem)
@@ -6344,9 +6030,7 @@ func rewriteValue386_Op386MOVLstoreconstidx1(v *Value) bool {
                v.reset(Op386MOVLstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreconstidx1 [x] {sym} ptr (ADDLconst [c] idx) mem)
@@ -6364,9 +6048,7 @@ func rewriteValue386_Op386MOVLstoreconstidx1(v *Value) bool {
                v.reset(Op386MOVLstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -6390,9 +6072,7 @@ func rewriteValue386_Op386MOVLstoreconstidx4(v *Value) bool {
                v.reset(Op386MOVLstoreconstidx4)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreconstidx4 [x] {sym} ptr (ADDLconst [c] idx) mem)
@@ -6410,9 +6090,7 @@ func rewriteValue386_Op386MOVLstoreconstidx4(v *Value) bool {
                v.reset(Op386MOVLstoreconstidx4)
                v.AuxInt = ValAndOff(x).add(4 * c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -6438,10 +6116,7 @@ func rewriteValue386_Op386MOVLstoreidx1(v *Value) bool {
                        v.reset(Op386MOVLstoreidx4)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -6463,10 +6138,7 @@ func rewriteValue386_Op386MOVLstoreidx1(v *Value) bool {
                        v.reset(Op386MOVLstoreidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -6488,10 +6160,7 @@ func rewriteValue386_Op386MOVLstoreidx1(v *Value) bool {
                        v.reset(Op386MOVLstoreidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -6519,10 +6188,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386MOVLstoreidx4)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstoreidx4 [c] {sym} ptr (ADDLconst [d] idx) val mem)
@@ -6541,10 +6207,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386MOVLstoreidx4)
                v.AuxInt = int64(int32(c + 4*d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstoreidx4 {sym} [off] ptr idx y:(ADDLloadidx4 x [off] {sym} ptr idx mem) mem)
@@ -6567,10 +6230,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386ADDLmodifyidx4)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVLstoreidx4 {sym} [off] ptr idx y:(ANDLloadidx4 x [off] {sym} ptr idx mem) mem)
@@ -6593,10 +6253,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386ANDLmodifyidx4)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVLstoreidx4 {sym} [off] ptr idx y:(ORLloadidx4 x [off] {sym} ptr idx mem) mem)
@@ -6619,10 +6276,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386ORLmodifyidx4)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVLstoreidx4 {sym} [off] ptr idx y:(XORLloadidx4 x [off] {sym} ptr idx mem) mem)
@@ -6645,10 +6299,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386XORLmodifyidx4)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVLstoreidx4 {sym} [off] ptr idx y:(ADDL l:(MOVLloadidx4 [off] {sym} ptr idx mem) x) mem)
@@ -6682,10 +6333,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                        v.reset(Op386ADDLmodifyidx4)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, x, mem)
                        return true
                }
                break
@@ -6714,10 +6362,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386SUBLmodifyidx4)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVLstoreidx4 {sym} [off] ptr idx y:(ANDL l:(MOVLloadidx4 [off] {sym} ptr idx mem) x) mem)
@@ -6751,10 +6396,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                        v.reset(Op386ANDLmodifyidx4)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, x, mem)
                        return true
                }
                break
@@ -6790,10 +6432,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                        v.reset(Op386ORLmodifyidx4)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, x, mem)
                        return true
                }
                break
@@ -6829,10 +6468,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                        v.reset(Op386XORLmodifyidx4)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, x, mem)
                        return true
                }
                break
@@ -6861,9 +6497,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386ADDLconstmodifyidx4)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreidx4 {sym} [off] ptr idx y:(ANDLconst [c] l:(MOVLloadidx4 [off] {sym} ptr idx mem)) mem)
@@ -6890,9 +6524,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386ANDLconstmodifyidx4)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreidx4 {sym} [off] ptr idx y:(ORLconst [c] l:(MOVLloadidx4 [off] {sym} ptr idx mem)) mem)
@@ -6919,9 +6551,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386ORLconstmodifyidx4)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreidx4 {sym} [off] ptr idx y:(XORLconst [c] l:(MOVLloadidx4 [off] {sym} ptr idx mem)) mem)
@@ -6948,9 +6578,7 @@ func rewriteValue386_Op386MOVLstoreidx4(v *Value) bool {
                v.reset(Op386XORLconstmodifyidx4)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -6998,8 +6626,7 @@ func rewriteValue386_Op386MOVSDload(v *Value) bool {
                v.reset(Op386MOVSDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVSDload [off1] {sym1} (LEAL [off2] {sym2} base) mem)
@@ -7021,8 +6648,7 @@ func rewriteValue386_Op386MOVSDload(v *Value) bool {
                v.reset(Op386MOVSDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVSDload [off1] {sym1} (LEAL1 [off2] {sym2} ptr idx) mem)
@@ -7045,9 +6671,7 @@ func rewriteValue386_Op386MOVSDload(v *Value) bool {
                v.reset(Op386MOVSDloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDload [off1] {sym1} (LEAL8 [off2] {sym2} ptr idx) mem)
@@ -7070,9 +6694,7 @@ func rewriteValue386_Op386MOVSDload(v *Value) bool {
                v.reset(Op386MOVSDloadidx8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDload [off] {sym} (ADDL ptr idx) mem)
@@ -7097,9 +6719,7 @@ func rewriteValue386_Op386MOVSDload(v *Value) bool {
                        v.reset(Op386MOVSDloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -7125,9 +6745,7 @@ func rewriteValue386_Op386MOVSDloadidx1(v *Value) bool {
                v.reset(Op386MOVSDloadidx1)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDloadidx1 [c] {sym} ptr (ADDLconst [d] idx) mem)
@@ -7145,9 +6763,7 @@ func rewriteValue386_Op386MOVSDloadidx1(v *Value) bool {
                v.reset(Op386MOVSDloadidx1)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -7171,9 +6787,7 @@ func rewriteValue386_Op386MOVSDloadidx8(v *Value) bool {
                v.reset(Op386MOVSDloadidx8)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDloadidx8 [c] {sym} ptr (ADDLconst [d] idx) mem)
@@ -7191,9 +6805,7 @@ func rewriteValue386_Op386MOVSDloadidx8(v *Value) bool {
                v.reset(Op386MOVSDloadidx8)
                v.AuxInt = int64(int32(c + 8*d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -7223,9 +6835,7 @@ func rewriteValue386_Op386MOVSDstore(v *Value) bool {
                v.reset(Op386MOVSDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVSDstore [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -7248,9 +6858,7 @@ func rewriteValue386_Op386MOVSDstore(v *Value) bool {
                v.reset(Op386MOVSDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVSDstore [off1] {sym1} (LEAL1 [off2] {sym2} ptr idx) val mem)
@@ -7274,10 +6882,7 @@ func rewriteValue386_Op386MOVSDstore(v *Value) bool {
                v.reset(Op386MOVSDstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstore [off1] {sym1} (LEAL8 [off2] {sym2} ptr idx) val mem)
@@ -7301,10 +6906,7 @@ func rewriteValue386_Op386MOVSDstore(v *Value) bool {
                v.reset(Op386MOVSDstoreidx8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstore [off] {sym} (ADDL ptr idx) val mem)
@@ -7330,10 +6932,7 @@ func rewriteValue386_Op386MOVSDstore(v *Value) bool {
                        v.reset(Op386MOVSDstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -7361,10 +6960,7 @@ func rewriteValue386_Op386MOVSDstoreidx1(v *Value) bool {
                v.reset(Op386MOVSDstoreidx1)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstoreidx1 [c] {sym} ptr (ADDLconst [d] idx) val mem)
@@ -7383,10 +6979,7 @@ func rewriteValue386_Op386MOVSDstoreidx1(v *Value) bool {
                v.reset(Op386MOVSDstoreidx1)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -7412,10 +7005,7 @@ func rewriteValue386_Op386MOVSDstoreidx8(v *Value) bool {
                v.reset(Op386MOVSDstoreidx8)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstoreidx8 [c] {sym} ptr (ADDLconst [d] idx) val mem)
@@ -7434,10 +7024,7 @@ func rewriteValue386_Op386MOVSDstoreidx8(v *Value) bool {
                v.reset(Op386MOVSDstoreidx8)
                v.AuxInt = int64(int32(c + 8*d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -7485,8 +7072,7 @@ func rewriteValue386_Op386MOVSSload(v *Value) bool {
                v.reset(Op386MOVSSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVSSload [off1] {sym1} (LEAL [off2] {sym2} base) mem)
@@ -7508,8 +7094,7 @@ func rewriteValue386_Op386MOVSSload(v *Value) bool {
                v.reset(Op386MOVSSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVSSload [off1] {sym1} (LEAL1 [off2] {sym2} ptr idx) mem)
@@ -7532,9 +7117,7 @@ func rewriteValue386_Op386MOVSSload(v *Value) bool {
                v.reset(Op386MOVSSloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSload [off1] {sym1} (LEAL4 [off2] {sym2} ptr idx) mem)
@@ -7557,9 +7140,7 @@ func rewriteValue386_Op386MOVSSload(v *Value) bool {
                v.reset(Op386MOVSSloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSload [off] {sym} (ADDL ptr idx) mem)
@@ -7584,9 +7165,7 @@ func rewriteValue386_Op386MOVSSload(v *Value) bool {
                        v.reset(Op386MOVSSloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -7612,9 +7191,7 @@ func rewriteValue386_Op386MOVSSloadidx1(v *Value) bool {
                v.reset(Op386MOVSSloadidx1)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSloadidx1 [c] {sym} ptr (ADDLconst [d] idx) mem)
@@ -7632,9 +7209,7 @@ func rewriteValue386_Op386MOVSSloadidx1(v *Value) bool {
                v.reset(Op386MOVSSloadidx1)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -7658,9 +7233,7 @@ func rewriteValue386_Op386MOVSSloadidx4(v *Value) bool {
                v.reset(Op386MOVSSloadidx4)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSloadidx4 [c] {sym} ptr (ADDLconst [d] idx) mem)
@@ -7678,9 +7251,7 @@ func rewriteValue386_Op386MOVSSloadidx4(v *Value) bool {
                v.reset(Op386MOVSSloadidx4)
                v.AuxInt = int64(int32(c + 4*d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -7710,9 +7281,7 @@ func rewriteValue386_Op386MOVSSstore(v *Value) bool {
                v.reset(Op386MOVSSstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVSSstore [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -7735,9 +7304,7 @@ func rewriteValue386_Op386MOVSSstore(v *Value) bool {
                v.reset(Op386MOVSSstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVSSstore [off1] {sym1} (LEAL1 [off2] {sym2} ptr idx) val mem)
@@ -7761,10 +7328,7 @@ func rewriteValue386_Op386MOVSSstore(v *Value) bool {
                v.reset(Op386MOVSSstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstore [off1] {sym1} (LEAL4 [off2] {sym2} ptr idx) val mem)
@@ -7788,10 +7352,7 @@ func rewriteValue386_Op386MOVSSstore(v *Value) bool {
                v.reset(Op386MOVSSstoreidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstore [off] {sym} (ADDL ptr idx) val mem)
@@ -7817,10 +7378,7 @@ func rewriteValue386_Op386MOVSSstore(v *Value) bool {
                        v.reset(Op386MOVSSstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -7848,10 +7406,7 @@ func rewriteValue386_Op386MOVSSstoreidx1(v *Value) bool {
                v.reset(Op386MOVSSstoreidx1)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstoreidx1 [c] {sym} ptr (ADDLconst [d] idx) val mem)
@@ -7870,10 +7425,7 @@ func rewriteValue386_Op386MOVSSstoreidx1(v *Value) bool {
                v.reset(Op386MOVSSstoreidx1)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -7899,10 +7451,7 @@ func rewriteValue386_Op386MOVSSstoreidx4(v *Value) bool {
                v.reset(Op386MOVSSstoreidx4)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstoreidx4 [c] {sym} ptr (ADDLconst [d] idx) val mem)
@@ -7921,10 +7470,7 @@ func rewriteValue386_Op386MOVSSstoreidx4(v *Value) bool {
                v.reset(Op386MOVSSstoreidx4)
                v.AuxInt = int64(int32(c + 4*d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -7953,8 +7499,7 @@ func rewriteValue386_Op386MOVWLSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWLSX (ANDLconst [c] x))
@@ -8022,8 +7567,7 @@ func rewriteValue386_Op386MOVWLSXload(v *Value) bool {
                v.reset(Op386MOVWLSXload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -8052,8 +7596,7 @@ func rewriteValue386_Op386MOVWLZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWLZX x:(MOVWloadidx1 [off] {sym} ptr idx mem))
@@ -8078,9 +7621,7 @@ func rewriteValue386_Op386MOVWLZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWLZX x:(MOVWloadidx2 [off] {sym} ptr idx mem))
@@ -8105,9 +7646,7 @@ func rewriteValue386_Op386MOVWLZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWLZX (ANDLconst [c] x))
@@ -8170,8 +7709,7 @@ func rewriteValue386_Op386MOVWload(v *Value) bool {
                v.reset(Op386MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (LEAL [off2] {sym2} base) mem)
@@ -8193,8 +7731,7 @@ func rewriteValue386_Op386MOVWload(v *Value) bool {
                v.reset(Op386MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (LEAL1 [off2] {sym2} ptr idx) mem)
@@ -8217,9 +7754,7 @@ func rewriteValue386_Op386MOVWload(v *Value) bool {
                v.reset(Op386MOVWloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (LEAL2 [off2] {sym2} ptr idx) mem)
@@ -8242,9 +7777,7 @@ func rewriteValue386_Op386MOVWload(v *Value) bool {
                v.reset(Op386MOVWloadidx2)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [off] {sym} (ADDL ptr idx) mem)
@@ -8269,9 +7802,7 @@ func rewriteValue386_Op386MOVWload(v *Value) bool {
                        v.reset(Op386MOVWloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -8310,9 +7841,7 @@ func rewriteValue386_Op386MOVWloadidx1(v *Value) bool {
                        v.reset(Op386MOVWloadidx2)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -8333,9 +7862,7 @@ func rewriteValue386_Op386MOVWloadidx1(v *Value) bool {
                        v.reset(Op386MOVWloadidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -8356,9 +7883,7 @@ func rewriteValue386_Op386MOVWloadidx1(v *Value) bool {
                        v.reset(Op386MOVWloadidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -8384,9 +7909,7 @@ func rewriteValue386_Op386MOVWloadidx2(v *Value) bool {
                v.reset(Op386MOVWloadidx2)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWloadidx2 [c] {sym} ptr (ADDLconst [d] idx) mem)
@@ -8404,9 +7927,7 @@ func rewriteValue386_Op386MOVWloadidx2(v *Value) bool {
                v.reset(Op386MOVWloadidx2)
                v.AuxInt = int64(int32(c + 2*d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -8431,9 +7952,7 @@ func rewriteValue386_Op386MOVWstore(v *Value) bool {
                v.reset(Op386MOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWLZX x) mem)
@@ -8450,9 +7969,7 @@ func rewriteValue386_Op386MOVWstore(v *Value) bool {
                v.reset(Op386MOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym} (ADDLconst [off2] ptr) val mem)
@@ -8474,9 +7991,7 @@ func rewriteValue386_Op386MOVWstore(v *Value) bool {
                v.reset(Op386MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVLconst [c]) mem)
@@ -8497,8 +8012,7 @@ func rewriteValue386_Op386MOVWstore(v *Value) bool {
                v.reset(Op386MOVWstoreconst)
                v.AuxInt = makeValAndOff(int64(int16(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -8521,9 +8035,7 @@ func rewriteValue386_Op386MOVWstore(v *Value) bool {
                v.reset(Op386MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (LEAL1 [off2] {sym2} ptr idx) val mem)
@@ -8547,10 +8059,7 @@ func rewriteValue386_Op386MOVWstore(v *Value) bool {
                v.reset(Op386MOVWstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (LEAL2 [off2] {sym2} ptr idx) val mem)
@@ -8574,10 +8083,7 @@ func rewriteValue386_Op386MOVWstore(v *Value) bool {
                v.reset(Op386MOVWstoreidx2)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} (ADDL ptr idx) val mem)
@@ -8603,10 +8109,7 @@ func rewriteValue386_Op386MOVWstore(v *Value) bool {
                        v.reset(Op386MOVWstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -8633,9 +8136,7 @@ func rewriteValue386_Op386MOVWstore(v *Value) bool {
                v.reset(Op386MOVLstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVWstore [i] {s} p (SHRLconst [j] w) x:(MOVWstore [i-2] {s} p w0:(SHRLconst [j-16] w) mem))
@@ -8665,9 +8166,7 @@ func rewriteValue386_Op386MOVWstore(v *Value) bool {
                v.reset(Op386MOVLstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        return false
@@ -8695,8 +8194,7 @@ func rewriteValue386_Op386MOVWstoreconst(v *Value) bool {
                v.reset(Op386MOVWstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstoreconst [sc] {sym1} (LEAL [off] {sym2} ptr) mem)
@@ -8718,8 +8216,7 @@ func rewriteValue386_Op386MOVWstoreconst(v *Value) bool {
                v.reset(Op386MOVWstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstoreconst [x] {sym1} (LEAL1 [off] {sym2} ptr idx) mem)
@@ -8742,9 +8239,7 @@ func rewriteValue386_Op386MOVWstoreconst(v *Value) bool {
                v.reset(Op386MOVWstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconst [x] {sym1} (LEAL2 [off] {sym2} ptr idx) mem)
@@ -8767,9 +8262,7 @@ func rewriteValue386_Op386MOVWstoreconst(v *Value) bool {
                v.reset(Op386MOVWstoreconstidx2)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconst [x] {sym} (ADDL ptr idx) mem)
@@ -8786,9 +8279,7 @@ func rewriteValue386_Op386MOVWstoreconst(v *Value) bool {
                v.reset(Op386MOVWstoreconstidx1)
                v.AuxInt = x
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconst [c] {s} p x:(MOVWstoreconst [a] {s} p mem))
@@ -8813,8 +8304,7 @@ func rewriteValue386_Op386MOVWstoreconst(v *Value) bool {
                v.reset(Op386MOVLstoreconst)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xffff|ValAndOff(c).Val()<<16, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        // match: (MOVWstoreconst [a] {s} p x:(MOVWstoreconst [c] {s} p mem))
@@ -8839,8 +8329,7 @@ func rewriteValue386_Op386MOVWstoreconst(v *Value) bool {
                v.reset(Op386MOVLstoreconst)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xffff|ValAndOff(c).Val()<<16, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -8863,9 +8352,7 @@ func rewriteValue386_Op386MOVWstoreconstidx1(v *Value) bool {
                v.reset(Op386MOVWstoreconstidx2)
                v.AuxInt = c
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconstidx1 [x] {sym} (ADDLconst [c] ptr) idx mem)
@@ -8883,9 +8370,7 @@ func rewriteValue386_Op386MOVWstoreconstidx1(v *Value) bool {
                v.reset(Op386MOVWstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconstidx1 [x] {sym} ptr (ADDLconst [c] idx) mem)
@@ -8903,9 +8388,7 @@ func rewriteValue386_Op386MOVWstoreconstidx1(v *Value) bool {
                v.reset(Op386MOVWstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconstidx1 [c] {s} p i x:(MOVWstoreconstidx1 [a] {s} p i mem))
@@ -8931,9 +8414,7 @@ func rewriteValue386_Op386MOVWstoreconstidx1(v *Value) bool {
                v.reset(Op386MOVLstoreconstidx1)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xffff|ValAndOff(c).Val()<<16, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(i)
-               v.AddArg(mem)
+               v.AddArg3(p, i, mem)
                return true
        }
        return false
@@ -8958,9 +8439,7 @@ func rewriteValue386_Op386MOVWstoreconstidx2(v *Value) bool {
                v.reset(Op386MOVWstoreconstidx2)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconstidx2 [x] {sym} ptr (ADDLconst [c] idx) mem)
@@ -8978,9 +8457,7 @@ func rewriteValue386_Op386MOVWstoreconstidx2(v *Value) bool {
                v.reset(Op386MOVWstoreconstidx2)
                v.AuxInt = ValAndOff(x).add(2 * c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconstidx2 [c] {s} p i x:(MOVWstoreconstidx2 [a] {s} p i mem))
@@ -9006,12 +8483,10 @@ func rewriteValue386_Op386MOVWstoreconstidx2(v *Value) bool {
                v.reset(Op386MOVLstoreconstidx1)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xffff|ValAndOff(c).Val()<<16, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(v.Pos, Op386SHLLconst, i.Type)
                v0.AuxInt = 1
                v0.AddArg(i)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        return false
@@ -9037,10 +8512,7 @@ func rewriteValue386_Op386MOVWstoreidx1(v *Value) bool {
                        v.reset(Op386MOVWstoreidx2)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -9062,10 +8534,7 @@ func rewriteValue386_Op386MOVWstoreidx1(v *Value) bool {
                        v.reset(Op386MOVWstoreidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -9087,10 +8556,7 @@ func rewriteValue386_Op386MOVWstoreidx1(v *Value) bool {
                        v.reset(Op386MOVWstoreidx1)
                        v.AuxInt = int64(int32(c + d))
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -9122,10 +8588,7 @@ func rewriteValue386_Op386MOVWstoreidx1(v *Value) bool {
                                v.reset(Op386MOVLstoreidx1)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -9163,10 +8626,7 @@ func rewriteValue386_Op386MOVWstoreidx1(v *Value) bool {
                                v.reset(Op386MOVLstoreidx1)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -9196,10 +8656,7 @@ func rewriteValue386_Op386MOVWstoreidx2(v *Value) bool {
                v.reset(Op386MOVWstoreidx2)
                v.AuxInt = int64(int32(c + d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx2 [c] {sym} ptr (ADDLconst [d] idx) val mem)
@@ -9218,10 +8675,7 @@ func rewriteValue386_Op386MOVWstoreidx2(v *Value) bool {
                v.reset(Op386MOVWstoreidx2)
                v.AuxInt = int64(int32(c + 2*d))
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx2 [i] {s} p idx (SHRLconst [16] w) x:(MOVWstoreidx2 [i-2] {s} p idx w mem))
@@ -9247,13 +8701,10 @@ func rewriteValue386_Op386MOVWstoreidx2(v *Value) bool {
                v.reset(Op386MOVLstoreidx1)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(v.Pos, Op386SHLLconst, idx.Type)
                v0.AuxInt = 1
                v0.AddArg(idx)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(p, v0, w, mem)
                return true
        }
        // match: (MOVWstoreidx2 [i] {s} p idx (SHRLconst [j] w) x:(MOVWstoreidx2 [i-2] {s} p idx w0:(SHRLconst [j-16] w) mem))
@@ -9284,13 +8735,10 @@ func rewriteValue386_Op386MOVWstoreidx2(v *Value) bool {
                v.reset(Op386MOVLstoreidx1)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(v.Pos, Op386SHLLconst, idx.Type)
                v0.AuxInt = 1
                v0.AddArg(idx)
-               v.AddArg(v0)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg4(p, v0, w0, mem)
                return true
        }
        return false
@@ -9334,9 +8782,7 @@ func rewriteValue386_Op386MULL(v *Value) bool {
                        v.reset(Op386MULLload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -9362,10 +8808,7 @@ func rewriteValue386_Op386MULL(v *Value) bool {
                        v.reset(Op386MULLloadidx4)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg4(x, ptr, idx, mem)
                        return true
                }
                break
@@ -9398,8 +8841,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                x := v_0
                v.reset(Op386NEGL)
                v0 := b.NewValue0(v.Pos, Op386LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -9412,8 +8854,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                x := v_0
                v.reset(Op386NEGL)
                v0 := b.NewValue0(v.Pos, Op386LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -9426,8 +8867,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                x := v_0
                v.reset(Op386NEGL)
                v0 := b.NewValue0(v.Pos, Op386LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -9472,8 +8912,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL2)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (MULLconst [5] x)
@@ -9484,8 +8923,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL4)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (MULLconst [7] x)
@@ -9496,11 +8934,9 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL2)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [9] x)
@@ -9511,8 +8947,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL8)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (MULLconst [11] x)
@@ -9523,11 +8958,9 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL2)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [13] x)
@@ -9538,11 +8971,9 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL4)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [19] x)
@@ -9553,11 +8984,9 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL2)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [21] x)
@@ -9568,11 +8997,9 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL4)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [25] x)
@@ -9583,11 +9010,9 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [27] x)
@@ -9599,13 +9024,10 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                x := v_0
                v.reset(Op386LEAL8)
                v0 := b.NewValue0(v.Pos, Op386LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
                v1 := b.NewValue0(v.Pos, Op386LEAL2, v.Type)
-               v1.AddArg(x)
-               v1.AddArg(x)
-               v.AddArg(v1)
+               v1.AddArg2(x, x)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (MULLconst [37] x)
@@ -9616,11 +9038,9 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL4)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [41] x)
@@ -9631,11 +9051,9 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [45] x)
@@ -9647,13 +9065,10 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                x := v_0
                v.reset(Op386LEAL8)
                v0 := b.NewValue0(v.Pos, Op386LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
                v1 := b.NewValue0(v.Pos, Op386LEAL4, v.Type)
-               v1.AddArg(x)
-               v1.AddArg(x)
-               v.AddArg(v1)
+               v1.AddArg2(x, x)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (MULLconst [73] x)
@@ -9664,11 +9079,9 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(Op386LEAL8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [81] x)
@@ -9680,13 +9093,10 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                x := v_0
                v.reset(Op386LEAL8)
                v0 := b.NewValue0(v.Pos, Op386LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
                v1 := b.NewValue0(v.Pos, Op386LEAL8, v.Type)
-               v1.AddArg(x)
-               v1.AddArg(x)
-               v.AddArg(v1)
+               v1.AddArg2(x, x)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (MULLconst [c] x)
@@ -9702,8 +9112,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386SHLLconst, v.Type)
                v0.AuxInt = log2(c + 1)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLconst [c] x)
@@ -9719,8 +9128,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386SHLLconst, v.Type)
                v0.AuxInt = log2(c - 1)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLconst [c] x)
@@ -9736,8 +9144,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386SHLLconst, v.Type)
                v0.AuxInt = log2(c - 2)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLconst [c] x)
@@ -9753,8 +9160,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386SHLLconst, v.Type)
                v0.AuxInt = log2(c - 4)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLconst [c] x)
@@ -9770,8 +9176,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386SHLLconst, v.Type)
                v0.AuxInt = log2(c - 8)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLconst [c] x)
@@ -9786,8 +9191,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                v.reset(Op386SHLLconst)
                v.AuxInt = log2(c / 3)
                v0 := b.NewValue0(v.Pos, Op386LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -9803,8 +9207,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                v.reset(Op386SHLLconst)
                v.AuxInt = log2(c / 5)
                v0 := b.NewValue0(v.Pos, Op386LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -9820,8 +9223,7 @@ func rewriteValue386_Op386MULLconst(v *Value) bool {
                v.reset(Op386SHLLconst)
                v.AuxInt = log2(c / 9)
                v0 := b.NewValue0(v.Pos, Op386LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -9864,9 +9266,7 @@ func rewriteValue386_Op386MULLload(v *Value) bool {
                v.reset(Op386MULLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (MULLload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -9889,9 +9289,7 @@ func rewriteValue386_Op386MULLload(v *Value) bool {
                v.reset(Op386MULLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (MULLload [off1] {sym1} val (LEAL4 [off2] {sym2} ptr idx) mem)
@@ -9915,10 +9313,7 @@ func rewriteValue386_Op386MULLload(v *Value) bool {
                v.reset(Op386MULLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, ptr, idx, mem)
                return true
        }
        return false
@@ -9950,10 +9345,7 @@ func rewriteValue386_Op386MULLloadidx4(v *Value) bool {
                v.reset(Op386MULLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (MULLloadidx4 [off1] {sym} val base (ADDLconst [off2] idx) mem)
@@ -9976,10 +9368,7 @@ func rewriteValue386_Op386MULLloadidx4(v *Value) bool {
                v.reset(Op386MULLloadidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (MULLloadidx4 [off1] {sym1} val (LEAL [off2] {sym2} base) idx mem)
@@ -10003,10 +9392,7 @@ func rewriteValue386_Op386MULLloadidx4(v *Value) bool {
                v.reset(Op386MULLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        return false
@@ -10036,9 +9422,7 @@ func rewriteValue386_Op386MULSD(v *Value) bool {
                        v.reset(Op386MULSDload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -10070,9 +9454,7 @@ func rewriteValue386_Op386MULSDload(v *Value) bool {
                v.reset(Op386MULSDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (MULSDload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -10095,9 +9477,7 @@ func rewriteValue386_Op386MULSDload(v *Value) bool {
                v.reset(Op386MULSDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        return false
@@ -10127,9 +9507,7 @@ func rewriteValue386_Op386MULSS(v *Value) bool {
                        v.reset(Op386MULSSload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -10161,9 +9539,7 @@ func rewriteValue386_Op386MULSSload(v *Value) bool {
                v.reset(Op386MULSSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (MULSSload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -10186,9 +9562,7 @@ func rewriteValue386_Op386MULSSload(v *Value) bool {
                v.reset(Op386MULSSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        return false
@@ -10338,9 +9712,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                        v.reset(Op386ORLload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -10366,10 +9738,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                        v.reset(Op386ORLloadidx4)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg4(x, ptr, idx, mem)
                        return true
                }
                break
@@ -10421,8 +9790,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -10486,8 +9854,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                                v.AddArg(v0)
                                v0.AuxInt = i0
                                v0.Aux = s
-                               v0.AddArg(p)
-                               v0.AddArg(mem)
+                               v0.AddArg2(p, mem)
                                return true
                        }
                }
@@ -10535,9 +9902,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -10613,9 +9978,7 @@ func rewriteValue386_Op386ORL(v *Value) bool {
                                                        v.AddArg(v0)
                                                        v0.AuxInt = i0
                                                        v0.Aux = s
-                                                       v0.AddArg(p)
-                                                       v0.AddArg(idx)
-                                                       v0.AddArg(mem)
+                                                       v0.AddArg3(p, idx, mem)
                                                        return true
                                                }
                                        }
@@ -10691,8 +10054,7 @@ func rewriteValue386_Op386ORLconstmodify(v *Value) bool {
                v.reset(Op386ORLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (ORLconstmodify [valoff1] {sym1} (LEAL [off2] {sym2} base) mem)
@@ -10714,8 +10076,7 @@ func rewriteValue386_Op386ORLconstmodify(v *Value) bool {
                v.reset(Op386ORLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -10745,9 +10106,7 @@ func rewriteValue386_Op386ORLconstmodifyidx4(v *Value) bool {
                v.reset(Op386ORLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        // match: (ORLconstmodifyidx4 [valoff1] {sym} base (ADDLconst [off2] idx) mem)
@@ -10769,9 +10128,7 @@ func rewriteValue386_Op386ORLconstmodifyidx4(v *Value) bool {
                v.reset(Op386ORLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2 * 4)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        // match: (ORLconstmodifyidx4 [valoff1] {sym1} (LEAL [off2] {sym2} base) idx mem)
@@ -10794,9 +10151,7 @@ func rewriteValue386_Op386ORLconstmodifyidx4(v *Value) bool {
                v.reset(Op386ORLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        return false
@@ -10826,9 +10181,7 @@ func rewriteValue386_Op386ORLload(v *Value) bool {
                v.reset(Op386ORLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ORLload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -10851,9 +10204,7 @@ func rewriteValue386_Op386ORLload(v *Value) bool {
                v.reset(Op386ORLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ORLload [off1] {sym1} val (LEAL4 [off2] {sym2} ptr idx) mem)
@@ -10877,10 +10228,7 @@ func rewriteValue386_Op386ORLload(v *Value) bool {
                v.reset(Op386ORLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, ptr, idx, mem)
                return true
        }
        return false
@@ -10912,10 +10260,7 @@ func rewriteValue386_Op386ORLloadidx4(v *Value) bool {
                v.reset(Op386ORLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (ORLloadidx4 [off1] {sym} val base (ADDLconst [off2] idx) mem)
@@ -10938,10 +10283,7 @@ func rewriteValue386_Op386ORLloadidx4(v *Value) bool {
                v.reset(Op386ORLloadidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (ORLloadidx4 [off1] {sym1} val (LEAL [off2] {sym2} base) idx mem)
@@ -10965,10 +10307,7 @@ func rewriteValue386_Op386ORLloadidx4(v *Value) bool {
                v.reset(Op386ORLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        return false
@@ -10998,9 +10337,7 @@ func rewriteValue386_Op386ORLmodify(v *Value) bool {
                v.reset(Op386ORLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (ORLmodify [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -11023,9 +10360,7 @@ func rewriteValue386_Op386ORLmodify(v *Value) bool {
                v.reset(Op386ORLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -11057,10 +10392,7 @@ func rewriteValue386_Op386ORLmodifyidx4(v *Value) bool {
                v.reset(Op386ORLmodifyidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (ORLmodifyidx4 [off1] {sym} base (ADDLconst [off2] idx) val mem)
@@ -11083,10 +10415,7 @@ func rewriteValue386_Op386ORLmodifyidx4(v *Value) bool {
                v.reset(Op386ORLmodifyidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (ORLmodifyidx4 [off1] {sym1} (LEAL [off2] {sym2} base) idx val mem)
@@ -11110,10 +10439,7 @@ func rewriteValue386_Op386ORLmodifyidx4(v *Value) bool {
                v.reset(Op386ORLmodifyidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (ORLmodifyidx4 [off] {sym} ptr idx (MOVLconst [c]) mem)
@@ -11135,9 +10461,7 @@ func rewriteValue386_Op386ORLmodifyidx4(v *Value) bool {
                v.reset(Op386ORLconstmodifyidx4)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -11303,8 +10627,7 @@ func rewriteValue386_Op386SARL(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(Op386SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -11398,8 +10721,7 @@ func rewriteValue386_Op386SBBL(v *Value) bool {
                f := v_2
                v.reset(Op386SBBLconst)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(f)
+               v.AddArg2(x, f)
                return true
        }
        return false
@@ -12133,8 +11455,7 @@ func rewriteValue386_Op386SHLL(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(Op386SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -12233,8 +11554,7 @@ func rewriteValue386_Op386SHRL(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(Op386SHRL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -12359,9 +11679,7 @@ func rewriteValue386_Op386SUBL(v *Value) bool {
                v.reset(Op386SUBLload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (SUBL x l:(MOVLloadidx4 [off] {sym} ptr idx mem))
@@ -12384,10 +11702,7 @@ func rewriteValue386_Op386SUBL(v *Value) bool {
                v.reset(Op386SUBLloadidx4)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(x, ptr, idx, mem)
                return true
        }
        // match: (SUBL x x)
@@ -12473,9 +11788,7 @@ func rewriteValue386_Op386SUBLload(v *Value) bool {
                v.reset(Op386SUBLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBLload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -12498,9 +11811,7 @@ func rewriteValue386_Op386SUBLload(v *Value) bool {
                v.reset(Op386SUBLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBLload [off1] {sym1} val (LEAL4 [off2] {sym2} ptr idx) mem)
@@ -12524,10 +11835,7 @@ func rewriteValue386_Op386SUBLload(v *Value) bool {
                v.reset(Op386SUBLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, ptr, idx, mem)
                return true
        }
        return false
@@ -12559,10 +11867,7 @@ func rewriteValue386_Op386SUBLloadidx4(v *Value) bool {
                v.reset(Op386SUBLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (SUBLloadidx4 [off1] {sym} val base (ADDLconst [off2] idx) mem)
@@ -12585,10 +11890,7 @@ func rewriteValue386_Op386SUBLloadidx4(v *Value) bool {
                v.reset(Op386SUBLloadidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (SUBLloadidx4 [off1] {sym1} val (LEAL [off2] {sym2} base) idx mem)
@@ -12612,10 +11914,7 @@ func rewriteValue386_Op386SUBLloadidx4(v *Value) bool {
                v.reset(Op386SUBLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        return false
@@ -12645,9 +11944,7 @@ func rewriteValue386_Op386SUBLmodify(v *Value) bool {
                v.reset(Op386SUBLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SUBLmodify [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -12670,9 +11967,7 @@ func rewriteValue386_Op386SUBLmodify(v *Value) bool {
                v.reset(Op386SUBLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -12704,10 +11999,7 @@ func rewriteValue386_Op386SUBLmodifyidx4(v *Value) bool {
                v.reset(Op386SUBLmodifyidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (SUBLmodifyidx4 [off1] {sym} base (ADDLconst [off2] idx) val mem)
@@ -12730,10 +12022,7 @@ func rewriteValue386_Op386SUBLmodifyidx4(v *Value) bool {
                v.reset(Op386SUBLmodifyidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (SUBLmodifyidx4 [off1] {sym1} (LEAL [off2] {sym2} base) idx val mem)
@@ -12757,10 +12046,7 @@ func rewriteValue386_Op386SUBLmodifyidx4(v *Value) bool {
                v.reset(Op386SUBLmodifyidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (SUBLmodifyidx4 [off] {sym} ptr idx (MOVLconst [c]) mem)
@@ -12782,9 +12068,7 @@ func rewriteValue386_Op386SUBLmodifyidx4(v *Value) bool {
                v.reset(Op386ADDLconstmodifyidx4)
                v.AuxInt = makeValAndOff(-c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -12813,9 +12097,7 @@ func rewriteValue386_Op386SUBSD(v *Value) bool {
                v.reset(Op386SUBSDload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -12845,9 +12127,7 @@ func rewriteValue386_Op386SUBSDload(v *Value) bool {
                v.reset(Op386SUBSDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBSDload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -12870,9 +12150,7 @@ func rewriteValue386_Op386SUBSDload(v *Value) bool {
                v.reset(Op386SUBSDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        return false
@@ -12901,9 +12179,7 @@ func rewriteValue386_Op386SUBSS(v *Value) bool {
                v.reset(Op386SUBSSload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -12933,9 +12209,7 @@ func rewriteValue386_Op386SUBSSload(v *Value) bool {
                v.reset(Op386SUBSSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBSSload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -12958,9 +12232,7 @@ func rewriteValue386_Op386SUBSSload(v *Value) bool {
                v.reset(Op386SUBSSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        return false
@@ -13078,9 +12350,7 @@ func rewriteValue386_Op386XORL(v *Value) bool {
                        v.reset(Op386XORLload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -13106,10 +12376,7 @@ func rewriteValue386_Op386XORL(v *Value) bool {
                        v.reset(Op386XORLloadidx4)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg4(x, ptr, idx, mem)
                        return true
                }
                break
@@ -13194,8 +12461,7 @@ func rewriteValue386_Op386XORLconstmodify(v *Value) bool {
                v.reset(Op386XORLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (XORLconstmodify [valoff1] {sym1} (LEAL [off2] {sym2} base) mem)
@@ -13217,8 +12483,7 @@ func rewriteValue386_Op386XORLconstmodify(v *Value) bool {
                v.reset(Op386XORLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -13248,9 +12513,7 @@ func rewriteValue386_Op386XORLconstmodifyidx4(v *Value) bool {
                v.reset(Op386XORLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        // match: (XORLconstmodifyidx4 [valoff1] {sym} base (ADDLconst [off2] idx) mem)
@@ -13272,9 +12535,7 @@ func rewriteValue386_Op386XORLconstmodifyidx4(v *Value) bool {
                v.reset(Op386XORLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2 * 4)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        // match: (XORLconstmodifyidx4 [valoff1] {sym1} (LEAL [off2] {sym2} base) idx mem)
@@ -13297,9 +12558,7 @@ func rewriteValue386_Op386XORLconstmodifyidx4(v *Value) bool {
                v.reset(Op386XORLconstmodifyidx4)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(base, idx, mem)
                return true
        }
        return false
@@ -13329,9 +12588,7 @@ func rewriteValue386_Op386XORLload(v *Value) bool {
                v.reset(Op386XORLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (XORLload [off1] {sym1} val (LEAL [off2] {sym2} base) mem)
@@ -13354,9 +12611,7 @@ func rewriteValue386_Op386XORLload(v *Value) bool {
                v.reset(Op386XORLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (XORLload [off1] {sym1} val (LEAL4 [off2] {sym2} ptr idx) mem)
@@ -13380,10 +12635,7 @@ func rewriteValue386_Op386XORLload(v *Value) bool {
                v.reset(Op386XORLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, ptr, idx, mem)
                return true
        }
        return false
@@ -13415,10 +12667,7 @@ func rewriteValue386_Op386XORLloadidx4(v *Value) bool {
                v.reset(Op386XORLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (XORLloadidx4 [off1] {sym} val base (ADDLconst [off2] idx) mem)
@@ -13441,10 +12690,7 @@ func rewriteValue386_Op386XORLloadidx4(v *Value) bool {
                v.reset(Op386XORLloadidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        // match: (XORLloadidx4 [off1] {sym1} val (LEAL [off2] {sym2} base) idx mem)
@@ -13468,10 +12714,7 @@ func rewriteValue386_Op386XORLloadidx4(v *Value) bool {
                v.reset(Op386XORLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg4(val, base, idx, mem)
                return true
        }
        return false
@@ -13501,9 +12744,7 @@ func rewriteValue386_Op386XORLmodify(v *Value) bool {
                v.reset(Op386XORLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (XORLmodify [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -13526,9 +12767,7 @@ func rewriteValue386_Op386XORLmodify(v *Value) bool {
                v.reset(Op386XORLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -13560,10 +12799,7 @@ func rewriteValue386_Op386XORLmodifyidx4(v *Value) bool {
                v.reset(Op386XORLmodifyidx4)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (XORLmodifyidx4 [off1] {sym} base (ADDLconst [off2] idx) val mem)
@@ -13586,10 +12822,7 @@ func rewriteValue386_Op386XORLmodifyidx4(v *Value) bool {
                v.reset(Op386XORLmodifyidx4)
                v.AuxInt = off1 + off2*4
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (XORLmodifyidx4 [off1] {sym1} (LEAL [off2] {sym2} base) idx val mem)
@@ -13613,10 +12846,7 @@ func rewriteValue386_Op386XORLmodifyidx4(v *Value) bool {
                v.reset(Op386XORLmodifyidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(base, idx, val, mem)
                return true
        }
        // match: (XORLmodifyidx4 [off] {sym} ptr idx (MOVLconst [c]) mem)
@@ -13638,9 +12868,7 @@ func rewriteValue386_Op386XORLmodifyidx4(v *Value) bool {
                v.reset(Op386XORLconstmodifyidx4)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -13683,10 +12911,9 @@ func rewriteValue386_OpDiv8(v *Value) bool {
                v.reset(Op386DIVW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to16, typ.Int16)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to16, typ.Int16)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -13703,10 +12930,9 @@ func rewriteValue386_OpDiv8u(v *Value) bool {
                v.reset(Op386DIVWU)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to16, typ.UInt16)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to16, typ.UInt16)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -13721,8 +12947,7 @@ func rewriteValue386_OpEq16(v *Value) bool {
                y := v_1
                v.reset(Op386SETEQ)
                v0 := b.NewValue0(v.Pos, Op386CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13738,8 +12963,7 @@ func rewriteValue386_OpEq32(v *Value) bool {
                y := v_1
                v.reset(Op386SETEQ)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13755,8 +12979,7 @@ func rewriteValue386_OpEq32F(v *Value) bool {
                y := v_1
                v.reset(Op386SETEQF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13772,8 +12995,7 @@ func rewriteValue386_OpEq64F(v *Value) bool {
                y := v_1
                v.reset(Op386SETEQF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13789,8 +13011,7 @@ func rewriteValue386_OpEq8(v *Value) bool {
                y := v_1
                v.reset(Op386SETEQ)
                v0 := b.NewValue0(v.Pos, Op386CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13806,8 +13027,7 @@ func rewriteValue386_OpEqB(v *Value) bool {
                y := v_1
                v.reset(Op386SETEQ)
                v0 := b.NewValue0(v.Pos, Op386CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13823,8 +13043,7 @@ func rewriteValue386_OpEqPtr(v *Value) bool {
                y := v_1
                v.reset(Op386SETEQ)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13840,8 +13059,7 @@ func rewriteValue386_OpGeq32F(v *Value) bool {
                y := v_1
                v.reset(Op386SETGEF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13857,8 +13075,7 @@ func rewriteValue386_OpGeq64F(v *Value) bool {
                y := v_1
                v.reset(Op386SETGEF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13874,8 +13091,7 @@ func rewriteValue386_OpGreater32F(v *Value) bool {
                y := v_1
                v.reset(Op386SETGF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13891,8 +13107,7 @@ func rewriteValue386_OpGreater64F(v *Value) bool {
                y := v_1
                v.reset(Op386SETGF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13908,8 +13123,7 @@ func rewriteValue386_OpIsInBounds(v *Value) bool {
                len := v_1
                v.reset(Op386SETB)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -13923,8 +13137,7 @@ func rewriteValue386_OpIsNonNil(v *Value) bool {
                p := v_0
                v.reset(Op386SETNE)
                v0 := b.NewValue0(v.Pos, Op386TESTL, types.TypeFlags)
-               v0.AddArg(p)
-               v0.AddArg(p)
+               v0.AddArg2(p, p)
                v.AddArg(v0)
                return true
        }
@@ -13940,8 +13153,7 @@ func rewriteValue386_OpIsSliceInBounds(v *Value) bool {
                len := v_1
                v.reset(Op386SETBE)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -13957,8 +13169,7 @@ func rewriteValue386_OpLeq16(v *Value) bool {
                y := v_1
                v.reset(Op386SETLE)
                v0 := b.NewValue0(v.Pos, Op386CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13974,8 +13185,7 @@ func rewriteValue386_OpLeq16U(v *Value) bool {
                y := v_1
                v.reset(Op386SETBE)
                v0 := b.NewValue0(v.Pos, Op386CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13991,8 +13201,7 @@ func rewriteValue386_OpLeq32(v *Value) bool {
                y := v_1
                v.reset(Op386SETLE)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14008,8 +13217,7 @@ func rewriteValue386_OpLeq32F(v *Value) bool {
                y := v_1
                v.reset(Op386SETGEF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISS, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -14025,8 +13233,7 @@ func rewriteValue386_OpLeq32U(v *Value) bool {
                y := v_1
                v.reset(Op386SETBE)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14042,8 +13249,7 @@ func rewriteValue386_OpLeq64F(v *Value) bool {
                y := v_1
                v.reset(Op386SETGEF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISD, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -14059,8 +13265,7 @@ func rewriteValue386_OpLeq8(v *Value) bool {
                y := v_1
                v.reset(Op386SETLE)
                v0 := b.NewValue0(v.Pos, Op386CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14076,8 +13281,7 @@ func rewriteValue386_OpLeq8U(v *Value) bool {
                y := v_1
                v.reset(Op386SETBE)
                v0 := b.NewValue0(v.Pos, Op386CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14093,8 +13297,7 @@ func rewriteValue386_OpLess16(v *Value) bool {
                y := v_1
                v.reset(Op386SETL)
                v0 := b.NewValue0(v.Pos, Op386CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14110,8 +13313,7 @@ func rewriteValue386_OpLess16U(v *Value) bool {
                y := v_1
                v.reset(Op386SETB)
                v0 := b.NewValue0(v.Pos, Op386CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14127,8 +13329,7 @@ func rewriteValue386_OpLess32(v *Value) bool {
                y := v_1
                v.reset(Op386SETL)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14144,8 +13345,7 @@ func rewriteValue386_OpLess32F(v *Value) bool {
                y := v_1
                v.reset(Op386SETGF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISS, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -14161,8 +13361,7 @@ func rewriteValue386_OpLess32U(v *Value) bool {
                y := v_1
                v.reset(Op386SETB)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14178,8 +13377,7 @@ func rewriteValue386_OpLess64F(v *Value) bool {
                y := v_1
                v.reset(Op386SETGF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISD, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -14195,8 +13393,7 @@ func rewriteValue386_OpLess8(v *Value) bool {
                y := v_1
                v.reset(Op386SETL)
                v0 := b.NewValue0(v.Pos, Op386CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14212,8 +13409,7 @@ func rewriteValue386_OpLess8U(v *Value) bool {
                y := v_1
                v.reset(Op386SETB)
                v0 := b.NewValue0(v.Pos, Op386CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14232,8 +13428,7 @@ func rewriteValue386_OpLoad(v *Value) bool {
                        break
                }
                v.reset(Op386MOVLload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -14247,8 +13442,7 @@ func rewriteValue386_OpLoad(v *Value) bool {
                        break
                }
                v.reset(Op386MOVWload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -14262,8 +13456,7 @@ func rewriteValue386_OpLoad(v *Value) bool {
                        break
                }
                v.reset(Op386MOVBload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -14277,8 +13470,7 @@ func rewriteValue386_OpLoad(v *Value) bool {
                        break
                }
                v.reset(Op386MOVSSload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -14292,8 +13484,7 @@ func rewriteValue386_OpLoad(v *Value) bool {
                        break
                }
                v.reset(Op386MOVSDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -14327,15 +13518,13 @@ func rewriteValue386_OpLsh16x16(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPWconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh16x16 <t> x y)
@@ -14350,8 +13539,7 @@ func rewriteValue386_OpLsh16x16(v *Value) bool {
                }
                v.reset(Op386SHLL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14372,15 +13560,13 @@ func rewriteValue386_OpLsh16x32(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPLconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh16x32 <t> x y)
@@ -14395,8 +13581,7 @@ func rewriteValue386_OpLsh16x32(v *Value) bool {
                }
                v.reset(Op386SHLL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14454,15 +13639,13 @@ func rewriteValue386_OpLsh16x8(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPBconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh16x8 <t> x y)
@@ -14477,8 +13660,7 @@ func rewriteValue386_OpLsh16x8(v *Value) bool {
                }
                v.reset(Op386SHLL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14499,15 +13681,13 @@ func rewriteValue386_OpLsh32x16(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPWconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh32x16 <t> x y)
@@ -14522,8 +13702,7 @@ func rewriteValue386_OpLsh32x16(v *Value) bool {
                }
                v.reset(Op386SHLL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14544,15 +13723,13 @@ func rewriteValue386_OpLsh32x32(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPLconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh32x32 <t> x y)
@@ -14567,8 +13744,7 @@ func rewriteValue386_OpLsh32x32(v *Value) bool {
                }
                v.reset(Op386SHLL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14626,15 +13802,13 @@ func rewriteValue386_OpLsh32x8(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPBconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh32x8 <t> x y)
@@ -14649,8 +13823,7 @@ func rewriteValue386_OpLsh32x8(v *Value) bool {
                }
                v.reset(Op386SHLL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14671,15 +13844,13 @@ func rewriteValue386_OpLsh8x16(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPWconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh8x16 <t> x y)
@@ -14694,8 +13865,7 @@ func rewriteValue386_OpLsh8x16(v *Value) bool {
                }
                v.reset(Op386SHLL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14716,15 +13886,13 @@ func rewriteValue386_OpLsh8x32(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPLconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh8x32 <t> x y)
@@ -14739,8 +13907,7 @@ func rewriteValue386_OpLsh8x32(v *Value) bool {
                }
                v.reset(Op386SHLL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14798,15 +13965,13 @@ func rewriteValue386_OpLsh8x8(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPBconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh8x8 <t> x y)
@@ -14821,8 +13986,7 @@ func rewriteValue386_OpLsh8x8(v *Value) bool {
                }
                v.reset(Op386SHLL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14840,10 +14004,9 @@ func rewriteValue386_OpMod8(v *Value) bool {
                v.reset(Op386MODW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to16, typ.Int16)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to16, typ.Int16)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -14860,10 +14023,9 @@ func rewriteValue386_OpMod8u(v *Value) bool {
                v.reset(Op386MODWU)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to16, typ.UInt16)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to16, typ.UInt16)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -14896,12 +14058,9 @@ func rewriteValue386_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(Op386MOVBstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, Op386MOVBload, typ.UInt8)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] dst src mem)
@@ -14914,12 +14073,9 @@ func rewriteValue386_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(Op386MOVWstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, Op386MOVWload, typ.UInt16)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [4] dst src mem)
@@ -14932,12 +14088,9 @@ func rewriteValue386_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(Op386MOVLstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [3] dst src mem)
@@ -14951,20 +14104,14 @@ func rewriteValue386_OpMove(v *Value) bool {
                mem := v_2
                v.reset(Op386MOVBstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, Op386MOVBload, typ.UInt8)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, Op386MOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, Op386MOVWload, typ.UInt16)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [5] dst src mem)
@@ -14978,20 +14125,14 @@ func rewriteValue386_OpMove(v *Value) bool {
                mem := v_2
                v.reset(Op386MOVBstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, Op386MOVBload, typ.UInt8)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, Op386MOVLstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [6] dst src mem)
@@ -15005,20 +14146,14 @@ func rewriteValue386_OpMove(v *Value) bool {
                mem := v_2
                v.reset(Op386MOVWstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, Op386MOVWload, typ.UInt16)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, Op386MOVLstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [7] dst src mem)
@@ -15032,20 +14167,14 @@ func rewriteValue386_OpMove(v *Value) bool {
                mem := v_2
                v.reset(Op386MOVLstore)
                v.AuxInt = 3
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
                v0.AuxInt = 3
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, Op386MOVLstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [8] dst src mem)
@@ -15059,20 +14188,14 @@ func rewriteValue386_OpMove(v *Value) bool {
                mem := v_2
                v.reset(Op386MOVLstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, Op386MOVLstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -15091,19 +14214,14 @@ func rewriteValue386_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386ADDLconst, dst.Type)
                v0.AuxInt = s % 4
                v0.AddArg(dst)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, Op386ADDLconst, src.Type)
                v1.AuxInt = s % 4
                v1.AddArg(src)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, Op386MOVLstore, types.TypeMem)
-               v2.AddArg(dst)
                v3 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
-               v3.AddArg(src)
-               v3.AddArg(mem)
-               v2.AddArg(v3)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v3.AddArg2(src, mem)
+               v2.AddArg3(dst, v3, mem)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -15119,9 +14237,7 @@ func rewriteValue386_OpMove(v *Value) bool {
                }
                v.reset(Op386DUFFCOPY)
                v.AuxInt = 10 * (128 - s/4)
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -15136,12 +14252,9 @@ func rewriteValue386_OpMove(v *Value) bool {
                        break
                }
                v.reset(Op386REPMOVSL)
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, Op386MOVLconst, typ.UInt32)
                v0.AuxInt = s / 4
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(dst, src, v0, mem)
                return true
        }
        return false
@@ -15160,10 +14273,9 @@ func rewriteValue386_OpNeg32F(v *Value) bool {
                        break
                }
                v.reset(Op386PXOR)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386MOVSSconst, typ.Float32)
                v0.AuxInt = auxFrom32F(float32(math.Copysign(0, -1)))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Neg32F x)
@@ -15194,10 +14306,9 @@ func rewriteValue386_OpNeg64F(v *Value) bool {
                        break
                }
                v.reset(Op386PXOR)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386MOVSDconst, typ.Float64)
                v0.AuxInt = auxFrom64F(math.Copysign(0, -1))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Neg64F x)
@@ -15225,8 +14336,7 @@ func rewriteValue386_OpNeq16(v *Value) bool {
                y := v_1
                v.reset(Op386SETNE)
                v0 := b.NewValue0(v.Pos, Op386CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15242,8 +14352,7 @@ func rewriteValue386_OpNeq32(v *Value) bool {
                y := v_1
                v.reset(Op386SETNE)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15259,8 +14368,7 @@ func rewriteValue386_OpNeq32F(v *Value) bool {
                y := v_1
                v.reset(Op386SETNEF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15276,8 +14384,7 @@ func rewriteValue386_OpNeq64F(v *Value) bool {
                y := v_1
                v.reset(Op386SETNEF)
                v0 := b.NewValue0(v.Pos, Op386UCOMISD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15293,8 +14400,7 @@ func rewriteValue386_OpNeq8(v *Value) bool {
                y := v_1
                v.reset(Op386SETNE)
                v0 := b.NewValue0(v.Pos, Op386CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15310,8 +14416,7 @@ func rewriteValue386_OpNeqB(v *Value) bool {
                y := v_1
                v.reset(Op386SETNE)
                v0 := b.NewValue0(v.Pos, Op386CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15327,8 +14432,7 @@ func rewriteValue386_OpNeqPtr(v *Value) bool {
                y := v_1
                v.reset(Op386SETNE)
                v0 := b.NewValue0(v.Pos, Op386CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15362,9 +14466,7 @@ func rewriteValue386_OpPanicBounds(v *Value) bool {
                }
                v.reset(Op386LoweredPanicBoundsA)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -15380,9 +14482,7 @@ func rewriteValue386_OpPanicBounds(v *Value) bool {
                }
                v.reset(Op386LoweredPanicBoundsB)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -15398,9 +14498,7 @@ func rewriteValue386_OpPanicBounds(v *Value) bool {
                }
                v.reset(Op386LoweredPanicBoundsC)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        return false
@@ -15424,10 +14522,7 @@ func rewriteValue386_OpPanicExtend(v *Value) bool {
                }
                v.reset(Op386LoweredPanicExtendA)
                v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg4(hi, lo, y, mem)
                return true
        }
        // match: (PanicExtend [kind] hi lo y mem)
@@ -15444,10 +14539,7 @@ func rewriteValue386_OpPanicExtend(v *Value) bool {
                }
                v.reset(Op386LoweredPanicExtendB)
                v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg4(hi, lo, y, mem)
                return true
        }
        // match: (PanicExtend [kind] hi lo y mem)
@@ -15464,10 +14556,7 @@ func rewriteValue386_OpPanicExtend(v *Value) bool {
                }
                v.reset(Op386LoweredPanicExtendC)
                v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg4(hi, lo, y, mem)
                return true
        }
        return false
@@ -15542,15 +14631,13 @@ func rewriteValue386_OpRsh16Ux16(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPWconst, types.TypeFlags)
                v2.AuxInt = 16
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh16Ux16 <t> x y)
@@ -15565,8 +14652,7 @@ func rewriteValue386_OpRsh16Ux16(v *Value) bool {
                }
                v.reset(Op386SHRW)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -15587,15 +14673,13 @@ func rewriteValue386_OpRsh16Ux32(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPLconst, types.TypeFlags)
                v2.AuxInt = 16
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh16Ux32 <t> x y)
@@ -15610,8 +14694,7 @@ func rewriteValue386_OpRsh16Ux32(v *Value) bool {
                }
                v.reset(Op386SHRW)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -15669,15 +14752,13 @@ func rewriteValue386_OpRsh16Ux8(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPBconst, types.TypeFlags)
                v2.AuxInt = 16
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh16Ux8 <t> x y)
@@ -15692,8 +14773,7 @@ func rewriteValue386_OpRsh16Ux8(v *Value) bool {
                }
                v.reset(Op386SHRW)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -15714,9 +14794,7 @@ func rewriteValue386_OpRsh16x16(v *Value) bool {
                }
                v.reset(Op386SARW)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, Op386NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, Op386SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, Op386CMPWconst, types.TypeFlags)
@@ -15724,8 +14802,8 @@ func rewriteValue386_OpRsh16x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x16 <t> x y)
@@ -15738,8 +14816,7 @@ func rewriteValue386_OpRsh16x16(v *Value) bool {
                        break
                }
                v.reset(Op386SARW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -15760,9 +14837,7 @@ func rewriteValue386_OpRsh16x32(v *Value) bool {
                }
                v.reset(Op386SARW)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, Op386NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, Op386SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, Op386CMPLconst, types.TypeFlags)
@@ -15770,8 +14845,8 @@ func rewriteValue386_OpRsh16x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x32 <t> x y)
@@ -15784,8 +14859,7 @@ func rewriteValue386_OpRsh16x32(v *Value) bool {
                        break
                }
                v.reset(Op386SARW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -15845,9 +14919,7 @@ func rewriteValue386_OpRsh16x8(v *Value) bool {
                }
                v.reset(Op386SARW)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, Op386NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, Op386SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, Op386CMPBconst, types.TypeFlags)
@@ -15855,8 +14927,8 @@ func rewriteValue386_OpRsh16x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x8 <t> x y)
@@ -15869,8 +14941,7 @@ func rewriteValue386_OpRsh16x8(v *Value) bool {
                        break
                }
                v.reset(Op386SARW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -15891,15 +14962,13 @@ func rewriteValue386_OpRsh32Ux16(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPWconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh32Ux16 <t> x y)
@@ -15914,8 +14983,7 @@ func rewriteValue386_OpRsh32Ux16(v *Value) bool {
                }
                v.reset(Op386SHRL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -15936,15 +15004,13 @@ func rewriteValue386_OpRsh32Ux32(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPLconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh32Ux32 <t> x y)
@@ -15959,8 +15025,7 @@ func rewriteValue386_OpRsh32Ux32(v *Value) bool {
                }
                v.reset(Op386SHRL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16018,15 +15083,13 @@ func rewriteValue386_OpRsh32Ux8(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPBconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh32Ux8 <t> x y)
@@ -16041,8 +15104,7 @@ func rewriteValue386_OpRsh32Ux8(v *Value) bool {
                }
                v.reset(Op386SHRL)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16063,9 +15125,7 @@ func rewriteValue386_OpRsh32x16(v *Value) bool {
                }
                v.reset(Op386SARL)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, Op386NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, Op386SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, Op386CMPWconst, types.TypeFlags)
@@ -16073,8 +15133,8 @@ func rewriteValue386_OpRsh32x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x16 <t> x y)
@@ -16087,8 +15147,7 @@ func rewriteValue386_OpRsh32x16(v *Value) bool {
                        break
                }
                v.reset(Op386SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16109,9 +15168,7 @@ func rewriteValue386_OpRsh32x32(v *Value) bool {
                }
                v.reset(Op386SARL)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, Op386NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, Op386SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, Op386CMPLconst, types.TypeFlags)
@@ -16119,8 +15176,8 @@ func rewriteValue386_OpRsh32x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x32 <t> x y)
@@ -16133,8 +15190,7 @@ func rewriteValue386_OpRsh32x32(v *Value) bool {
                        break
                }
                v.reset(Op386SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16194,9 +15250,7 @@ func rewriteValue386_OpRsh32x8(v *Value) bool {
                }
                v.reset(Op386SARL)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, Op386NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, Op386SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, Op386CMPBconst, types.TypeFlags)
@@ -16204,8 +15258,8 @@ func rewriteValue386_OpRsh32x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x8 <t> x y)
@@ -16218,8 +15272,7 @@ func rewriteValue386_OpRsh32x8(v *Value) bool {
                        break
                }
                v.reset(Op386SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16240,15 +15293,13 @@ func rewriteValue386_OpRsh8Ux16(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHRB, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPWconst, types.TypeFlags)
                v2.AuxInt = 8
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh8Ux16 <t> x y)
@@ -16263,8 +15314,7 @@ func rewriteValue386_OpRsh8Ux16(v *Value) bool {
                }
                v.reset(Op386SHRB)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16285,15 +15335,13 @@ func rewriteValue386_OpRsh8Ux32(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHRB, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPLconst, types.TypeFlags)
                v2.AuxInt = 8
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh8Ux32 <t> x y)
@@ -16308,8 +15356,7 @@ func rewriteValue386_OpRsh8Ux32(v *Value) bool {
                }
                v.reset(Op386SHRB)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16367,15 +15414,13 @@ func rewriteValue386_OpRsh8Ux8(v *Value) bool {
                }
                v.reset(Op386ANDL)
                v0 := b.NewValue0(v.Pos, Op386SHRB, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, Op386SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, Op386CMPBconst, types.TypeFlags)
                v2.AuxInt = 8
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh8Ux8 <t> x y)
@@ -16390,8 +15435,7 @@ func rewriteValue386_OpRsh8Ux8(v *Value) bool {
                }
                v.reset(Op386SHRB)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16412,9 +15456,7 @@ func rewriteValue386_OpRsh8x16(v *Value) bool {
                }
                v.reset(Op386SARB)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, Op386NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, Op386SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, Op386CMPWconst, types.TypeFlags)
@@ -16422,8 +15464,8 @@ func rewriteValue386_OpRsh8x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8x16 <t> x y)
@@ -16436,8 +15478,7 @@ func rewriteValue386_OpRsh8x16(v *Value) bool {
                        break
                }
                v.reset(Op386SARB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16458,9 +15499,7 @@ func rewriteValue386_OpRsh8x32(v *Value) bool {
                }
                v.reset(Op386SARB)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, Op386NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, Op386SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, Op386CMPLconst, types.TypeFlags)
@@ -16468,8 +15507,8 @@ func rewriteValue386_OpRsh8x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8x32 <t> x y)
@@ -16482,8 +15521,7 @@ func rewriteValue386_OpRsh8x32(v *Value) bool {
                        break
                }
                v.reset(Op386SARB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16543,9 +15581,7 @@ func rewriteValue386_OpRsh8x8(v *Value) bool {
                }
                v.reset(Op386SARB)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, Op386ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, Op386NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, Op386SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, Op386CMPBconst, types.TypeFlags)
@@ -16553,8 +15589,8 @@ func rewriteValue386_OpRsh8x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8x8 <t> x y)
@@ -16567,8 +15603,7 @@ func rewriteValue386_OpRsh8x8(v *Value) bool {
                        break
                }
                v.reset(Op386SARB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -16588,8 +15623,7 @@ func rewriteValue386_OpSelect0(v *Value) bool {
                v.reset(OpSelect0)
                v.Type = typ.UInt32
                v0 := b.NewValue0(v.Pos, Op386MULLU, types.NewTuple(typ.UInt32, types.TypeFlags))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -16610,8 +15644,7 @@ func rewriteValue386_OpSelect1(v *Value) bool {
                v.reset(Op386SETO)
                v0 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, Op386MULLU, types.NewTuple(typ.UInt32, types.TypeFlags))
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -16662,9 +15695,7 @@ func rewriteValue386_OpStore(v *Value) bool {
                        break
                }
                v.reset(Op386MOVSDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -16679,9 +15710,7 @@ func rewriteValue386_OpStore(v *Value) bool {
                        break
                }
                v.reset(Op386MOVSSstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -16696,9 +15725,7 @@ func rewriteValue386_OpStore(v *Value) bool {
                        break
                }
                v.reset(Op386MOVLstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -16713,9 +15740,7 @@ func rewriteValue386_OpStore(v *Value) bool {
                        break
                }
                v.reset(Op386MOVWstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -16730,9 +15755,7 @@ func rewriteValue386_OpStore(v *Value) bool {
                        break
                }
                v.reset(Op386MOVBstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -16765,8 +15788,7 @@ func rewriteValue386_OpZero(v *Value) bool {
                mem := v_1
                v.reset(Op386MOVBstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [2] destptr mem)
@@ -16779,8 +15801,7 @@ func rewriteValue386_OpZero(v *Value) bool {
                mem := v_1
                v.reset(Op386MOVWstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [4] destptr mem)
@@ -16793,8 +15814,7 @@ func rewriteValue386_OpZero(v *Value) bool {
                mem := v_1
                v.reset(Op386MOVLstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [3] destptr mem)
@@ -16807,12 +15827,10 @@ func rewriteValue386_OpZero(v *Value) bool {
                mem := v_1
                v.reset(Op386MOVBstoreconst)
                v.AuxInt = makeValAndOff(0, 2)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, Op386MOVWstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [5] destptr mem)
@@ -16825,12 +15843,10 @@ func rewriteValue386_OpZero(v *Value) bool {
                mem := v_1
                v.reset(Op386MOVBstoreconst)
                v.AuxInt = makeValAndOff(0, 4)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, Op386MOVLstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [6] destptr mem)
@@ -16843,12 +15859,10 @@ func rewriteValue386_OpZero(v *Value) bool {
                mem := v_1
                v.reset(Op386MOVWstoreconst)
                v.AuxInt = makeValAndOff(0, 4)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, Op386MOVLstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [7] destptr mem)
@@ -16861,12 +15875,10 @@ func rewriteValue386_OpZero(v *Value) bool {
                mem := v_1
                v.reset(Op386MOVLstoreconst)
                v.AuxInt = makeValAndOff(0, 3)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, Op386MOVLstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -16884,12 +15896,10 @@ func rewriteValue386_OpZero(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386ADDLconst, typ.UInt32)
                v0.AuxInt = s % 4
                v0.AddArg(destptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, Op386MOVLstoreconst, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(destptr)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(destptr, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Zero [8] destptr mem)
@@ -16902,12 +15912,10 @@ func rewriteValue386_OpZero(v *Value) bool {
                mem := v_1
                v.reset(Op386MOVLstoreconst)
                v.AuxInt = makeValAndOff(0, 4)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, Op386MOVLstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [12] destptr mem)
@@ -16920,16 +15928,13 @@ func rewriteValue386_OpZero(v *Value) bool {
                mem := v_1
                v.reset(Op386MOVLstoreconst)
                v.AuxInt = makeValAndOff(0, 8)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, Op386MOVLstoreconst, types.TypeMem)
                v0.AuxInt = makeValAndOff(0, 4)
-               v0.AddArg(destptr)
                v1 := b.NewValue0(v.Pos, Op386MOVLstoreconst, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(destptr)
-               v1.AddArg(mem)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(destptr, mem)
+               v0.AddArg2(destptr, v1)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [16] destptr mem)
@@ -16942,20 +15947,16 @@ func rewriteValue386_OpZero(v *Value) bool {
                mem := v_1
                v.reset(Op386MOVLstoreconst)
                v.AuxInt = makeValAndOff(0, 12)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, Op386MOVLstoreconst, types.TypeMem)
                v0.AuxInt = makeValAndOff(0, 8)
-               v0.AddArg(destptr)
                v1 := b.NewValue0(v.Pos, Op386MOVLstoreconst, types.TypeMem)
                v1.AuxInt = makeValAndOff(0, 4)
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, Op386MOVLstoreconst, types.TypeMem)
                v2.AuxInt = 0
-               v2.AddArg(destptr)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v2.AddArg2(destptr, mem)
+               v1.AddArg2(destptr, v2)
+               v0.AddArg2(destptr, v1)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -16970,11 +15971,9 @@ func rewriteValue386_OpZero(v *Value) bool {
                }
                v.reset(Op386DUFFZERO)
                v.AuxInt = 1 * (128 - s/4)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, Op386MOVLconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(destptr, v0, mem)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -16988,14 +15987,11 @@ func rewriteValue386_OpZero(v *Value) bool {
                        break
                }
                v.reset(Op386REPSTOSL)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, Op386MOVLconst, typ.UInt32)
                v0.AuxInt = s / 4
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, Op386MOVLconst, typ.UInt32)
                v1.AuxInt = 0
-               v.AddArg(v1)
-               v.AddArg(mem)
+               v.AddArg4(destptr, v0, v1, mem)
                return true
        }
        return false
@@ -17292,8 +16288,7 @@ func rewriteBlock386(b *Block) bool {
                        cond := b.Controls[0]
                        b.Reset(Block386NE)
                        v0 := b.NewValue0(cond.Pos, Op386TESTB, types.TypeFlags)
-                       v0.AddArg(cond)
-                       v0.AddArg(cond)
+                       v0.AddArg2(cond, cond)
                        b.AddControl(v0)
                        return true
                }
index cce1b2d05acfb36d791d266ff966ebbc8b246479..f82eae99ab559bd05bb41a35d10e2629b72d0cce 100644 (file)
@@ -37,8 +37,7 @@ func rewriteValue386splitload_Op386CMPBconstload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386MOVBload, typ.UInt8)
                v0.AuxInt = offOnly(vo)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -61,10 +60,8 @@ func rewriteValue386splitload_Op386CMPBload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386MOVBload, typ.UInt8)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v0.AddArg2(ptr, mem)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -85,8 +82,7 @@ func rewriteValue386splitload_Op386CMPLconstload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
                v0.AuxInt = offOnly(vo)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -109,10 +105,8 @@ func rewriteValue386splitload_Op386CMPLload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v0.AddArg2(ptr, mem)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -133,8 +127,7 @@ func rewriteValue386splitload_Op386CMPWconstload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386MOVWload, typ.UInt16)
                v0.AuxInt = offOnly(vo)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -157,10 +150,8 @@ func rewriteValue386splitload_Op386CMPWload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, Op386MOVWload, typ.UInt16)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v0.AddArg2(ptr, mem)
+               v.AddArg2(v0, x)
                return true
        }
 }
index c0329c15287b31f146020d240f9328a54db42717..566a7aaf66ab69c8e7c82bc8e7e8ab37f4bfdd72 100644 (file)
@@ -1265,8 +1265,7 @@ func rewriteValueAMD64_OpAMD64ADCQ(v *Value) bool {
                        }
                        v.reset(OpAMD64ADCQconst)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(carry)
+                       v.AddArg2(x, carry)
                        return true
                }
                break
@@ -1280,8 +1279,7 @@ func rewriteValueAMD64_OpAMD64ADCQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64ADDQcarry)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -1407,8 +1405,7 @@ func rewriteValueAMD64_OpAMD64ADDL(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpAMD64LEAL8)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1423,8 +1420,7 @@ func rewriteValueAMD64_OpAMD64ADDL(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpAMD64LEAL4)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1439,8 +1435,7 @@ func rewriteValueAMD64_OpAMD64ADDL(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpAMD64LEAL2)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1458,8 +1453,7 @@ func rewriteValueAMD64_OpAMD64ADDL(v *Value) bool {
                                continue
                        }
                        v.reset(OpAMD64LEAL2)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1481,8 +1475,7 @@ func rewriteValueAMD64_OpAMD64ADDL(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(OpAMD64LEAL2)
-                               v.AddArg(y)
-                               v.AddArg(x)
+                               v.AddArg2(y, x)
                                return true
                        }
                }
@@ -1500,8 +1493,7 @@ func rewriteValueAMD64_OpAMD64ADDL(v *Value) bool {
                        y := v_1
                        v.reset(OpAMD64LEAL1)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1524,8 +1516,7 @@ func rewriteValueAMD64_OpAMD64ADDL(v *Value) bool {
                        v.reset(OpAMD64LEAL1)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1540,8 +1531,7 @@ func rewriteValueAMD64_OpAMD64ADDL(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpAMD64SUBL)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1566,9 +1556,7 @@ func rewriteValueAMD64_OpAMD64ADDL(v *Value) bool {
                        v.reset(OpAMD64ADDLload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -1588,8 +1576,7 @@ func rewriteValueAMD64_OpAMD64ADDLconst(v *Value) bool {
                x := v_0.Args[0]
                v.reset(OpAMD64LEAL1)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDLconst [c] (SHLLconst [1] x))
@@ -1602,8 +1589,7 @@ func rewriteValueAMD64_OpAMD64ADDLconst(v *Value) bool {
                x := v_0.Args[0]
                v.reset(OpAMD64LEAL1)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (ADDLconst [c] (LEAL [d] {s} x))
@@ -1644,8 +1630,7 @@ func rewriteValueAMD64_OpAMD64ADDLconst(v *Value) bool {
                v.reset(OpAMD64LEAL1)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDLconst [c] (LEAL2 [d] {s} x y))
@@ -1666,8 +1651,7 @@ func rewriteValueAMD64_OpAMD64ADDLconst(v *Value) bool {
                v.reset(OpAMD64LEAL2)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDLconst [c] (LEAL4 [d] {s} x y))
@@ -1688,8 +1672,7 @@ func rewriteValueAMD64_OpAMD64ADDLconst(v *Value) bool {
                v.reset(OpAMD64LEAL4)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDLconst [c] (LEAL8 [d] {s} x y))
@@ -1710,8 +1693,7 @@ func rewriteValueAMD64_OpAMD64ADDLconst(v *Value) bool {
                v.reset(OpAMD64LEAL8)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDLconst [c] x)
@@ -1790,8 +1772,7 @@ func rewriteValueAMD64_OpAMD64ADDLconstmodify(v *Value) bool {
                v.reset(OpAMD64ADDLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (ADDLconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -1813,8 +1794,7 @@ func rewriteValueAMD64_OpAMD64ADDLconstmodify(v *Value) bool {
                v.reset(OpAMD64ADDLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -1844,9 +1824,7 @@ func rewriteValueAMD64_OpAMD64ADDLload(v *Value) bool {
                v.reset(OpAMD64ADDLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDLload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -1869,9 +1847,7 @@ func rewriteValueAMD64_OpAMD64ADDLload(v *Value) bool {
                v.reset(OpAMD64ADDLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
@@ -1890,10 +1866,9 @@ func rewriteValueAMD64_OpAMD64ADDLload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64ADDL)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -1921,9 +1896,7 @@ func rewriteValueAMD64_OpAMD64ADDLmodify(v *Value) bool {
                v.reset(OpAMD64ADDLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (ADDLmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -1946,9 +1919,7 @@ func rewriteValueAMD64_OpAMD64ADDLmodify(v *Value) bool {
                v.reset(OpAMD64ADDLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -2030,8 +2001,7 @@ func rewriteValueAMD64_OpAMD64ADDQ(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpAMD64LEAQ8)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2046,8 +2016,7 @@ func rewriteValueAMD64_OpAMD64ADDQ(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpAMD64LEAQ4)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2062,8 +2031,7 @@ func rewriteValueAMD64_OpAMD64ADDQ(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpAMD64LEAQ2)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2081,8 +2049,7 @@ func rewriteValueAMD64_OpAMD64ADDQ(v *Value) bool {
                                continue
                        }
                        v.reset(OpAMD64LEAQ2)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2104,8 +2071,7 @@ func rewriteValueAMD64_OpAMD64ADDQ(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(OpAMD64LEAQ2)
-                               v.AddArg(y)
-                               v.AddArg(x)
+                               v.AddArg2(y, x)
                                return true
                        }
                }
@@ -2123,8 +2089,7 @@ func rewriteValueAMD64_OpAMD64ADDQ(v *Value) bool {
                        y := v_1
                        v.reset(OpAMD64LEAQ1)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2147,8 +2112,7 @@ func rewriteValueAMD64_OpAMD64ADDQ(v *Value) bool {
                        v.reset(OpAMD64LEAQ1)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2163,8 +2127,7 @@ func rewriteValueAMD64_OpAMD64ADDQ(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpAMD64SUBQ)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2189,9 +2152,7 @@ func rewriteValueAMD64_OpAMD64ADDQ(v *Value) bool {
                        v.reset(OpAMD64ADDQload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -2236,8 +2197,7 @@ func rewriteValueAMD64_OpAMD64ADDQconst(v *Value) bool {
                x := v_0.Args[0]
                v.reset(OpAMD64LEAQ1)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDQconst [c] (SHLQconst [1] x))
@@ -2250,8 +2210,7 @@ func rewriteValueAMD64_OpAMD64ADDQconst(v *Value) bool {
                x := v_0.Args[0]
                v.reset(OpAMD64LEAQ1)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (ADDQconst [c] (LEAQ [d] {s} x))
@@ -2292,8 +2251,7 @@ func rewriteValueAMD64_OpAMD64ADDQconst(v *Value) bool {
                v.reset(OpAMD64LEAQ1)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDQconst [c] (LEAQ2 [d] {s} x y))
@@ -2314,8 +2272,7 @@ func rewriteValueAMD64_OpAMD64ADDQconst(v *Value) bool {
                v.reset(OpAMD64LEAQ2)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDQconst [c] (LEAQ4 [d] {s} x y))
@@ -2336,8 +2293,7 @@ func rewriteValueAMD64_OpAMD64ADDQconst(v *Value) bool {
                v.reset(OpAMD64LEAQ4)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDQconst [c] (LEAQ8 [d] {s} x y))
@@ -2358,8 +2314,7 @@ func rewriteValueAMD64_OpAMD64ADDQconst(v *Value) bool {
                v.reset(OpAMD64LEAQ8)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDQconst [0] x)
@@ -2440,8 +2395,7 @@ func rewriteValueAMD64_OpAMD64ADDQconstmodify(v *Value) bool {
                v.reset(OpAMD64ADDQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (ADDQconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -2463,8 +2417,7 @@ func rewriteValueAMD64_OpAMD64ADDQconstmodify(v *Value) bool {
                v.reset(OpAMD64ADDQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -2494,9 +2447,7 @@ func rewriteValueAMD64_OpAMD64ADDQload(v *Value) bool {
                v.reset(OpAMD64ADDQload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDQload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -2519,9 +2470,7 @@ func rewriteValueAMD64_OpAMD64ADDQload(v *Value) bool {
                v.reset(OpAMD64ADDQload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
@@ -2540,10 +2489,9 @@ func rewriteValueAMD64_OpAMD64ADDQload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64ADDQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -2571,9 +2519,7 @@ func rewriteValueAMD64_OpAMD64ADDQmodify(v *Value) bool {
                v.reset(OpAMD64ADDQmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (ADDQmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -2596,9 +2542,7 @@ func rewriteValueAMD64_OpAMD64ADDQmodify(v *Value) bool {
                v.reset(OpAMD64ADDQmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -2626,9 +2570,7 @@ func rewriteValueAMD64_OpAMD64ADDSD(v *Value) bool {
                        v.reset(OpAMD64ADDSDload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -2660,9 +2602,7 @@ func rewriteValueAMD64_OpAMD64ADDSDload(v *Value) bool {
                v.reset(OpAMD64ADDSDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDSDload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -2685,9 +2625,7 @@ func rewriteValueAMD64_OpAMD64ADDSDload(v *Value) bool {
                v.reset(OpAMD64ADDSDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDSDload x [off] {sym} ptr (MOVQstore [off] {sym} ptr y _))
@@ -2706,10 +2644,9 @@ func rewriteValueAMD64_OpAMD64ADDSDload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64ADDSD)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQi2f, typ.Float64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -2737,9 +2674,7 @@ func rewriteValueAMD64_OpAMD64ADDSS(v *Value) bool {
                        v.reset(OpAMD64ADDSSload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -2771,9 +2706,7 @@ func rewriteValueAMD64_OpAMD64ADDSSload(v *Value) bool {
                v.reset(OpAMD64ADDSSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDSSload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -2796,9 +2729,7 @@ func rewriteValueAMD64_OpAMD64ADDSSload(v *Value) bool {
                v.reset(OpAMD64ADDSSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ADDSSload x [off] {sym} ptr (MOVLstore [off] {sym} ptr y _))
@@ -2817,10 +2748,9 @@ func rewriteValueAMD64_OpAMD64ADDSSload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64ADDSS)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLi2f, typ.Float32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -2846,8 +2776,7 @@ func rewriteValueAMD64_OpAMD64ANDL(v *Value) bool {
                        }
                        x := v_1
                        v.reset(OpAMD64BTRL)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2920,9 +2849,7 @@ func rewriteValueAMD64_OpAMD64ANDL(v *Value) bool {
                        v.reset(OpAMD64ANDLload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -3056,8 +2983,7 @@ func rewriteValueAMD64_OpAMD64ANDLconstmodify(v *Value) bool {
                v.reset(OpAMD64ANDLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (ANDLconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -3079,8 +3005,7 @@ func rewriteValueAMD64_OpAMD64ANDLconstmodify(v *Value) bool {
                v.reset(OpAMD64ANDLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -3110,9 +3035,7 @@ func rewriteValueAMD64_OpAMD64ANDLload(v *Value) bool {
                v.reset(OpAMD64ANDLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ANDLload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -3135,9 +3058,7 @@ func rewriteValueAMD64_OpAMD64ANDLload(v *Value) bool {
                v.reset(OpAMD64ANDLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ANDLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
@@ -3156,10 +3077,9 @@ func rewriteValueAMD64_OpAMD64ANDLload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64ANDL)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -3187,9 +3107,7 @@ func rewriteValueAMD64_OpAMD64ANDLmodify(v *Value) bool {
                v.reset(OpAMD64ANDLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (ANDLmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -3212,9 +3130,7 @@ func rewriteValueAMD64_OpAMD64ANDLmodify(v *Value) bool {
                v.reset(OpAMD64ANDLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -3240,8 +3156,7 @@ func rewriteValueAMD64_OpAMD64ANDQ(v *Value) bool {
                        }
                        x := v_1
                        v.reset(OpAMD64BTRQ)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3318,9 +3233,7 @@ func rewriteValueAMD64_OpAMD64ANDQ(v *Value) bool {
                        v.reset(OpAMD64ANDQload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -3461,8 +3374,7 @@ func rewriteValueAMD64_OpAMD64ANDQconstmodify(v *Value) bool {
                v.reset(OpAMD64ANDQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (ANDQconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -3484,8 +3396,7 @@ func rewriteValueAMD64_OpAMD64ANDQconstmodify(v *Value) bool {
                v.reset(OpAMD64ANDQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -3515,9 +3426,7 @@ func rewriteValueAMD64_OpAMD64ANDQload(v *Value) bool {
                v.reset(OpAMD64ANDQload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ANDQload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -3540,9 +3449,7 @@ func rewriteValueAMD64_OpAMD64ANDQload(v *Value) bool {
                v.reset(OpAMD64ANDQload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ANDQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
@@ -3561,10 +3468,9 @@ func rewriteValueAMD64_OpAMD64ANDQload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64ANDQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -3592,9 +3498,7 @@ func rewriteValueAMD64_OpAMD64ANDQmodify(v *Value) bool {
                v.reset(OpAMD64ANDQmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (ANDQmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -3617,9 +3521,7 @@ func rewriteValueAMD64_OpAMD64ANDQmodify(v *Value) bool {
                v.reset(OpAMD64ANDQmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -3738,8 +3640,7 @@ func rewriteValueAMD64_OpAMD64BTCLconstmodify(v *Value) bool {
                v.reset(OpAMD64BTCLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (BTCLconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -3761,8 +3662,7 @@ func rewriteValueAMD64_OpAMD64BTCLconstmodify(v *Value) bool {
                v.reset(OpAMD64BTCLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -3790,9 +3690,7 @@ func rewriteValueAMD64_OpAMD64BTCLmodify(v *Value) bool {
                v.reset(OpAMD64BTCLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (BTCLmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -3815,9 +3713,7 @@ func rewriteValueAMD64_OpAMD64BTCLmodify(v *Value) bool {
                v.reset(OpAMD64BTCLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -3887,8 +3783,7 @@ func rewriteValueAMD64_OpAMD64BTCQconstmodify(v *Value) bool {
                v.reset(OpAMD64BTCQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (BTCQconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -3910,8 +3805,7 @@ func rewriteValueAMD64_OpAMD64BTCQconstmodify(v *Value) bool {
                v.reset(OpAMD64BTCQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -3939,9 +3833,7 @@ func rewriteValueAMD64_OpAMD64BTCQmodify(v *Value) bool {
                v.reset(OpAMD64BTCQmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (BTCQmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -3964,9 +3856,7 @@ func rewriteValueAMD64_OpAMD64BTCQmodify(v *Value) bool {
                v.reset(OpAMD64BTCQmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -4022,8 +3912,7 @@ func rewriteValueAMD64_OpAMD64BTLconst(v *Value) bool {
                y := s.Args[1]
                x := s.Args[0]
                v.reset(OpAMD64BTQ)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (BTLconst [c] (SHRLconst [d] x))
@@ -4075,8 +3964,7 @@ func rewriteValueAMD64_OpAMD64BTLconst(v *Value) bool {
                y := s.Args[1]
                x := s.Args[0]
                v.reset(OpAMD64BTL)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        return false
@@ -4132,8 +4020,7 @@ func rewriteValueAMD64_OpAMD64BTQconst(v *Value) bool {
                y := s.Args[1]
                x := s.Args[0]
                v.reset(OpAMD64BTQ)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        return false
@@ -4229,8 +4116,7 @@ func rewriteValueAMD64_OpAMD64BTRLconstmodify(v *Value) bool {
                v.reset(OpAMD64BTRLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (BTRLconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -4252,8 +4138,7 @@ func rewriteValueAMD64_OpAMD64BTRLconstmodify(v *Value) bool {
                v.reset(OpAMD64BTRLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -4281,9 +4166,7 @@ func rewriteValueAMD64_OpAMD64BTRLmodify(v *Value) bool {
                v.reset(OpAMD64BTRLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (BTRLmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -4306,9 +4189,7 @@ func rewriteValueAMD64_OpAMD64BTRLmodify(v *Value) bool {
                v.reset(OpAMD64BTRLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -4404,8 +4285,7 @@ func rewriteValueAMD64_OpAMD64BTRQconstmodify(v *Value) bool {
                v.reset(OpAMD64BTRQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (BTRQconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -4427,8 +4307,7 @@ func rewriteValueAMD64_OpAMD64BTRQconstmodify(v *Value) bool {
                v.reset(OpAMD64BTRQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -4456,9 +4335,7 @@ func rewriteValueAMD64_OpAMD64BTRQmodify(v *Value) bool {
                v.reset(OpAMD64BTRQmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (BTRQmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -4481,9 +4358,7 @@ func rewriteValueAMD64_OpAMD64BTRQmodify(v *Value) bool {
                v.reset(OpAMD64BTRQmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -4579,8 +4454,7 @@ func rewriteValueAMD64_OpAMD64BTSLconstmodify(v *Value) bool {
                v.reset(OpAMD64BTSLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (BTSLconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -4602,8 +4476,7 @@ func rewriteValueAMD64_OpAMD64BTSLconstmodify(v *Value) bool {
                v.reset(OpAMD64BTSLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -4631,9 +4504,7 @@ func rewriteValueAMD64_OpAMD64BTSLmodify(v *Value) bool {
                v.reset(OpAMD64BTSLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (BTSLmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -4656,9 +4527,7 @@ func rewriteValueAMD64_OpAMD64BTSLmodify(v *Value) bool {
                v.reset(OpAMD64BTSLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -4754,8 +4623,7 @@ func rewriteValueAMD64_OpAMD64BTSQconstmodify(v *Value) bool {
                v.reset(OpAMD64BTSQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (BTSQconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -4777,8 +4645,7 @@ func rewriteValueAMD64_OpAMD64BTSQconstmodify(v *Value) bool {
                v.reset(OpAMD64BTSQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -4806,9 +4673,7 @@ func rewriteValueAMD64_OpAMD64BTSQmodify(v *Value) bool {
                v.reset(OpAMD64BTSQmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (BTSQmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -4831,9 +4696,7 @@ func rewriteValueAMD64_OpAMD64BTSQmodify(v *Value) bool {
                v.reset(OpAMD64BTSQmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -4852,9 +4715,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCC(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVLLS)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVLCC _ x (FlagEQ))
@@ -4933,9 +4794,7 @@ func rewriteValueAMD64_OpAMD64CMOVLCS(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVLHI)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVLCS y _ (FlagEQ))
@@ -5014,9 +4873,7 @@ func rewriteValueAMD64_OpAMD64CMOVLEQ(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVLEQ)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVLEQ _ x (FlagEQ))
@@ -5095,9 +4952,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGE(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVLLE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVLGE _ x (FlagEQ))
@@ -5176,9 +5031,7 @@ func rewriteValueAMD64_OpAMD64CMOVLGT(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVLLT)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVLGT y _ (FlagEQ))
@@ -5257,9 +5110,7 @@ func rewriteValueAMD64_OpAMD64CMOVLHI(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVLCS)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVLHI y _ (FlagEQ))
@@ -5338,9 +5189,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLE(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVLGE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVLLE _ x (FlagEQ))
@@ -5419,9 +5268,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLS(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVLCC)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVLLS _ x (FlagEQ))
@@ -5500,9 +5347,7 @@ func rewriteValueAMD64_OpAMD64CMOVLLT(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVLGT)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVLLT y _ (FlagEQ))
@@ -5581,9 +5426,7 @@ func rewriteValueAMD64_OpAMD64CMOVLNE(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVLNE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVLNE y _ (FlagEQ))
@@ -5662,9 +5505,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCC(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVQLS)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVQCC _ x (FlagEQ))
@@ -5743,9 +5584,7 @@ func rewriteValueAMD64_OpAMD64CMOVQCS(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVQHI)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVQCS y _ (FlagEQ))
@@ -5824,9 +5663,7 @@ func rewriteValueAMD64_OpAMD64CMOVQEQ(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVQEQ)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVQEQ _ x (FlagEQ))
@@ -5930,9 +5767,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGE(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVQLE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVQGE _ x (FlagEQ))
@@ -6011,9 +5846,7 @@ func rewriteValueAMD64_OpAMD64CMOVQGT(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVQLT)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVQGT y _ (FlagEQ))
@@ -6092,9 +5925,7 @@ func rewriteValueAMD64_OpAMD64CMOVQHI(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVQCS)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVQHI y _ (FlagEQ))
@@ -6173,9 +6004,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLE(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVQGE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVQLE _ x (FlagEQ))
@@ -6254,9 +6083,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLS(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVQCC)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVQLS _ x (FlagEQ))
@@ -6335,9 +6162,7 @@ func rewriteValueAMD64_OpAMD64CMOVQLT(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVQGT)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVQLT y _ (FlagEQ))
@@ -6416,9 +6241,7 @@ func rewriteValueAMD64_OpAMD64CMOVQNE(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVQNE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVQNE y _ (FlagEQ))
@@ -6497,9 +6320,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCC(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVWLS)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVWCC _ x (FlagEQ))
@@ -6578,9 +6399,7 @@ func rewriteValueAMD64_OpAMD64CMOVWCS(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVWHI)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVWCS y _ (FlagEQ))
@@ -6659,9 +6478,7 @@ func rewriteValueAMD64_OpAMD64CMOVWEQ(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVWEQ)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVWEQ _ x (FlagEQ))
@@ -6740,9 +6557,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGE(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVWLE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVWGE _ x (FlagEQ))
@@ -6821,9 +6636,7 @@ func rewriteValueAMD64_OpAMD64CMOVWGT(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVWLT)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVWGT y _ (FlagEQ))
@@ -6902,9 +6715,7 @@ func rewriteValueAMD64_OpAMD64CMOVWHI(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVWCS)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVWHI y _ (FlagEQ))
@@ -6983,9 +6794,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLE(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVWGE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVWLE _ x (FlagEQ))
@@ -7064,9 +6873,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLS(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVWCC)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVWLS _ x (FlagEQ))
@@ -7145,9 +6952,7 @@ func rewriteValueAMD64_OpAMD64CMOVWLT(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVWGT)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVWLT y _ (FlagEQ))
@@ -7226,9 +7031,7 @@ func rewriteValueAMD64_OpAMD64CMOVWNE(v *Value) bool {
                }
                cond := v_2.Args[0]
                v.reset(OpAMD64CMOVWNE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cond)
+               v.AddArg3(x, y, cond)
                return true
        }
        // match: (CMOVWNE y _ (FlagEQ))
@@ -7336,8 +7139,7 @@ func rewriteValueAMD64_OpAMD64CMPB(v *Value) bool {
                }
                v.reset(OpAMD64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -7360,9 +7162,7 @@ func rewriteValueAMD64_OpAMD64CMPB(v *Value) bool {
                v.reset(OpAMD64CMPBload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (CMPB x l:(MOVBload {sym} [off] ptr mem))
@@ -7385,9 +7185,7 @@ func rewriteValueAMD64_OpAMD64CMPB(v *Value) bool {
                v0 := b.NewValue0(l.Pos, OpAMD64CMPBload, types.TypeFlags)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(x)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, x, mem)
                v.AddArg(v0)
                return true
        }
@@ -7495,8 +7293,7 @@ func rewriteValueAMD64_OpAMD64CMPBconst(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpAMD64TESTB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPBconst (ANDLconst [c] x) [0])
@@ -7520,8 +7317,7 @@ func rewriteValueAMD64_OpAMD64CMPBconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64TESTB)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (CMPBconst l:(MOVBload {sym} [off] ptr mem) [c])
@@ -7546,8 +7342,7 @@ func rewriteValueAMD64_OpAMD64CMPBconst(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -7573,8 +7368,7 @@ func rewriteValueAMD64_OpAMD64CMPBconstload(v *Value) bool {
                v.reset(OpAMD64CMPBconstload)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (CMPBconstload [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -7596,8 +7390,7 @@ func rewriteValueAMD64_OpAMD64CMPBconstload(v *Value) bool {
                v.reset(OpAMD64CMPBconstload)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -7625,9 +7418,7 @@ func rewriteValueAMD64_OpAMD64CMPBload(v *Value) bool {
                v.reset(OpAMD64CMPBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (CMPBload [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -7650,9 +7441,7 @@ func rewriteValueAMD64_OpAMD64CMPBload(v *Value) bool {
                v.reset(OpAMD64CMPBload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (CMPBload {sym} [off] ptr (MOVLconst [c]) mem)
@@ -7673,8 +7462,7 @@ func rewriteValueAMD64_OpAMD64CMPBload(v *Value) bool {
                v.reset(OpAMD64CMPBconstload)
                v.AuxInt = makeValAndOff(int64(int8(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -7722,8 +7510,7 @@ func rewriteValueAMD64_OpAMD64CMPL(v *Value) bool {
                }
                v.reset(OpAMD64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPL, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -7746,9 +7533,7 @@ func rewriteValueAMD64_OpAMD64CMPL(v *Value) bool {
                v.reset(OpAMD64CMPLload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (CMPL x l:(MOVLload {sym} [off] ptr mem))
@@ -7771,9 +7556,7 @@ func rewriteValueAMD64_OpAMD64CMPL(v *Value) bool {
                v0 := b.NewValue0(l.Pos, OpAMD64CMPLload, types.TypeFlags)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(x)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, x, mem)
                v.AddArg(v0)
                return true
        }
@@ -7896,8 +7679,7 @@ func rewriteValueAMD64_OpAMD64CMPLconst(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpAMD64TESTL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPLconst (ANDLconst [c] x) [0])
@@ -7921,8 +7703,7 @@ func rewriteValueAMD64_OpAMD64CMPLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64TESTL)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (CMPLconst l:(MOVLload {sym} [off] ptr mem) [c])
@@ -7947,8 +7728,7 @@ func rewriteValueAMD64_OpAMD64CMPLconst(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -7974,8 +7754,7 @@ func rewriteValueAMD64_OpAMD64CMPLconstload(v *Value) bool {
                v.reset(OpAMD64CMPLconstload)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (CMPLconstload [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -7997,8 +7776,7 @@ func rewriteValueAMD64_OpAMD64CMPLconstload(v *Value) bool {
                v.reset(OpAMD64CMPLconstload)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -8026,9 +7804,7 @@ func rewriteValueAMD64_OpAMD64CMPLload(v *Value) bool {
                v.reset(OpAMD64CMPLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (CMPLload [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -8051,9 +7827,7 @@ func rewriteValueAMD64_OpAMD64CMPLload(v *Value) bool {
                v.reset(OpAMD64CMPLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (CMPLload {sym} [off] ptr (MOVLconst [c]) mem)
@@ -8074,8 +7848,7 @@ func rewriteValueAMD64_OpAMD64CMPLload(v *Value) bool {
                v.reset(OpAMD64CMPLconstload)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -8131,8 +7904,7 @@ func rewriteValueAMD64_OpAMD64CMPQ(v *Value) bool {
                }
                v.reset(OpAMD64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -8245,9 +8017,7 @@ func rewriteValueAMD64_OpAMD64CMPQ(v *Value) bool {
                v.reset(OpAMD64CMPQload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (CMPQ x l:(MOVQload {sym} [off] ptr mem))
@@ -8270,9 +8040,7 @@ func rewriteValueAMD64_OpAMD64CMPQ(v *Value) bool {
                v0 := b.NewValue0(l.Pos, OpAMD64CMPQload, types.TypeFlags)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(x)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, x, mem)
                v.AddArg(v0)
                return true
        }
@@ -8477,8 +8245,7 @@ func rewriteValueAMD64_OpAMD64CMPQconst(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpAMD64TESTQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPQconst (ANDQconst [c] x) [0])
@@ -8502,8 +8269,7 @@ func rewriteValueAMD64_OpAMD64CMPQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64TESTQ)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (CMPQconst l:(MOVQload {sym} [off] ptr mem) [c])
@@ -8528,8 +8294,7 @@ func rewriteValueAMD64_OpAMD64CMPQconst(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -8555,8 +8320,7 @@ func rewriteValueAMD64_OpAMD64CMPQconstload(v *Value) bool {
                v.reset(OpAMD64CMPQconstload)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (CMPQconstload [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -8578,8 +8342,7 @@ func rewriteValueAMD64_OpAMD64CMPQconstload(v *Value) bool {
                v.reset(OpAMD64CMPQconstload)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -8607,9 +8370,7 @@ func rewriteValueAMD64_OpAMD64CMPQload(v *Value) bool {
                v.reset(OpAMD64CMPQload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (CMPQload [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -8632,9 +8393,7 @@ func rewriteValueAMD64_OpAMD64CMPQload(v *Value) bool {
                v.reset(OpAMD64CMPQload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (CMPQload {sym} [off] ptr (MOVQconst [c]) mem)
@@ -8655,8 +8414,7 @@ func rewriteValueAMD64_OpAMD64CMPQload(v *Value) bool {
                v.reset(OpAMD64CMPQconstload)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -8704,8 +8462,7 @@ func rewriteValueAMD64_OpAMD64CMPW(v *Value) bool {
                }
                v.reset(OpAMD64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPW, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -8728,9 +8485,7 @@ func rewriteValueAMD64_OpAMD64CMPW(v *Value) bool {
                v.reset(OpAMD64CMPWload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (CMPW x l:(MOVWload {sym} [off] ptr mem))
@@ -8753,9 +8508,7 @@ func rewriteValueAMD64_OpAMD64CMPW(v *Value) bool {
                v0 := b.NewValue0(l.Pos, OpAMD64CMPWload, types.TypeFlags)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(x)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, x, mem)
                v.AddArg(v0)
                return true
        }
@@ -8863,8 +8616,7 @@ func rewriteValueAMD64_OpAMD64CMPWconst(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpAMD64TESTW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPWconst (ANDLconst [c] x) [0])
@@ -8888,8 +8640,7 @@ func rewriteValueAMD64_OpAMD64CMPWconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64TESTW)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (CMPWconst l:(MOVWload {sym} [off] ptr mem) [c])
@@ -8914,8 +8665,7 @@ func rewriteValueAMD64_OpAMD64CMPWconst(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = makeValAndOff(c, off)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -8941,8 +8691,7 @@ func rewriteValueAMD64_OpAMD64CMPWconstload(v *Value) bool {
                v.reset(OpAMD64CMPWconstload)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (CMPWconstload [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -8964,8 +8713,7 @@ func rewriteValueAMD64_OpAMD64CMPWconstload(v *Value) bool {
                v.reset(OpAMD64CMPWconstload)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -8993,9 +8741,7 @@ func rewriteValueAMD64_OpAMD64CMPWload(v *Value) bool {
                v.reset(OpAMD64CMPWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (CMPWload [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -9018,9 +8764,7 @@ func rewriteValueAMD64_OpAMD64CMPWload(v *Value) bool {
                v.reset(OpAMD64CMPWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (CMPWload {sym} [off] ptr (MOVLconst [c]) mem)
@@ -9041,8 +8785,7 @@ func rewriteValueAMD64_OpAMD64CMPWload(v *Value) bool {
                v.reset(OpAMD64CMPWconstload)
                v.AuxInt = makeValAndOff(int64(int16(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -9072,10 +8815,7 @@ func rewriteValueAMD64_OpAMD64CMPXCHGLlock(v *Value) bool {
                v.reset(OpAMD64CMPXCHGLlock)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(old)
-               v.AddArg(new_)
-               v.AddArg(mem)
+               v.AddArg4(ptr, old, new_, mem)
                return true
        }
        return false
@@ -9105,10 +8845,7 @@ func rewriteValueAMD64_OpAMD64CMPXCHGQlock(v *Value) bool {
                v.reset(OpAMD64CMPXCHGQlock)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(old)
-               v.AddArg(new_)
-               v.AddArg(mem)
+               v.AddArg4(ptr, old, new_, mem)
                return true
        }
        return false
@@ -9135,9 +8872,7 @@ func rewriteValueAMD64_OpAMD64DIVSD(v *Value) bool {
                v.reset(OpAMD64DIVSDload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -9165,9 +8900,7 @@ func rewriteValueAMD64_OpAMD64DIVSDload(v *Value) bool {
                v.reset(OpAMD64DIVSDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (DIVSDload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -9190,9 +8923,7 @@ func rewriteValueAMD64_OpAMD64DIVSDload(v *Value) bool {
                v.reset(OpAMD64DIVSDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        return false
@@ -9219,9 +8950,7 @@ func rewriteValueAMD64_OpAMD64DIVSS(v *Value) bool {
                v.reset(OpAMD64DIVSSload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -9249,9 +8978,7 @@ func rewriteValueAMD64_OpAMD64DIVSSload(v *Value) bool {
                v.reset(OpAMD64DIVSSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (DIVSSload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -9274,9 +9001,7 @@ func rewriteValueAMD64_OpAMD64DIVSSload(v *Value) bool {
                v.reset(OpAMD64DIVSSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        return false
@@ -9294,8 +9019,7 @@ func rewriteValueAMD64_OpAMD64HMULL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64HMULL)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        return false
@@ -9313,8 +9037,7 @@ func rewriteValueAMD64_OpAMD64HMULLU(v *Value) bool {
                        break
                }
                v.reset(OpAMD64HMULLU)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        return false
@@ -9332,8 +9055,7 @@ func rewriteValueAMD64_OpAMD64HMULQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64HMULQ)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        return false
@@ -9351,8 +9073,7 @@ func rewriteValueAMD64_OpAMD64HMULQU(v *Value) bool {
                        break
                }
                v.reset(OpAMD64HMULQU)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        return false
@@ -9400,8 +9121,7 @@ func rewriteValueAMD64_OpAMD64LEAL(v *Value) bool {
                        v.reset(OpAMD64LEAL1)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9430,8 +9150,7 @@ func rewriteValueAMD64_OpAMD64LEAL1(v *Value) bool {
                        v.reset(OpAMD64LEAL1)
                        v.AuxInt = c + d
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9450,8 +9169,7 @@ func rewriteValueAMD64_OpAMD64LEAL1(v *Value) bool {
                        v.reset(OpAMD64LEAL2)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9470,8 +9188,7 @@ func rewriteValueAMD64_OpAMD64LEAL1(v *Value) bool {
                        v.reset(OpAMD64LEAL4)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9490,8 +9207,7 @@ func rewriteValueAMD64_OpAMD64LEAL1(v *Value) bool {
                        v.reset(OpAMD64LEAL8)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9519,8 +9235,7 @@ func rewriteValueAMD64_OpAMD64LEAL2(v *Value) bool {
                v.reset(OpAMD64LEAL2)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL2 [c] {s} x (ADDLconst [d] y))
@@ -9541,8 +9256,7 @@ func rewriteValueAMD64_OpAMD64LEAL2(v *Value) bool {
                v.reset(OpAMD64LEAL2)
                v.AuxInt = c + 2*d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL2 [c] {s} x (SHLLconst [1] y))
@@ -9558,8 +9272,7 @@ func rewriteValueAMD64_OpAMD64LEAL2(v *Value) bool {
                v.reset(OpAMD64LEAL4)
                v.AuxInt = c
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL2 [c] {s} x (SHLLconst [2] y))
@@ -9575,8 +9288,7 @@ func rewriteValueAMD64_OpAMD64LEAL2(v *Value) bool {
                v.reset(OpAMD64LEAL8)
                v.AuxInt = c
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -9602,8 +9314,7 @@ func rewriteValueAMD64_OpAMD64LEAL4(v *Value) bool {
                v.reset(OpAMD64LEAL4)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL4 [c] {s} x (ADDLconst [d] y))
@@ -9624,8 +9335,7 @@ func rewriteValueAMD64_OpAMD64LEAL4(v *Value) bool {
                v.reset(OpAMD64LEAL4)
                v.AuxInt = c + 4*d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL4 [c] {s} x (SHLLconst [1] y))
@@ -9641,8 +9351,7 @@ func rewriteValueAMD64_OpAMD64LEAL4(v *Value) bool {
                v.reset(OpAMD64LEAL8)
                v.AuxInt = c
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -9668,8 +9377,7 @@ func rewriteValueAMD64_OpAMD64LEAL8(v *Value) bool {
                v.reset(OpAMD64LEAL8)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAL8 [c] {s} x (ADDLconst [d] y))
@@ -9690,8 +9398,7 @@ func rewriteValueAMD64_OpAMD64LEAL8(v *Value) bool {
                v.reset(OpAMD64LEAL8)
                v.AuxInt = c + 8*d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -9739,8 +9446,7 @@ func rewriteValueAMD64_OpAMD64LEAQ(v *Value) bool {
                        v.reset(OpAMD64LEAQ1)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9785,8 +9491,7 @@ func rewriteValueAMD64_OpAMD64LEAQ(v *Value) bool {
                v.reset(OpAMD64LEAQ1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ [off1] {sym1} (LEAQ2 [off2] {sym2} x y))
@@ -9808,8 +9513,7 @@ func rewriteValueAMD64_OpAMD64LEAQ(v *Value) bool {
                v.reset(OpAMD64LEAQ2)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ [off1] {sym1} (LEAQ4 [off2] {sym2} x y))
@@ -9831,8 +9535,7 @@ func rewriteValueAMD64_OpAMD64LEAQ(v *Value) bool {
                v.reset(OpAMD64LEAQ4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ [off1] {sym1} (LEAQ8 [off2] {sym2} x y))
@@ -9854,8 +9557,7 @@ func rewriteValueAMD64_OpAMD64LEAQ(v *Value) bool {
                v.reset(OpAMD64LEAQ8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -9882,8 +9584,7 @@ func rewriteValueAMD64_OpAMD64LEAQ1(v *Value) bool {
                        v.reset(OpAMD64LEAQ1)
                        v.AuxInt = c + d
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9902,8 +9603,7 @@ func rewriteValueAMD64_OpAMD64LEAQ1(v *Value) bool {
                        v.reset(OpAMD64LEAQ2)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9922,8 +9622,7 @@ func rewriteValueAMD64_OpAMD64LEAQ1(v *Value) bool {
                        v.reset(OpAMD64LEAQ4)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9942,8 +9641,7 @@ func rewriteValueAMD64_OpAMD64LEAQ1(v *Value) bool {
                        v.reset(OpAMD64LEAQ8)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9968,8 +9666,7 @@ func rewriteValueAMD64_OpAMD64LEAQ1(v *Value) bool {
                        v.reset(OpAMD64LEAQ1)
                        v.AuxInt = off1 + off2
                        v.Aux = mergeSym(sym1, sym2)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9987,8 +9684,7 @@ func rewriteValueAMD64_OpAMD64LEAQ1(v *Value) bool {
                        break
                }
                v.reset(OpAMD64ADDQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10014,8 +9710,7 @@ func rewriteValueAMD64_OpAMD64LEAQ2(v *Value) bool {
                v.reset(OpAMD64LEAQ2)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ2 [c] {s} x (ADDQconst [d] y))
@@ -10036,8 +9731,7 @@ func rewriteValueAMD64_OpAMD64LEAQ2(v *Value) bool {
                v.reset(OpAMD64LEAQ2)
                v.AuxInt = c + 2*d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ2 [c] {s} x (SHLQconst [1] y))
@@ -10053,8 +9747,7 @@ func rewriteValueAMD64_OpAMD64LEAQ2(v *Value) bool {
                v.reset(OpAMD64LEAQ4)
                v.AuxInt = c
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ2 [c] {s} x (SHLQconst [2] y))
@@ -10070,8 +9763,7 @@ func rewriteValueAMD64_OpAMD64LEAQ2(v *Value) bool {
                v.reset(OpAMD64LEAQ8)
                v.AuxInt = c
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ2 [off1] {sym1} (LEAQ [off2] {sym2} x) y)
@@ -10093,8 +9785,7 @@ func rewriteValueAMD64_OpAMD64LEAQ2(v *Value) bool {
                v.reset(OpAMD64LEAQ2)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10120,8 +9811,7 @@ func rewriteValueAMD64_OpAMD64LEAQ4(v *Value) bool {
                v.reset(OpAMD64LEAQ4)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ4 [c] {s} x (ADDQconst [d] y))
@@ -10142,8 +9832,7 @@ func rewriteValueAMD64_OpAMD64LEAQ4(v *Value) bool {
                v.reset(OpAMD64LEAQ4)
                v.AuxInt = c + 4*d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ4 [c] {s} x (SHLQconst [1] y))
@@ -10159,8 +9848,7 @@ func rewriteValueAMD64_OpAMD64LEAQ4(v *Value) bool {
                v.reset(OpAMD64LEAQ8)
                v.AuxInt = c
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ4 [off1] {sym1} (LEAQ [off2] {sym2} x) y)
@@ -10182,8 +9870,7 @@ func rewriteValueAMD64_OpAMD64LEAQ4(v *Value) bool {
                v.reset(OpAMD64LEAQ4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10209,8 +9896,7 @@ func rewriteValueAMD64_OpAMD64LEAQ8(v *Value) bool {
                v.reset(OpAMD64LEAQ8)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ8 [c] {s} x (ADDQconst [d] y))
@@ -10231,8 +9917,7 @@ func rewriteValueAMD64_OpAMD64LEAQ8(v *Value) bool {
                v.reset(OpAMD64LEAQ8)
                v.AuxInt = c + 8*d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (LEAQ8 [off1] {sym1} (LEAQ [off2] {sym2} x) y)
@@ -10254,8 +9939,7 @@ func rewriteValueAMD64_OpAMD64LEAQ8(v *Value) bool {
                v.reset(OpAMD64LEAQ8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10284,8 +9968,7 @@ func rewriteValueAMD64_OpAMD64MOVBQSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBQSX x:(MOVWload [off] {sym} ptr mem))
@@ -10309,8 +9992,7 @@ func rewriteValueAMD64_OpAMD64MOVBQSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBQSX x:(MOVLload [off] {sym} ptr mem))
@@ -10334,8 +10016,7 @@ func rewriteValueAMD64_OpAMD64MOVBQSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBQSX x:(MOVQload [off] {sym} ptr mem))
@@ -10359,8 +10040,7 @@ func rewriteValueAMD64_OpAMD64MOVBQSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBQSX (ANDLconst [c] x))
@@ -10437,8 +10117,7 @@ func rewriteValueAMD64_OpAMD64MOVBQSXload(v *Value) bool {
                v.reset(OpAMD64MOVBQSXload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -10467,8 +10146,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBQZX x:(MOVWload [off] {sym} ptr mem))
@@ -10492,8 +10170,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBQZX x:(MOVLload [off] {sym} ptr mem))
@@ -10517,8 +10194,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBQZX x:(MOVQload [off] {sym} ptr mem))
@@ -10542,8 +10218,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBQZX x)
@@ -10581,9 +10256,7 @@ func rewriteValueAMD64_OpAMD64MOVBQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBQZX (ANDLconst [c] x))
@@ -10633,8 +10306,7 @@ func rewriteValueAMD64_OpAMD64MOVBatomicload(v *Value) bool {
                v.reset(OpAMD64MOVBatomicload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBatomicload [off1] {sym1} (LEAQ [off2] {sym2} ptr) mem)
@@ -10656,8 +10328,7 @@ func rewriteValueAMD64_OpAMD64MOVBatomicload(v *Value) bool {
                v.reset(OpAMD64MOVBatomicload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -10705,8 +10376,7 @@ func rewriteValueAMD64_OpAMD64MOVBload(v *Value) bool {
                v.reset(OpAMD64MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -10728,8 +10398,7 @@ func rewriteValueAMD64_OpAMD64MOVBload(v *Value) bool {
                v.reset(OpAMD64MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVBload [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) mem)
@@ -10752,9 +10421,7 @@ func rewriteValueAMD64_OpAMD64MOVBload(v *Value) bool {
                v.reset(OpAMD64MOVBloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBload [off] {sym} (ADDQ ptr idx) mem)
@@ -10779,9 +10446,7 @@ func rewriteValueAMD64_OpAMD64MOVBload(v *Value) bool {
                        v.reset(OpAMD64MOVBloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -10805,8 +10470,7 @@ func rewriteValueAMD64_OpAMD64MOVBload(v *Value) bool {
                v.reset(OpAMD64MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVBload [off1] {sym} (ADDLconst [off2] ptr) mem)
@@ -10827,8 +10491,7 @@ func rewriteValueAMD64_OpAMD64MOVBload(v *Value) bool {
                v.reset(OpAMD64MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off] {sym} (SB) _)
@@ -10870,9 +10533,7 @@ func rewriteValueAMD64_OpAMD64MOVBloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVBloadidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -10897,9 +10558,7 @@ func rewriteValueAMD64_OpAMD64MOVBloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVBloadidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -10923,8 +10582,7 @@ func rewriteValueAMD64_OpAMD64MOVBloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVBload)
                        v.AuxInt = i + c
                        v.Aux = s
-                       v.AddArg(p)
-                       v.AddArg(mem)
+                       v.AddArg2(p, mem)
                        return true
                }
                break
@@ -10956,9 +10614,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64SETLstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr y:(SETLE x) mem)
@@ -10980,9 +10636,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64SETLEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr y:(SETG x) mem)
@@ -11004,9 +10658,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64SETGstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr y:(SETGE x) mem)
@@ -11028,9 +10680,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64SETGEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr y:(SETEQ x) mem)
@@ -11052,9 +10702,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64SETEQstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr y:(SETNE x) mem)
@@ -11076,9 +10724,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64SETNEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr y:(SETB x) mem)
@@ -11100,9 +10746,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64SETBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr y:(SETBE x) mem)
@@ -11124,9 +10768,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64SETBEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr y:(SETA x) mem)
@@ -11148,9 +10790,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64SETAstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr y:(SETAE x) mem)
@@ -11172,9 +10812,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64SETAEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBQSX x) mem)
@@ -11191,9 +10829,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBQZX x) mem)
@@ -11210,9 +10846,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym} (ADDQconst [off2] ptr) val mem)
@@ -11234,9 +10868,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVLconst [c]) mem)
@@ -11257,8 +10889,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstoreconst)
                v.AuxInt = makeValAndOff(int64(int8(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVQconst [c]) mem)
@@ -11279,8 +10910,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstoreconst)
                v.AuxInt = makeValAndOff(int64(int8(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -11303,9 +10933,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) val mem)
@@ -11329,10 +10957,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} (ADDQ ptr idx) val mem)
@@ -11358,10 +10983,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                        v.reset(OpAMD64MOVBstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -11389,12 +11011,10 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x0.Pos, OpAMD64ROLWconst, w.Type)
                v0.AuxInt = 8
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p w x2:(MOVBstore [i-1] {s} p (SHRLconst [8] w) x1:(MOVBstore [i-2] {s} p (SHRLconst [16] w) x0:(MOVBstore [i-3] {s} p (SHRLconst [24] w) mem))))
@@ -11444,11 +11064,9 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = i - 3
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x0.Pos, OpAMD64BSWAPL, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p w x6:(MOVBstore [i-1] {s} p (SHRQconst [8] w) x5:(MOVBstore [i-2] {s} p (SHRQconst [16] w) x4:(MOVBstore [i-3] {s} p (SHRQconst [24] w) x3:(MOVBstore [i-4] {s} p (SHRQconst [32] w) x2:(MOVBstore [i-5] {s} p (SHRQconst [40] w) x1:(MOVBstore [i-6] {s} p (SHRQconst [48] w) x0:(MOVBstore [i-7] {s} p (SHRQconst [56] w) mem))))))))
@@ -11546,11 +11164,9 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = i - 7
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x0.Pos, OpAMD64BSWAPQ, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SHRWconst [8] w) x:(MOVBstore [i-1] {s} p w mem))
@@ -11575,9 +11191,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SHRLconst [8] w) x:(MOVBstore [i-1] {s} p w mem))
@@ -11602,9 +11216,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SHRQconst [8] w) x:(MOVBstore [i-1] {s} p w mem))
@@ -11629,9 +11241,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p w x:(MOVBstore [i+1] {s} p (SHRWconst [8] w) mem))
@@ -11657,9 +11267,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p w x:(MOVBstore [i+1] {s} p (SHRLconst [8] w) mem))
@@ -11685,9 +11293,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p w x:(MOVBstore [i+1] {s} p (SHRQconst [8] w) mem))
@@ -11713,9 +11319,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SHRLconst [j] w) x:(MOVBstore [i-1] {s} p w0:(SHRLconst [j-8] w) mem))
@@ -11745,9 +11349,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SHRQconst [j] w) x:(MOVBstore [i-1] {s} p w0:(SHRQconst [j-8] w) mem))
@@ -11777,9 +11379,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p x1:(MOVBload [j] {s2} p2 mem) mem2:(MOVBstore [i-1] {s} p x2:(MOVBload [j-1] {s2} p2 mem) mem))
@@ -11816,14 +11416,11 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x2.Pos, OpAMD64MOVWload, typ.UInt16)
                v0.AuxInt = j - 1
                v0.Aux = s2
-               v0.AddArg(p2)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(p2, mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -11846,9 +11443,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym} (ADDLconst [off2] ptr) val mem)
@@ -11870,9 +11465,7 @@ func rewriteValueAMD64_OpAMD64MOVBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -11898,8 +11491,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVBstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstoreconst [sc] {sym1} (LEAQ [off] {sym2} ptr) mem)
@@ -11921,8 +11513,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVBstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstoreconst [x] {sym1} (LEAQ1 [off] {sym2} ptr idx) mem)
@@ -11945,9 +11536,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVBstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBstoreconst [x] {sym} (ADDQ ptr idx) mem)
@@ -11964,9 +11553,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVBstoreconstidx1)
                v.AuxInt = x
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBstoreconst [c] {s} p x:(MOVBstoreconst [a] {s} p mem))
@@ -11991,8 +11578,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconst)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xff|ValAndOff(c).Val()<<8, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        // match: (MOVBstoreconst [a] {s} p x:(MOVBstoreconst [c] {s} p mem))
@@ -12017,8 +11603,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconst)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xff|ValAndOff(c).Val()<<8, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        // match: (MOVBstoreconst [sc] {sym1} (LEAL [off] {sym2} ptr) mem)
@@ -12040,8 +11625,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVBstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstoreconst [sc] {s} (ADDLconst [off] ptr) mem)
@@ -12062,8 +11646,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVBstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -12092,9 +11675,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVBstoreconstidx1)
                        v.AuxInt = ValAndOff(x).add(c)
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -12119,9 +11700,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVBstoreconstidx1)
                        v.AuxInt = ValAndOff(x).add(c)
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -12153,9 +11732,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreconstidx1(v *Value) bool {
                                v.reset(OpAMD64MOVWstoreconstidx1)
                                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xff|ValAndOff(c).Val()<<8, ValAndOff(a).Off())
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(i)
-                               v.AddArg(mem)
+                               v.AddArg3(p, i, mem)
                                return true
                        }
                }
@@ -12190,10 +11767,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVBstoreidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -12219,10 +11793,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVBstoreidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -12255,13 +11826,10 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVWstoreidx1)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
                                v0 := b.NewValue0(v.Pos, OpAMD64ROLWconst, w.Type)
                                v0.AuxInt = 8
                                v0.AddArg(w)
-                               v.AddArg(v0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, v0, mem)
                                return true
                        }
                }
@@ -12325,12 +11893,9 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                                                v.reset(OpAMD64MOVLstoreidx1)
                                                v.AuxInt = i - 3
                                                v.Aux = s
-                                               v.AddArg(p)
-                                               v.AddArg(idx)
                                                v0 := b.NewValue0(v.Pos, OpAMD64BSWAPL, w.Type)
                                                v0.AddArg(w)
-                                               v.AddArg(v0)
-                                               v.AddArg(mem)
+                                               v.AddArg4(p, idx, v0, mem)
                                                return true
                                        }
                                }
@@ -12456,12 +12021,9 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                                                                                v.reset(OpAMD64MOVQstoreidx1)
                                                                                v.AuxInt = i - 7
                                                                                v.Aux = s
-                                                                               v.AddArg(p)
-                                                                               v.AddArg(idx)
                                                                                v0 := b.NewValue0(v.Pos, OpAMD64BSWAPQ, w.Type)
                                                                                v0.AddArg(w)
-                                                                               v.AddArg(v0)
-                                                                               v.AddArg(mem)
+                                                                               v.AddArg4(p, idx, v0, mem)
                                                                                return true
                                                                        }
                                                                }
@@ -12500,10 +12062,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVWstoreidx1)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -12536,10 +12095,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVWstoreidx1)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -12572,10 +12128,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVWstoreidx1)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -12613,10 +12166,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVWstoreidx1)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -12654,10 +12204,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVWstoreidx1)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -12683,9 +12230,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVBstore)
                        v.AuxInt = i + c
                        v.Aux = s
-                       v.AddArg(p)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg3(p, w, mem)
                        return true
                }
                break
@@ -12709,9 +12254,7 @@ func rewriteValueAMD64_OpAMD64MOVBstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVBstoreconstidx1)
                v.AuxInt = makeValAndOff(int64(int8(c)), off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -12740,8 +12283,7 @@ func rewriteValueAMD64_OpAMD64MOVLQSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLQSX x:(MOVQload [off] {sym} ptr mem))
@@ -12765,8 +12307,7 @@ func rewriteValueAMD64_OpAMD64MOVLQSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLQSX (ANDLconst [c] x))
@@ -12865,8 +12406,7 @@ func rewriteValueAMD64_OpAMD64MOVLQSXload(v *Value) bool {
                v.reset(OpAMD64MOVLQSXload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -12895,8 +12435,7 @@ func rewriteValueAMD64_OpAMD64MOVLQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLQZX x:(MOVQload [off] {sym} ptr mem))
@@ -12920,8 +12459,7 @@ func rewriteValueAMD64_OpAMD64MOVLQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLQZX x)
@@ -12959,9 +12497,7 @@ func rewriteValueAMD64_OpAMD64MOVLQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLQZX x:(MOVLloadidx4 [off] {sym} ptr idx mem))
@@ -12986,9 +12522,7 @@ func rewriteValueAMD64_OpAMD64MOVLQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLQZX (ANDLconst [c] x))
@@ -13060,8 +12594,7 @@ func rewriteValueAMD64_OpAMD64MOVLatomicload(v *Value) bool {
                v.reset(OpAMD64MOVLatomicload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLatomicload [off1] {sym1} (LEAQ [off2] {sym2} ptr) mem)
@@ -13083,8 +12616,7 @@ func rewriteValueAMD64_OpAMD64MOVLatomicload(v *Value) bool {
                v.reset(OpAMD64MOVLatomicload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -13188,8 +12720,7 @@ func rewriteValueAMD64_OpAMD64MOVLload(v *Value) bool {
                v.reset(OpAMD64MOVLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -13211,8 +12742,7 @@ func rewriteValueAMD64_OpAMD64MOVLload(v *Value) bool {
                v.reset(OpAMD64MOVLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVLload [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) mem)
@@ -13235,9 +12765,7 @@ func rewriteValueAMD64_OpAMD64MOVLload(v *Value) bool {
                v.reset(OpAMD64MOVLloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLload [off1] {sym1} (LEAQ4 [off2] {sym2} ptr idx) mem)
@@ -13260,9 +12788,7 @@ func rewriteValueAMD64_OpAMD64MOVLload(v *Value) bool {
                v.reset(OpAMD64MOVLloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLload [off1] {sym1} (LEAQ8 [off2] {sym2} ptr idx) mem)
@@ -13285,9 +12811,7 @@ func rewriteValueAMD64_OpAMD64MOVLload(v *Value) bool {
                v.reset(OpAMD64MOVLloadidx8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLload [off] {sym} (ADDQ ptr idx) mem)
@@ -13312,9 +12836,7 @@ func rewriteValueAMD64_OpAMD64MOVLload(v *Value) bool {
                        v.reset(OpAMD64MOVLloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -13338,8 +12860,7 @@ func rewriteValueAMD64_OpAMD64MOVLload(v *Value) bool {
                v.reset(OpAMD64MOVLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVLload [off1] {sym} (ADDLconst [off2] ptr) mem)
@@ -13360,8 +12881,7 @@ func rewriteValueAMD64_OpAMD64MOVLload(v *Value) bool {
                v.reset(OpAMD64MOVLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLload [off] {sym} ptr (MOVSSstore [off] {sym} ptr val _))
@@ -13416,9 +12936,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLloadidx4)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -13438,9 +12956,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLloadidx8)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -13465,9 +12981,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLloadidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -13492,9 +13006,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLloadidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -13518,8 +13030,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLload)
                        v.AuxInt = i + c
                        v.Aux = s
-                       v.AddArg(p)
-                       v.AddArg(mem)
+                       v.AddArg2(p, mem)
                        return true
                }
                break
@@ -13549,9 +13060,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx4(v *Value) bool {
                v.reset(OpAMD64MOVLloadidx4)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLloadidx4 [c] {sym} ptr (ADDQconst [d] idx) mem)
@@ -13573,9 +13082,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx4(v *Value) bool {
                v.reset(OpAMD64MOVLloadidx4)
                v.AuxInt = c + 4*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLloadidx4 [i] {s} p (MOVQconst [c]) mem)
@@ -13596,8 +13103,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx4(v *Value) bool {
                v.reset(OpAMD64MOVLload)
                v.AuxInt = i + 4*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -13625,9 +13131,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx8(v *Value) bool {
                v.reset(OpAMD64MOVLloadidx8)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLloadidx8 [c] {sym} ptr (ADDQconst [d] idx) mem)
@@ -13649,9 +13153,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx8(v *Value) bool {
                v.reset(OpAMD64MOVLloadidx8)
                v.AuxInt = c + 8*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLloadidx8 [i] {s} p (MOVQconst [c]) mem)
@@ -13672,8 +13174,7 @@ func rewriteValueAMD64_OpAMD64MOVLloadidx8(v *Value) bool {
                v.reset(OpAMD64MOVLload)
                v.AuxInt = i + 8*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -13698,9 +13199,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr (MOVLQZX x) mem)
@@ -13717,9 +13216,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore [off1] {sym} (ADDQconst [off2] ptr) val mem)
@@ -13741,9 +13238,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr (MOVLconst [c]) mem)
@@ -13764,8 +13259,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconst)
                v.AuxInt = makeValAndOff(int64(int32(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr (MOVQconst [c]) mem)
@@ -13786,8 +13280,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconst)
                v.AuxInt = makeValAndOff(int64(int32(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -13810,9 +13303,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVLstore [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) val mem)
@@ -13836,10 +13327,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstore [off1] {sym1} (LEAQ4 [off2] {sym2} ptr idx) val mem)
@@ -13863,10 +13351,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstoreidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstore [off1] {sym1} (LEAQ8 [off2] {sym2} ptr idx) val mem)
@@ -13890,10 +13375,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstoreidx8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} (ADDQ ptr idx) val mem)
@@ -13919,10 +13401,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                        v.reset(OpAMD64MOVLstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -13949,9 +13428,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVLstore [i] {s} p (SHRQconst [j] w) x:(MOVLstore [i-4] {s} p w0:(SHRQconst [j-32] w) mem))
@@ -13981,9 +13458,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVLstore [i] {s} p x1:(MOVLload [j] {s2} p2 mem) mem2:(MOVLstore [i-4] {s} p x2:(MOVLload [j-4] {s2} p2 mem) mem))
@@ -14020,14 +13495,11 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x2.Pos, OpAMD64MOVQload, typ.UInt64)
                v0.AuxInt = j - 4
                v0.Aux = s2
-               v0.AddArg(p2)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(p2, mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVLstore [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -14050,9 +13522,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVLstore [off1] {sym} (ADDLconst [off2] ptr) val mem)
@@ -14074,9 +13544,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ADDLload x [off] {sym} ptr mem) mem)
@@ -14098,9 +13566,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64ADDLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ANDLload x [off] {sym} ptr mem) mem)
@@ -14122,9 +13588,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64ANDLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ORLload x [off] {sym} ptr mem) mem)
@@ -14146,9 +13610,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64ORLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(XORLload x [off] {sym} ptr mem) mem)
@@ -14170,9 +13632,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64XORLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ADDL l:(MOVLload [off] {sym} ptr mem) x) mem)
@@ -14205,9 +13665,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                        v.reset(OpAMD64ADDLmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -14235,9 +13693,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64SUBLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(ANDL l:(MOVLload [off] {sym} ptr mem) x) mem)
@@ -14270,9 +13726,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                        v.reset(OpAMD64ANDLmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -14307,9 +13761,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                        v.reset(OpAMD64ORLmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -14344,9 +13796,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                        v.reset(OpAMD64XORLmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -14374,9 +13824,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64BTCLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(BTRL l:(MOVLload [off] {sym} ptr mem) x) mem)
@@ -14402,9 +13850,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64BTRLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore {sym} [off] ptr y:(BTSL l:(MOVLload [off] {sym} ptr mem) x) mem)
@@ -14430,9 +13876,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64BTSLmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr a:(ADDLconst [c] l:(MOVLload [off] {sym} ptr2 mem)) mem)
@@ -14459,8 +13903,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64ADDLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr a:(ANDLconst [c] l:(MOVLload [off] {sym} ptr2 mem)) mem)
@@ -14487,8 +13930,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64ANDLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr a:(ORLconst [c] l:(MOVLload [off] {sym} ptr2 mem)) mem)
@@ -14515,8 +13957,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64ORLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr a:(XORLconst [c] l:(MOVLload [off] {sym} ptr2 mem)) mem)
@@ -14543,8 +13984,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64XORLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr a:(BTCLconst [c] l:(MOVLload [off] {sym} ptr2 mem)) mem)
@@ -14571,8 +14011,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64BTCLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr a:(BTRLconst [c] l:(MOVLload [off] {sym} ptr2 mem)) mem)
@@ -14599,8 +14038,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64BTRLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr a:(BTSLconst [c] l:(MOVLload [off] {sym} ptr2 mem)) mem)
@@ -14627,8 +14065,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64BTSLconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstore [off] {sym} ptr (MOVLf2i val) mem)
@@ -14645,9 +14082,7 @@ func rewriteValueAMD64_OpAMD64MOVLstore(v *Value) bool {
                v.reset(OpAMD64MOVSSstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -14675,8 +14110,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstoreconst [sc] {sym1} (LEAQ [off] {sym2} ptr) mem)
@@ -14698,8 +14132,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstoreconst [x] {sym1} (LEAQ1 [off] {sym2} ptr idx) mem)
@@ -14722,9 +14155,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreconst [x] {sym1} (LEAQ4 [off] {sym2} ptr idx) mem)
@@ -14747,9 +14178,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconstidx4)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreconst [x] {sym} (ADDQ ptr idx) mem)
@@ -14766,9 +14195,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconstidx1)
                v.AuxInt = x
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreconst [c] {s} p x:(MOVLstoreconst [a] {s} p mem))
@@ -14793,11 +14220,9 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = ValAndOff(a).Off()
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x.Pos, OpAMD64MOVQconst, typ.UInt64)
                v0.AuxInt = ValAndOff(a).Val()&0xffffffff | ValAndOff(c).Val()<<32
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVLstoreconst [a] {s} p x:(MOVLstoreconst [c] {s} p mem))
@@ -14822,11 +14247,9 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = ValAndOff(a).Off()
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x.Pos, OpAMD64MOVQconst, typ.UInt64)
                v0.AuxInt = ValAndOff(a).Val()&0xffffffff | ValAndOff(c).Val()<<32
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVLstoreconst [sc] {sym1} (LEAL [off] {sym2} ptr) mem)
@@ -14848,8 +14271,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVLstoreconst [sc] {s} (ADDLconst [off] ptr) mem)
@@ -14870,8 +14292,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -14897,9 +14318,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLstoreconstidx4)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -14924,9 +14343,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLstoreconstidx1)
                        v.AuxInt = ValAndOff(x).add(c)
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -14951,9 +14368,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLstoreconstidx1)
                        v.AuxInt = ValAndOff(x).add(c)
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -14985,12 +14400,9 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconstidx1(v *Value) bool {
                                v.reset(OpAMD64MOVQstoreidx1)
                                v.AuxInt = ValAndOff(a).Off()
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpAMD64MOVQconst, typ.UInt64)
                                v0.AuxInt = ValAndOff(a).Val()&0xffffffff | ValAndOff(c).Val()<<32
-                               v.AddArg(v0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, i, v0, mem)
                                return true
                        }
                }
@@ -15023,9 +14435,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconstidx4(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconstidx4)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreconstidx4 [x] {sym} ptr (ADDQconst [c] idx) mem)
@@ -15047,9 +14457,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconstidx4(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconstidx4)
                v.AuxInt = ValAndOff(x).add(4 * c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVLstoreconstidx4 [c] {s} p i x:(MOVLstoreconstidx4 [a] {s} p i mem))
@@ -15075,15 +14483,12 @@ func rewriteValueAMD64_OpAMD64MOVLstoreconstidx4(v *Value) bool {
                v.reset(OpAMD64MOVQstoreidx1)
                v.AuxInt = ValAndOff(a).Off()
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, i.Type)
                v0.AuxInt = 2
                v0.AddArg(i)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQconst, typ.UInt64)
                v1.AuxInt = ValAndOff(a).Val()&0xffffffff | ValAndOff(c).Val()<<32
-               v.AddArg(v1)
-               v.AddArg(mem)
+               v.AddArg4(p, v0, v1, mem)
                return true
        }
        return false
@@ -15109,10 +14514,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLstoreidx4)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -15133,10 +14535,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLstoreidx8)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -15162,10 +14561,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLstoreidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -15191,10 +14587,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLstoreidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -15226,10 +14619,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVQstoreidx1)
                                v.AuxInt = i - 4
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -15267,10 +14657,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVQstoreidx1)
                                v.AuxInt = i - 4
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -15296,9 +14683,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVLstore)
                        v.AuxInt = i + c
                        v.Aux = s
-                       v.AddArg(p)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg3(p, w, mem)
                        return true
                }
                break
@@ -15322,9 +14707,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconstidx1)
                v.AuxInt = makeValAndOff(int64(int32(c)), off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -15355,10 +14738,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx4(v *Value) bool {
                v.reset(OpAMD64MOVLstoreidx4)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstoreidx4 [c] {sym} ptr (ADDQconst [d] idx) val mem)
@@ -15381,10 +14761,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx4(v *Value) bool {
                v.reset(OpAMD64MOVLstoreidx4)
                v.AuxInt = c + 4*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstoreidx4 [i] {s} p idx (SHRQconst [32] w) x:(MOVLstoreidx4 [i-4] {s} p idx w mem))
@@ -15410,13 +14787,10 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx4(v *Value) bool {
                v.reset(OpAMD64MOVQstoreidx1)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, idx.Type)
                v0.AuxInt = 2
                v0.AddArg(idx)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(p, v0, w, mem)
                return true
        }
        // match: (MOVLstoreidx4 [i] {s} p idx (SHRQconst [j] w) x:(MOVLstoreidx4 [i-4] {s} p idx w0:(SHRQconst [j-32] w) mem))
@@ -15447,13 +14821,10 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx4(v *Value) bool {
                v.reset(OpAMD64MOVQstoreidx1)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, idx.Type)
                v0.AuxInt = 2
                v0.AddArg(idx)
-               v.AddArg(v0)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg4(p, v0, w0, mem)
                return true
        }
        // match: (MOVLstoreidx4 [i] {s} p (MOVQconst [c]) w mem)
@@ -15475,9 +14846,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx4(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = i + 4*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVLstoreidx4 [off] {s} ptr idx (MOVQconst [c]) mem)
@@ -15499,9 +14868,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx4(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconstidx4)
                v.AuxInt = makeValAndOff(int64(int32(c)), off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -15531,10 +14898,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx8(v *Value) bool {
                v.reset(OpAMD64MOVLstoreidx8)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstoreidx8 [c] {sym} ptr (ADDQconst [d] idx) val mem)
@@ -15557,10 +14921,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx8(v *Value) bool {
                v.reset(OpAMD64MOVLstoreidx8)
                v.AuxInt = c + 8*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVLstoreidx8 [i] {s} p (MOVQconst [c]) w mem)
@@ -15582,9 +14943,7 @@ func rewriteValueAMD64_OpAMD64MOVLstoreidx8(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = i + 8*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        return false
@@ -15610,8 +14969,7 @@ func rewriteValueAMD64_OpAMD64MOVOload(v *Value) bool {
                v.reset(OpAMD64MOVOload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVOload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -15633,8 +14991,7 @@ func rewriteValueAMD64_OpAMD64MOVOload(v *Value) bool {
                v.reset(OpAMD64MOVOload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -15665,9 +15022,7 @@ func rewriteValueAMD64_OpAMD64MOVOstore(v *Value) bool {
                v.reset(OpAMD64MOVOstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVOstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -15690,9 +15045,7 @@ func rewriteValueAMD64_OpAMD64MOVOstore(v *Value) bool {
                v.reset(OpAMD64MOVOstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVOstore [dstOff] {dstSym} ptr (MOVOload [srcOff] {srcSym} (SB) _) mem)
@@ -15719,19 +15072,15 @@ func rewriteValueAMD64_OpAMD64MOVOstore(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = dstOff + 8
                v.Aux = dstSym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v_1.Pos, OpAMD64MOVQconst, typ.UInt64)
                v0.AuxInt = int64(read64(srcSym, srcOff+8, config.ctxt.Arch.ByteOrder))
-               v.AddArg(v0)
                v1 := b.NewValue0(v_1.Pos, OpAMD64MOVQstore, types.TypeMem)
                v1.AuxInt = dstOff
                v1.Aux = dstSym
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v_1.Pos, OpAMD64MOVQconst, typ.UInt64)
                v2.AuxInt = int64(read64(srcSym, srcOff, config.ctxt.Arch.ByteOrder))
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        return false
@@ -15757,8 +15106,7 @@ func rewriteValueAMD64_OpAMD64MOVQatomicload(v *Value) bool {
                v.reset(OpAMD64MOVQatomicload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQatomicload [off1] {sym1} (LEAQ [off2] {sym2} ptr) mem)
@@ -15780,8 +15128,7 @@ func rewriteValueAMD64_OpAMD64MOVQatomicload(v *Value) bool {
                v.reset(OpAMD64MOVQatomicload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -15886,8 +15233,7 @@ func rewriteValueAMD64_OpAMD64MOVQload(v *Value) bool {
                v.reset(OpAMD64MOVQload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -15909,8 +15255,7 @@ func rewriteValueAMD64_OpAMD64MOVQload(v *Value) bool {
                v.reset(OpAMD64MOVQload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVQload [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) mem)
@@ -15933,9 +15278,7 @@ func rewriteValueAMD64_OpAMD64MOVQload(v *Value) bool {
                v.reset(OpAMD64MOVQloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVQload [off1] {sym1} (LEAQ8 [off2] {sym2} ptr idx) mem)
@@ -15958,9 +15301,7 @@ func rewriteValueAMD64_OpAMD64MOVQload(v *Value) bool {
                v.reset(OpAMD64MOVQloadidx8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVQload [off] {sym} (ADDQ ptr idx) mem)
@@ -15985,9 +15326,7 @@ func rewriteValueAMD64_OpAMD64MOVQload(v *Value) bool {
                        v.reset(OpAMD64MOVQloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -16011,8 +15350,7 @@ func rewriteValueAMD64_OpAMD64MOVQload(v *Value) bool {
                v.reset(OpAMD64MOVQload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVQload [off1] {sym} (ADDLconst [off2] ptr) mem)
@@ -16033,8 +15371,7 @@ func rewriteValueAMD64_OpAMD64MOVQload(v *Value) bool {
                v.reset(OpAMD64MOVQload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQload [off] {sym} ptr (MOVSDstore [off] {sym} ptr val _))
@@ -16089,9 +15426,7 @@ func rewriteValueAMD64_OpAMD64MOVQloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQloadidx8)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -16116,9 +15451,7 @@ func rewriteValueAMD64_OpAMD64MOVQloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQloadidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -16143,9 +15476,7 @@ func rewriteValueAMD64_OpAMD64MOVQloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQloadidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -16169,8 +15500,7 @@ func rewriteValueAMD64_OpAMD64MOVQloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQload)
                        v.AuxInt = i + c
                        v.Aux = s
-                       v.AddArg(p)
-                       v.AddArg(mem)
+                       v.AddArg2(p, mem)
                        return true
                }
                break
@@ -16200,9 +15530,7 @@ func rewriteValueAMD64_OpAMD64MOVQloadidx8(v *Value) bool {
                v.reset(OpAMD64MOVQloadidx8)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVQloadidx8 [c] {sym} ptr (ADDQconst [d] idx) mem)
@@ -16224,9 +15552,7 @@ func rewriteValueAMD64_OpAMD64MOVQloadidx8(v *Value) bool {
                v.reset(OpAMD64MOVQloadidx8)
                v.AuxInt = c + 8*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVQloadidx8 [i] {s} p (MOVQconst [c]) mem)
@@ -16247,8 +15573,7 @@ func rewriteValueAMD64_OpAMD64MOVQloadidx8(v *Value) bool {
                v.reset(OpAMD64MOVQload)
                v.AuxInt = i + 8*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -16276,9 +15601,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVQstore [off] {sym} ptr (MOVQconst [c]) mem)
@@ -16299,8 +15622,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconst)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -16323,9 +15645,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVQstore [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) val mem)
@@ -16349,10 +15669,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64MOVQstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVQstore [off1] {sym1} (LEAQ8 [off2] {sym2} ptr idx) val mem)
@@ -16376,10 +15693,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64MOVQstoreidx8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVQstore [off] {sym} (ADDQ ptr idx) val mem)
@@ -16405,10 +15719,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                        v.reset(OpAMD64MOVQstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -16433,9 +15744,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVQstore [off1] {sym} (ADDLconst [off2] ptr) val mem)
@@ -16457,9 +15766,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVQstore {sym} [off] ptr y:(ADDQload x [off] {sym} ptr mem) mem)
@@ -16481,9 +15788,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64ADDQmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVQstore {sym} [off] ptr y:(ANDQload x [off] {sym} ptr mem) mem)
@@ -16505,9 +15810,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64ANDQmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVQstore {sym} [off] ptr y:(ORQload x [off] {sym} ptr mem) mem)
@@ -16529,9 +15832,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64ORQmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVQstore {sym} [off] ptr y:(XORQload x [off] {sym} ptr mem) mem)
@@ -16553,9 +15854,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64XORQmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVQstore {sym} [off] ptr y:(ADDQ l:(MOVQload [off] {sym} ptr mem) x) mem)
@@ -16588,9 +15887,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                        v.reset(OpAMD64ADDQmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -16618,9 +15915,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64SUBQmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVQstore {sym} [off] ptr y:(ANDQ l:(MOVQload [off] {sym} ptr mem) x) mem)
@@ -16653,9 +15948,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                        v.reset(OpAMD64ANDQmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -16690,9 +15983,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                        v.reset(OpAMD64ORQmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -16727,9 +16018,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                        v.reset(OpAMD64XORQmodify)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(x)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, x, mem)
                        return true
                }
                break
@@ -16757,9 +16046,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64BTCQmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVQstore {sym} [off] ptr y:(BTRQ l:(MOVQload [off] {sym} ptr mem) x) mem)
@@ -16785,9 +16072,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64BTRQmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVQstore {sym} [off] ptr y:(BTSQ l:(MOVQload [off] {sym} ptr mem) x) mem)
@@ -16813,9 +16098,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64BTSQmodify)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVQstore [off] {sym} ptr a:(ADDQconst [c] l:(MOVQload [off] {sym} ptr2 mem)) mem)
@@ -16842,8 +16125,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64ADDQconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstore [off] {sym} ptr a:(ANDQconst [c] l:(MOVQload [off] {sym} ptr2 mem)) mem)
@@ -16870,8 +16152,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64ANDQconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstore [off] {sym} ptr a:(ORQconst [c] l:(MOVQload [off] {sym} ptr2 mem)) mem)
@@ -16898,8 +16179,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64ORQconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstore [off] {sym} ptr a:(XORQconst [c] l:(MOVQload [off] {sym} ptr2 mem)) mem)
@@ -16926,8 +16206,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64XORQconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstore [off] {sym} ptr a:(BTCQconst [c] l:(MOVQload [off] {sym} ptr2 mem)) mem)
@@ -16954,8 +16233,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64BTCQconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstore [off] {sym} ptr a:(BTRQconst [c] l:(MOVQload [off] {sym} ptr2 mem)) mem)
@@ -16982,8 +16260,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64BTRQconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstore [off] {sym} ptr a:(BTSQconst [c] l:(MOVQload [off] {sym} ptr2 mem)) mem)
@@ -17010,8 +16287,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64BTSQconstmodify)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstore [off] {sym} ptr (MOVQf2i val) mem)
@@ -17028,9 +16304,7 @@ func rewriteValueAMD64_OpAMD64MOVQstore(v *Value) bool {
                v.reset(OpAMD64MOVSDstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -17058,8 +16332,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstoreconst [sc] {sym1} (LEAQ [off] {sym2} ptr) mem)
@@ -17081,8 +16354,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstoreconst [x] {sym1} (LEAQ1 [off] {sym2} ptr idx) mem)
@@ -17105,9 +16377,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVQstoreconst [x] {sym1} (LEAQ8 [off] {sym2} ptr idx) mem)
@@ -17130,9 +16400,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconstidx8)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVQstoreconst [x] {sym} (ADDQ ptr idx) mem)
@@ -17149,9 +16417,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconstidx1)
                v.AuxInt = x
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVQstoreconst [c] {s} p x:(MOVQstoreconst [c2] {s} p mem))
@@ -17176,11 +16442,9 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVOstore)
                v.AuxInt = ValAndOff(c2).Off()
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVQstoreconst [sc] {sym1} (LEAL [off] {sym2} ptr) mem)
@@ -17202,8 +16466,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstoreconst [sc] {s} (ADDLconst [off] ptr) mem)
@@ -17224,8 +16487,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -17249,9 +16511,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQstoreconstidx8)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -17276,9 +16536,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQstoreconstidx1)
                        v.AuxInt = ValAndOff(x).add(c)
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -17303,9 +16561,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQstoreconstidx1)
                        v.AuxInt = ValAndOff(x).add(c)
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -17335,9 +16591,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconstidx8(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconstidx8)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVQstoreconstidx8 [x] {sym} ptr (ADDQconst [c] idx) mem)
@@ -17359,9 +16613,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreconstidx8(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconstidx8)
                v.AuxInt = ValAndOff(x).add(8 * c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -17387,10 +16639,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQstoreidx8)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -17416,10 +16665,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQstoreidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -17445,10 +16691,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQstoreidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -17473,9 +16716,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVQstore)
                        v.AuxInt = i + c
                        v.Aux = s
-                       v.AddArg(p)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg3(p, w, mem)
                        return true
                }
                break
@@ -17499,9 +16740,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconstidx1)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -17531,10 +16770,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreidx8(v *Value) bool {
                v.reset(OpAMD64MOVQstoreidx8)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVQstoreidx8 [c] {sym} ptr (ADDQconst [d] idx) val mem)
@@ -17557,10 +16793,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreidx8(v *Value) bool {
                v.reset(OpAMD64MOVQstoreidx8)
                v.AuxInt = c + 8*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVQstoreidx8 [i] {s} p (MOVQconst [c]) w mem)
@@ -17582,9 +16815,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreidx8(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = i + 8*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVQstoreidx8 [off] {s} ptr idx (MOVQconst [c]) mem)
@@ -17606,9 +16837,7 @@ func rewriteValueAMD64_OpAMD64MOVQstoreidx8(v *Value) bool {
                v.reset(OpAMD64MOVQstoreconstidx8)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -17634,8 +16863,7 @@ func rewriteValueAMD64_OpAMD64MOVSDload(v *Value) bool {
                v.reset(OpAMD64MOVSDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVSDload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -17657,8 +16885,7 @@ func rewriteValueAMD64_OpAMD64MOVSDload(v *Value) bool {
                v.reset(OpAMD64MOVSDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVSDload [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) mem)
@@ -17681,9 +16908,7 @@ func rewriteValueAMD64_OpAMD64MOVSDload(v *Value) bool {
                v.reset(OpAMD64MOVSDloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDload [off1] {sym1} (LEAQ8 [off2] {sym2} ptr idx) mem)
@@ -17706,9 +16931,7 @@ func rewriteValueAMD64_OpAMD64MOVSDload(v *Value) bool {
                v.reset(OpAMD64MOVSDloadidx8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDload [off] {sym} (ADDQ ptr idx) mem)
@@ -17733,9 +16956,7 @@ func rewriteValueAMD64_OpAMD64MOVSDload(v *Value) bool {
                        v.reset(OpAMD64MOVSDloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -17778,9 +16999,7 @@ func rewriteValueAMD64_OpAMD64MOVSDloadidx1(v *Value) bool {
                v.reset(OpAMD64MOVSDloadidx8)
                v.AuxInt = c
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDloadidx1 [c] {sym} (ADDQconst [d] ptr) idx mem)
@@ -17802,9 +17021,7 @@ func rewriteValueAMD64_OpAMD64MOVSDloadidx1(v *Value) bool {
                v.reset(OpAMD64MOVSDloadidx1)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDloadidx1 [c] {sym} ptr (ADDQconst [d] idx) mem)
@@ -17826,9 +17043,7 @@ func rewriteValueAMD64_OpAMD64MOVSDloadidx1(v *Value) bool {
                v.reset(OpAMD64MOVSDloadidx1)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDloadidx1 [i] {s} p (MOVQconst [c]) mem)
@@ -17849,8 +17064,7 @@ func rewriteValueAMD64_OpAMD64MOVSDloadidx1(v *Value) bool {
                v.reset(OpAMD64MOVSDload)
                v.AuxInt = i + c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -17878,9 +17092,7 @@ func rewriteValueAMD64_OpAMD64MOVSDloadidx8(v *Value) bool {
                v.reset(OpAMD64MOVSDloadidx8)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDloadidx8 [c] {sym} ptr (ADDQconst [d] idx) mem)
@@ -17902,9 +17114,7 @@ func rewriteValueAMD64_OpAMD64MOVSDloadidx8(v *Value) bool {
                v.reset(OpAMD64MOVSDloadidx8)
                v.AuxInt = c + 8*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSDloadidx8 [i] {s} p (MOVQconst [c]) mem)
@@ -17925,8 +17135,7 @@ func rewriteValueAMD64_OpAMD64MOVSDloadidx8(v *Value) bool {
                v.reset(OpAMD64MOVSDload)
                v.AuxInt = i + 8*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -17954,9 +17163,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstore(v *Value) bool {
                v.reset(OpAMD64MOVSDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVSDstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -17979,9 +17186,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstore(v *Value) bool {
                v.reset(OpAMD64MOVSDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVSDstore [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) val mem)
@@ -18005,10 +17210,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstore(v *Value) bool {
                v.reset(OpAMD64MOVSDstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstore [off1] {sym1} (LEAQ8 [off2] {sym2} ptr idx) val mem)
@@ -18032,10 +17234,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstore(v *Value) bool {
                v.reset(OpAMD64MOVSDstoreidx8)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstore [off] {sym} (ADDQ ptr idx) val mem)
@@ -18061,10 +17260,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstore(v *Value) bool {
                        v.reset(OpAMD64MOVSDstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -18083,9 +17279,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstore(v *Value) bool {
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -18110,10 +17304,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVSDstoreidx8)
                v.AuxInt = c
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstoreidx1 [c] {sym} (ADDQconst [d] ptr) idx val mem)
@@ -18136,10 +17327,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVSDstoreidx1)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstoreidx1 [c] {sym} ptr (ADDQconst [d] idx) val mem)
@@ -18162,10 +17350,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVSDstoreidx1)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstoreidx1 [i] {s} p (MOVQconst [c]) w mem)
@@ -18187,9 +17372,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVSDstore)
                v.AuxInt = i + c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        return false
@@ -18219,10 +17402,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstoreidx8(v *Value) bool {
                v.reset(OpAMD64MOVSDstoreidx8)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstoreidx8 [c] {sym} ptr (ADDQconst [d] idx) val mem)
@@ -18245,10 +17425,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstoreidx8(v *Value) bool {
                v.reset(OpAMD64MOVSDstoreidx8)
                v.AuxInt = c + 8*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSDstoreidx8 [i] {s} p (MOVQconst [c]) w mem)
@@ -18270,9 +17447,7 @@ func rewriteValueAMD64_OpAMD64MOVSDstoreidx8(v *Value) bool {
                v.reset(OpAMD64MOVSDstore)
                v.AuxInt = i + 8*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        return false
@@ -18298,8 +17473,7 @@ func rewriteValueAMD64_OpAMD64MOVSSload(v *Value) bool {
                v.reset(OpAMD64MOVSSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVSSload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -18321,8 +17495,7 @@ func rewriteValueAMD64_OpAMD64MOVSSload(v *Value) bool {
                v.reset(OpAMD64MOVSSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVSSload [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) mem)
@@ -18345,9 +17518,7 @@ func rewriteValueAMD64_OpAMD64MOVSSload(v *Value) bool {
                v.reset(OpAMD64MOVSSloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSload [off1] {sym1} (LEAQ4 [off2] {sym2} ptr idx) mem)
@@ -18370,9 +17541,7 @@ func rewriteValueAMD64_OpAMD64MOVSSload(v *Value) bool {
                v.reset(OpAMD64MOVSSloadidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSload [off] {sym} (ADDQ ptr idx) mem)
@@ -18397,9 +17566,7 @@ func rewriteValueAMD64_OpAMD64MOVSSload(v *Value) bool {
                        v.reset(OpAMD64MOVSSloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -18442,9 +17609,7 @@ func rewriteValueAMD64_OpAMD64MOVSSloadidx1(v *Value) bool {
                v.reset(OpAMD64MOVSSloadidx4)
                v.AuxInt = c
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSloadidx1 [c] {sym} (ADDQconst [d] ptr) idx mem)
@@ -18466,9 +17631,7 @@ func rewriteValueAMD64_OpAMD64MOVSSloadidx1(v *Value) bool {
                v.reset(OpAMD64MOVSSloadidx1)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSloadidx1 [c] {sym} ptr (ADDQconst [d] idx) mem)
@@ -18490,9 +17653,7 @@ func rewriteValueAMD64_OpAMD64MOVSSloadidx1(v *Value) bool {
                v.reset(OpAMD64MOVSSloadidx1)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSloadidx1 [i] {s} p (MOVQconst [c]) mem)
@@ -18513,8 +17674,7 @@ func rewriteValueAMD64_OpAMD64MOVSSloadidx1(v *Value) bool {
                v.reset(OpAMD64MOVSSload)
                v.AuxInt = i + c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -18542,9 +17702,7 @@ func rewriteValueAMD64_OpAMD64MOVSSloadidx4(v *Value) bool {
                v.reset(OpAMD64MOVSSloadidx4)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSloadidx4 [c] {sym} ptr (ADDQconst [d] idx) mem)
@@ -18566,9 +17724,7 @@ func rewriteValueAMD64_OpAMD64MOVSSloadidx4(v *Value) bool {
                v.reset(OpAMD64MOVSSloadidx4)
                v.AuxInt = c + 4*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVSSloadidx4 [i] {s} p (MOVQconst [c]) mem)
@@ -18589,8 +17745,7 @@ func rewriteValueAMD64_OpAMD64MOVSSloadidx4(v *Value) bool {
                v.reset(OpAMD64MOVSSload)
                v.AuxInt = i + 4*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -18618,9 +17773,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstore(v *Value) bool {
                v.reset(OpAMD64MOVSSstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVSSstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -18643,9 +17796,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstore(v *Value) bool {
                v.reset(OpAMD64MOVSSstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVSSstore [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) val mem)
@@ -18669,10 +17820,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstore(v *Value) bool {
                v.reset(OpAMD64MOVSSstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstore [off1] {sym1} (LEAQ4 [off2] {sym2} ptr idx) val mem)
@@ -18696,10 +17844,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstore(v *Value) bool {
                v.reset(OpAMD64MOVSSstoreidx4)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstore [off] {sym} (ADDQ ptr idx) val mem)
@@ -18725,10 +17870,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstore(v *Value) bool {
                        v.reset(OpAMD64MOVSSstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -18747,9 +17889,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -18774,10 +17914,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVSSstoreidx4)
                v.AuxInt = c
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstoreidx1 [c] {sym} (ADDQconst [d] ptr) idx val mem)
@@ -18800,10 +17937,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVSSstoreidx1)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstoreidx1 [c] {sym} ptr (ADDQconst [d] idx) val mem)
@@ -18826,10 +17960,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVSSstoreidx1)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstoreidx1 [i] {s} p (MOVQconst [c]) w mem)
@@ -18851,9 +17982,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVSSstore)
                v.AuxInt = i + c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        return false
@@ -18883,10 +18012,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstoreidx4(v *Value) bool {
                v.reset(OpAMD64MOVSSstoreidx4)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstoreidx4 [c] {sym} ptr (ADDQconst [d] idx) val mem)
@@ -18909,10 +18035,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstoreidx4(v *Value) bool {
                v.reset(OpAMD64MOVSSstoreidx4)
                v.AuxInt = c + 4*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVSSstoreidx4 [i] {s} p (MOVQconst [c]) w mem)
@@ -18934,9 +18057,7 @@ func rewriteValueAMD64_OpAMD64MOVSSstoreidx4(v *Value) bool {
                v.reset(OpAMD64MOVSSstore)
                v.AuxInt = i + 4*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        return false
@@ -18965,8 +18086,7 @@ func rewriteValueAMD64_OpAMD64MOVWQSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWQSX x:(MOVLload [off] {sym} ptr mem))
@@ -18990,8 +18110,7 @@ func rewriteValueAMD64_OpAMD64MOVWQSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWQSX x:(MOVQload [off] {sym} ptr mem))
@@ -19015,8 +18134,7 @@ func rewriteValueAMD64_OpAMD64MOVWQSX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWQSX (ANDLconst [c] x))
@@ -19104,8 +18222,7 @@ func rewriteValueAMD64_OpAMD64MOVWQSXload(v *Value) bool {
                v.reset(OpAMD64MOVWQSXload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -19134,8 +18251,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWQZX x:(MOVLload [off] {sym} ptr mem))
@@ -19159,8 +18275,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWQZX x:(MOVQload [off] {sym} ptr mem))
@@ -19184,8 +18299,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWQZX x)
@@ -19223,9 +18337,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWQZX x:(MOVWloadidx2 [off] {sym} ptr idx mem))
@@ -19250,9 +18362,7 @@ func rewriteValueAMD64_OpAMD64MOVWQZX(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWQZX (ANDLconst [c] x))
@@ -19337,8 +18447,7 @@ func rewriteValueAMD64_OpAMD64MOVWload(v *Value) bool {
                v.reset(OpAMD64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -19360,8 +18469,7 @@ func rewriteValueAMD64_OpAMD64MOVWload(v *Value) bool {
                v.reset(OpAMD64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) mem)
@@ -19384,9 +18492,7 @@ func rewriteValueAMD64_OpAMD64MOVWload(v *Value) bool {
                v.reset(OpAMD64MOVWloadidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (LEAQ2 [off2] {sym2} ptr idx) mem)
@@ -19409,9 +18515,7 @@ func rewriteValueAMD64_OpAMD64MOVWload(v *Value) bool {
                v.reset(OpAMD64MOVWloadidx2)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [off] {sym} (ADDQ ptr idx) mem)
@@ -19436,9 +18540,7 @@ func rewriteValueAMD64_OpAMD64MOVWload(v *Value) bool {
                        v.reset(OpAMD64MOVWloadidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -19462,8 +18564,7 @@ func rewriteValueAMD64_OpAMD64MOVWload(v *Value) bool {
                v.reset(OpAMD64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVWload [off1] {sym} (ADDLconst [off2] ptr) mem)
@@ -19484,8 +18585,7 @@ func rewriteValueAMD64_OpAMD64MOVWload(v *Value) bool {
                v.reset(OpAMD64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off] {sym} (SB) _)
@@ -19522,9 +18622,7 @@ func rewriteValueAMD64_OpAMD64MOVWloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWloadidx2)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -19549,9 +18647,7 @@ func rewriteValueAMD64_OpAMD64MOVWloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWloadidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -19576,9 +18672,7 @@ func rewriteValueAMD64_OpAMD64MOVWloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWloadidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -19602,8 +18696,7 @@ func rewriteValueAMD64_OpAMD64MOVWloadidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWload)
                        v.AuxInt = i + c
                        v.Aux = s
-                       v.AddArg(p)
-                       v.AddArg(mem)
+                       v.AddArg2(p, mem)
                        return true
                }
                break
@@ -19633,9 +18726,7 @@ func rewriteValueAMD64_OpAMD64MOVWloadidx2(v *Value) bool {
                v.reset(OpAMD64MOVWloadidx2)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWloadidx2 [c] {sym} ptr (ADDQconst [d] idx) mem)
@@ -19657,9 +18748,7 @@ func rewriteValueAMD64_OpAMD64MOVWloadidx2(v *Value) bool {
                v.reset(OpAMD64MOVWloadidx2)
                v.AuxInt = c + 2*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWloadidx2 [i] {s} p (MOVQconst [c]) mem)
@@ -19680,8 +18769,7 @@ func rewriteValueAMD64_OpAMD64MOVWloadidx2(v *Value) bool {
                v.reset(OpAMD64MOVWload)
                v.AuxInt = i + 2*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -19706,9 +18794,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWQZX x) mem)
@@ -19725,9 +18811,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym} (ADDQconst [off2] ptr) val mem)
@@ -19749,9 +18833,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVLconst [c]) mem)
@@ -19772,8 +18854,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconst)
                v.AuxInt = makeValAndOff(int64(int16(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVQconst [c]) mem)
@@ -19794,8 +18875,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconst)
                v.AuxInt = makeValAndOff(int64(int16(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -19818,9 +18898,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (LEAQ1 [off2] {sym2} ptr idx) val mem)
@@ -19844,10 +18922,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVWstoreidx1)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (LEAQ2 [off2] {sym2} ptr idx) val mem)
@@ -19871,10 +18946,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVWstoreidx2)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} (ADDQ ptr idx) val mem)
@@ -19900,10 +18972,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                        v.reset(OpAMD64MOVWstoreidx1)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -19930,9 +18999,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVWstore [i] {s} p (SHRQconst [16] w) x:(MOVWstore [i-2] {s} p w mem))
@@ -19957,9 +19024,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVWstore [i] {s} p (SHRLconst [j] w) x:(MOVWstore [i-2] {s} p w0:(SHRLconst [j-16] w) mem))
@@ -19989,9 +19054,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVWstore [i] {s} p (SHRQconst [j] w) x:(MOVWstore [i-2] {s} p w0:(SHRQconst [j-16] w) mem))
@@ -20021,9 +19084,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVWstore [i] {s} p x1:(MOVWload [j] {s2} p2 mem) mem2:(MOVWstore [i-2] {s} p x2:(MOVWload [j-2] {s2} p2 mem) mem))
@@ -20060,14 +19121,11 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x2.Pos, OpAMD64MOVLload, typ.UInt32)
                v0.AuxInt = j - 2
                v0.Aux = s2
-               v0.AddArg(p2)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(p2, mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (LEAL [off2] {sym2} base) val mem)
@@ -20090,9 +19148,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym} (ADDLconst [off2] ptr) val mem)
@@ -20114,9 +19170,7 @@ func rewriteValueAMD64_OpAMD64MOVWstore(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -20142,8 +19196,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstoreconst [sc] {sym1} (LEAQ [off] {sym2} ptr) mem)
@@ -20165,8 +19218,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstoreconst [x] {sym1} (LEAQ1 [off] {sym2} ptr idx) mem)
@@ -20189,9 +19241,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconstidx1)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconst [x] {sym1} (LEAQ2 [off] {sym2} ptr idx) mem)
@@ -20214,9 +19264,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconstidx2)
                v.AuxInt = ValAndOff(x).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconst [x] {sym} (ADDQ ptr idx) mem)
@@ -20233,9 +19281,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconstidx1)
                v.AuxInt = x
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconst [c] {s} p x:(MOVWstoreconst [a] {s} p mem))
@@ -20260,8 +19306,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconst)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xffff|ValAndOff(c).Val()<<16, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        // match: (MOVWstoreconst [a] {s} p x:(MOVWstoreconst [c] {s} p mem))
@@ -20286,8 +19331,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconst)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xffff|ValAndOff(c).Val()<<16, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        // match: (MOVWstoreconst [sc] {sym1} (LEAL [off] {sym2} ptr) mem)
@@ -20309,8 +19353,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstoreconst [sc] {s} (ADDLconst [off] ptr) mem)
@@ -20331,8 +19374,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconst(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -20356,9 +19398,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWstoreconstidx2)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -20383,9 +19423,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWstoreconstidx1)
                        v.AuxInt = ValAndOff(x).add(c)
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -20410,9 +19448,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconstidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWstoreconstidx1)
                        v.AuxInt = ValAndOff(x).add(c)
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -20444,9 +19480,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconstidx1(v *Value) bool {
                                v.reset(OpAMD64MOVLstoreconstidx1)
                                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xffff|ValAndOff(c).Val()<<16, ValAndOff(a).Off())
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(i)
-                               v.AddArg(mem)
+                               v.AddArg3(p, i, mem)
                                return true
                        }
                }
@@ -20478,9 +19512,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconstidx2(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconstidx2)
                v.AuxInt = ValAndOff(x).add(c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconstidx2 [x] {sym} ptr (ADDQconst [c] idx) mem)
@@ -20502,9 +19534,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconstidx2(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconstidx2)
                v.AuxInt = ValAndOff(x).add(2 * c)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreconstidx2 [c] {s} p i x:(MOVWstoreconstidx2 [a] {s} p i mem))
@@ -20530,12 +19560,10 @@ func rewriteValueAMD64_OpAMD64MOVWstoreconstidx2(v *Value) bool {
                v.reset(OpAMD64MOVLstoreconstidx1)
                v.AuxInt = makeValAndOff(ValAndOff(a).Val()&0xffff|ValAndOff(c).Val()<<16, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, i.Type)
                v0.AuxInt = 1
                v0.AddArg(i)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        return false
@@ -20561,10 +19589,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWstoreidx2)
                        v.AuxInt = c
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -20590,10 +19615,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWstoreidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -20619,10 +19641,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWstoreidx1)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -20654,10 +19673,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVLstoreidx1)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -20690,10 +19706,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVLstoreidx1)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -20731,10 +19744,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVLstoreidx1)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -20772,10 +19782,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx1(v *Value) bool {
                                v.reset(OpAMD64MOVLstoreidx1)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -20801,9 +19808,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx1(v *Value) bool {
                        v.reset(OpAMD64MOVWstore)
                        v.AuxInt = i + c
                        v.Aux = s
-                       v.AddArg(p)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg3(p, w, mem)
                        return true
                }
                break
@@ -20827,9 +19832,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx1(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconstidx1)
                v.AuxInt = makeValAndOff(int64(int16(c)), off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -20860,10 +19863,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx2(v *Value) bool {
                v.reset(OpAMD64MOVWstoreidx2)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx2 [c] {sym} ptr (ADDQconst [d] idx) val mem)
@@ -20886,10 +19886,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx2(v *Value) bool {
                v.reset(OpAMD64MOVWstoreidx2)
                v.AuxInt = c + 2*d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx2 [i] {s} p idx (SHRLconst [16] w) x:(MOVWstoreidx2 [i-2] {s} p idx w mem))
@@ -20915,13 +19912,10 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx2(v *Value) bool {
                v.reset(OpAMD64MOVLstoreidx1)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, idx.Type)
                v0.AuxInt = 1
                v0.AddArg(idx)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(p, v0, w, mem)
                return true
        }
        // match: (MOVWstoreidx2 [i] {s} p idx (SHRQconst [16] w) x:(MOVWstoreidx2 [i-2] {s} p idx w mem))
@@ -20947,13 +19941,10 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx2(v *Value) bool {
                v.reset(OpAMD64MOVLstoreidx1)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, idx.Type)
                v0.AuxInt = 1
                v0.AddArg(idx)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(p, v0, w, mem)
                return true
        }
        // match: (MOVWstoreidx2 [i] {s} p idx (SHRQconst [j] w) x:(MOVWstoreidx2 [i-2] {s} p idx w0:(SHRQconst [j-16] w) mem))
@@ -20984,13 +19975,10 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx2(v *Value) bool {
                v.reset(OpAMD64MOVLstoreidx1)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, idx.Type)
                v0.AuxInt = 1
                v0.AddArg(idx)
-               v.AddArg(v0)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg4(p, v0, w0, mem)
                return true
        }
        // match: (MOVWstoreidx2 [i] {s} p (MOVQconst [c]) w mem)
@@ -21012,9 +20000,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx2(v *Value) bool {
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = i + 2*c
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVWstoreidx2 [off] {s} ptr idx (MOVLconst [c]) mem)
@@ -21036,9 +20022,7 @@ func rewriteValueAMD64_OpAMD64MOVWstoreidx2(v *Value) bool {
                v.reset(OpAMD64MOVWstoreconstidx2)
                v.AuxInt = makeValAndOff(int64(int16(c)), off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -21090,8 +20074,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64NEGL)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -21104,8 +20087,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64NEGL)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -21118,8 +20100,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64NEGL)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -21164,8 +20145,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL2)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (MULLconst [ 5] x)
@@ -21176,8 +20156,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL4)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (MULLconst [ 7] x)
@@ -21188,11 +20167,9 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL2)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [ 9] x)
@@ -21203,8 +20180,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL8)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (MULLconst [11] x)
@@ -21215,11 +20191,9 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL2)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [13] x)
@@ -21230,11 +20204,9 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL4)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [19] x)
@@ -21245,11 +20217,9 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL2)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [21] x)
@@ -21260,11 +20230,9 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL4)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [25] x)
@@ -21275,11 +20243,9 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [27] x)
@@ -21291,13 +20257,10 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64LEAL8)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
                v1 := b.NewValue0(v.Pos, OpAMD64LEAL2, v.Type)
-               v1.AddArg(x)
-               v1.AddArg(x)
-               v.AddArg(v1)
+               v1.AddArg2(x, x)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (MULLconst [37] x)
@@ -21308,11 +20271,9 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL4)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [41] x)
@@ -21323,11 +20284,9 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [45] x)
@@ -21339,13 +20298,10 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64LEAL8)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
                v1 := b.NewValue0(v.Pos, OpAMD64LEAL4, v.Type)
-               v1.AddArg(x)
-               v1.AddArg(x)
-               v.AddArg(v1)
+               v1.AddArg2(x, x)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (MULLconst [73] x)
@@ -21356,11 +20312,9 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAL8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLconst [81] x)
@@ -21372,13 +20326,10 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64LEAL8)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
                v1 := b.NewValue0(v.Pos, OpAMD64LEAL8, v.Type)
-               v1.AddArg(x)
-               v1.AddArg(x)
-               v.AddArg(v1)
+               v1.AddArg2(x, x)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (MULLconst [c] x)
@@ -21394,8 +20345,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
                v0.AuxInt = log2(c + 1)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLconst [c] x)
@@ -21411,8 +20361,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
                v0.AuxInt = log2(c - 1)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLconst [c] x)
@@ -21428,8 +20377,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
                v0.AuxInt = log2(c - 2)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLconst [c] x)
@@ -21445,8 +20393,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
                v0.AuxInt = log2(c - 4)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLconst [c] x)
@@ -21462,8 +20409,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
                v0.AuxInt = log2(c - 8)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLconst [c] x)
@@ -21478,8 +20424,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                v.reset(OpAMD64SHLLconst)
                v.AuxInt = log2(c / 3)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -21495,8 +20440,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                v.reset(OpAMD64SHLLconst)
                v.AuxInt = log2(c / 5)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -21512,8 +20456,7 @@ func rewriteValueAMD64_OpAMD64MULLconst(v *Value) bool {
                v.reset(OpAMD64SHLLconst)
                v.AuxInt = log2(c / 9)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAL8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -21586,8 +20529,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64NEGQ)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -21600,8 +20542,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64NEGQ)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -21614,8 +20555,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64NEGQ)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -21660,8 +20600,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ2)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (MULQconst [ 5] x)
@@ -21672,8 +20611,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ4)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (MULQconst [ 7] x)
@@ -21684,11 +20622,9 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ2)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULQconst [ 9] x)
@@ -21699,8 +20635,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ8)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        // match: (MULQconst [11] x)
@@ -21711,11 +20646,9 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ2)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULQconst [13] x)
@@ -21726,11 +20659,9 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ4)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULQconst [19] x)
@@ -21741,11 +20672,9 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ2)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULQconst [21] x)
@@ -21756,11 +20685,9 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ4)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULQconst [25] x)
@@ -21771,11 +20698,9 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULQconst [27] x)
@@ -21787,13 +20712,10 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64LEAQ8)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
                v1 := b.NewValue0(v.Pos, OpAMD64LEAQ2, v.Type)
-               v1.AddArg(x)
-               v1.AddArg(x)
-               v.AddArg(v1)
+               v1.AddArg2(x, x)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (MULQconst [37] x)
@@ -21804,11 +20726,9 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ4)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULQconst [41] x)
@@ -21819,11 +20739,9 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULQconst [45] x)
@@ -21835,13 +20753,10 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64LEAQ8)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
                v1 := b.NewValue0(v.Pos, OpAMD64LEAQ4, v.Type)
-               v1.AddArg(x)
-               v1.AddArg(x)
-               v.AddArg(v1)
+               v1.AddArg2(x, x)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (MULQconst [73] x)
@@ -21852,11 +20767,9 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                }
                x := v_0
                v.reset(OpAMD64LEAQ8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULQconst [81] x)
@@ -21868,13 +20781,10 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                x := v_0
                v.reset(OpAMD64LEAQ8)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
                v1 := b.NewValue0(v.Pos, OpAMD64LEAQ8, v.Type)
-               v1.AddArg(x)
-               v1.AddArg(x)
-               v.AddArg(v1)
+               v1.AddArg2(x, x)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (MULQconst [c] x)
@@ -21890,8 +20800,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
                v0.AuxInt = log2(c + 1)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULQconst [c] x)
@@ -21907,8 +20816,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
                v0.AuxInt = log2(c - 1)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULQconst [c] x)
@@ -21924,8 +20832,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
                v0.AuxInt = log2(c - 2)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULQconst [c] x)
@@ -21941,8 +20848,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
                v0.AuxInt = log2(c - 4)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULQconst [c] x)
@@ -21958,8 +20864,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
                v0.AuxInt = log2(c - 8)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULQconst [c] x)
@@ -21974,8 +20879,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                v.reset(OpAMD64SHLQconst)
                v.AuxInt = log2(c / 3)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ2, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -21991,8 +20895,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                v.reset(OpAMD64SHLQconst)
                v.AuxInt = log2(c / 5)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ4, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -22008,8 +20911,7 @@ func rewriteValueAMD64_OpAMD64MULQconst(v *Value) bool {
                v.reset(OpAMD64SHLQconst)
                v.AuxInt = log2(c / 9)
                v0 := b.NewValue0(v.Pos, OpAMD64LEAQ8, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -22067,9 +20969,7 @@ func rewriteValueAMD64_OpAMD64MULSD(v *Value) bool {
                        v.reset(OpAMD64MULSDload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -22101,9 +21001,7 @@ func rewriteValueAMD64_OpAMD64MULSDload(v *Value) bool {
                v.reset(OpAMD64MULSDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (MULSDload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -22126,9 +21024,7 @@ func rewriteValueAMD64_OpAMD64MULSDload(v *Value) bool {
                v.reset(OpAMD64MULSDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (MULSDload x [off] {sym} ptr (MOVQstore [off] {sym} ptr y _))
@@ -22147,10 +21043,9 @@ func rewriteValueAMD64_OpAMD64MULSDload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64MULSD)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQi2f, typ.Float64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -22178,9 +21073,7 @@ func rewriteValueAMD64_OpAMD64MULSS(v *Value) bool {
                        v.reset(OpAMD64MULSSload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -22212,9 +21105,7 @@ func rewriteValueAMD64_OpAMD64MULSSload(v *Value) bool {
                v.reset(OpAMD64MULSSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (MULSSload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -22237,9 +21128,7 @@ func rewriteValueAMD64_OpAMD64MULSSload(v *Value) bool {
                v.reset(OpAMD64MULSSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (MULSSload x [off] {sym} ptr (MOVLstore [off] {sym} ptr y _))
@@ -22258,10 +21147,9 @@ func rewriteValueAMD64_OpAMD64MULSSload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64MULSS)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLi2f, typ.Float32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -22294,8 +21182,7 @@ func rewriteValueAMD64_OpAMD64NEGL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SUBL)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (NEGL (MOVLconst [c]))
@@ -22339,8 +21226,7 @@ func rewriteValueAMD64_OpAMD64NEGQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SUBQ)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (NEGQ (MOVQconst [c]))
@@ -22426,8 +21312,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                        }
                        x := v_1
                        v.reset(OpAMD64BTSL)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -22586,8 +21471,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64ROLL)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -22637,8 +21521,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64ROLL)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -22688,8 +21571,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64RORL)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -22739,8 +21621,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64RORL)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -22804,8 +21685,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64ROLW)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -22869,8 +21749,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64ROLW)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -22911,8 +21790,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                continue
                        }
                        v.reset(OpAMD64RORW)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -22952,8 +21830,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                continue
                        }
                        v.reset(OpAMD64RORW)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -23016,8 +21893,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64ROLB)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -23081,8 +21957,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64ROLB)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -23123,8 +21998,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                continue
                        }
                        v.reset(OpAMD64RORB)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -23164,8 +22038,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                continue
                        }
                        v.reset(OpAMD64RORB)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -23217,8 +22090,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -23258,8 +22130,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -23320,11 +22191,9 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                v2 := b.NewValue0(x0.Pos, OpAMD64MOVWload, typ.UInt16)
                                v2.AuxInt = i0
                                v2.Aux = s
-                               v2.AddArg(p)
-                               v2.AddArg(mem)
+                               v2.AddArg2(p, mem)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -23372,9 +22241,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -23423,9 +22290,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -23495,12 +22360,9 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                                v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
                                                v2.AuxInt = i0
                                                v2.Aux = s
-                                               v2.AddArg(p)
-                                               v2.AddArg(idx)
-                                               v2.AddArg(mem)
+                                               v2.AddArg3(p, idx, mem)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -23545,8 +22407,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                        v1 := b.NewValue0(x0.Pos, OpAMD64MOVWload, typ.UInt16)
                        v1.AuxInt = i0
                        v1.Aux = s
-                       v1.AddArg(p)
-                       v1.AddArg(mem)
+                       v1.AddArg2(p, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -23596,8 +22457,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                        v1 := b.NewValue0(x0.Pos, OpAMD64MOVLload, typ.UInt32)
                        v1.AuxInt = i0
                        v1.Aux = s
-                       v1.AddArg(p)
-                       v1.AddArg(mem)
+                       v1.AddArg2(p, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -23661,12 +22521,10 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                v3 := b.NewValue0(x1.Pos, OpAMD64MOVWload, typ.UInt16)
                                v3.AuxInt = i0
                                v3.Aux = s
-                               v3.AddArg(p)
-                               v3.AddArg(mem)
+                               v3.AddArg2(p, mem)
                                v2.AddArg(v3)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -23716,9 +22574,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
                                        v1.AuxInt = i0
                                        v1.Aux = s
-                                       v1.AddArg(p)
-                                       v1.AddArg(idx)
-                                       v1.AddArg(mem)
+                                       v1.AddArg3(p, idx, mem)
                                        v0.AddArg(v1)
                                        return true
                                }
@@ -23777,9 +22633,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx1, typ.UInt32)
                                        v1.AuxInt = i0
                                        v1.Aux = s
-                                       v1.AddArg(p)
-                                       v1.AddArg(idx)
-                                       v1.AddArg(mem)
+                                       v1.AddArg3(p, idx, mem)
                                        v0.AddArg(v1)
                                        return true
                                }
@@ -23852,13 +22706,10 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                                                v3 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
                                                v3.AuxInt = i0
                                                v3.Aux = s
-                                               v3.AddArg(p)
-                                               v3.AddArg(idx)
-                                               v3.AddArg(mem)
+                                               v3.AddArg3(p, idx, mem)
                                                v2.AddArg(v3)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -23886,9 +22737,7 @@ func rewriteValueAMD64_OpAMD64ORL(v *Value) bool {
                        v.reset(OpAMD64ORLload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -24000,8 +22849,7 @@ func rewriteValueAMD64_OpAMD64ORLconstmodify(v *Value) bool {
                v.reset(OpAMD64ORLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (ORLconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -24023,8 +22871,7 @@ func rewriteValueAMD64_OpAMD64ORLconstmodify(v *Value) bool {
                v.reset(OpAMD64ORLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -24054,9 +22901,7 @@ func rewriteValueAMD64_OpAMD64ORLload(v *Value) bool {
                v.reset(OpAMD64ORLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ORLload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -24079,9 +22924,7 @@ func rewriteValueAMD64_OpAMD64ORLload(v *Value) bool {
                v.reset(OpAMD64ORLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: ( ORLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
@@ -24100,10 +22943,9 @@ func rewriteValueAMD64_OpAMD64ORLload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64ORL)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -24131,9 +22973,7 @@ func rewriteValueAMD64_OpAMD64ORLmodify(v *Value) bool {
                v.reset(OpAMD64ORLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (ORLmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -24156,9 +22996,7 @@ func rewriteValueAMD64_OpAMD64ORLmodify(v *Value) bool {
                v.reset(OpAMD64ORLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -24182,8 +23020,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        }
                        x := v_1
                        v.reset(OpAMD64BTSQ)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -24312,8 +23149,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64ROLQ)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -24363,8 +23199,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64ROLQ)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -24414,8 +23249,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64RORQ)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -24465,8 +23299,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAMD64RORQ)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -24537,8 +23370,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -24578,8 +23410,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -24619,8 +23450,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -24681,11 +23511,9 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                v2 := b.NewValue0(x0.Pos, OpAMD64MOVWload, typ.UInt16)
                                v2.AuxInt = i0
                                v2.Aux = s
-                               v2.AddArg(p)
-                               v2.AddArg(mem)
+                               v2.AddArg2(p, mem)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -24747,11 +23575,9 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                v2 := b.NewValue0(x0.Pos, OpAMD64MOVLload, typ.UInt32)
                                v2.AuxInt = i0
                                v2.Aux = s
-                               v2.AddArg(p)
-                               v2.AddArg(mem)
+                               v2.AddArg2(p, mem)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -24799,9 +23625,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -24850,9 +23674,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -24901,9 +23723,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -24973,12 +23793,9 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                                v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
                                                v2.AuxInt = i0
                                                v2.Aux = s
-                                               v2.AddArg(p)
-                                               v2.AddArg(idx)
-                                               v2.AddArg(mem)
+                                               v2.AddArg3(p, idx, mem)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -25049,12 +23866,9 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                                v2 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx1, typ.UInt32)
                                                v2.AuxInt = i0
                                                v2.Aux = s
-                                               v2.AddArg(p)
-                                               v2.AddArg(idx)
-                                               v2.AddArg(mem)
+                                               v2.AddArg3(p, idx, mem)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -25099,8 +23913,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        v1 := b.NewValue0(x0.Pos, OpAMD64MOVWload, typ.UInt16)
                        v1.AuxInt = i0
                        v1.Aux = s
-                       v1.AddArg(p)
-                       v1.AddArg(mem)
+                       v1.AddArg2(p, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -25150,8 +23963,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        v1 := b.NewValue0(x0.Pos, OpAMD64MOVLload, typ.UInt32)
                        v1.AuxInt = i0
                        v1.Aux = s
-                       v1.AddArg(p)
-                       v1.AddArg(mem)
+                       v1.AddArg2(p, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -25201,8 +24013,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        v1 := b.NewValue0(x0.Pos, OpAMD64MOVQload, typ.UInt64)
                        v1.AuxInt = i0
                        v1.Aux = s
-                       v1.AddArg(p)
-                       v1.AddArg(mem)
+                       v1.AddArg2(p, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -25266,12 +24077,10 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                v3 := b.NewValue0(x1.Pos, OpAMD64MOVWload, typ.UInt16)
                                v3.AuxInt = i0
                                v3.Aux = s
-                               v3.AddArg(p)
-                               v3.AddArg(mem)
+                               v3.AddArg2(p, mem)
                                v2.AddArg(v3)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -25342,12 +24151,10 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                v3 := b.NewValue0(x1.Pos, OpAMD64MOVLload, typ.UInt32)
                                v3.AuxInt = i0
                                v3.Aux = s
-                               v3.AddArg(p)
-                               v3.AddArg(mem)
+                               v3.AddArg2(p, mem)
                                v2.AddArg(v3)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -25397,9 +24204,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
                                        v1.AuxInt = i0
                                        v1.Aux = s
-                                       v1.AddArg(p)
-                                       v1.AddArg(idx)
-                                       v1.AddArg(mem)
+                                       v1.AddArg3(p, idx, mem)
                                        v0.AddArg(v1)
                                        return true
                                }
@@ -25458,9 +24263,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx1, typ.UInt32)
                                        v1.AuxInt = i0
                                        v1.Aux = s
-                                       v1.AddArg(p)
-                                       v1.AddArg(idx)
-                                       v1.AddArg(mem)
+                                       v1.AddArg3(p, idx, mem)
                                        v0.AddArg(v1)
                                        return true
                                }
@@ -25519,9 +24322,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpAMD64MOVQloadidx1, typ.UInt64)
                                        v1.AuxInt = i0
                                        v1.Aux = s
-                                       v1.AddArg(p)
-                                       v1.AddArg(idx)
-                                       v1.AddArg(mem)
+                                       v1.AddArg3(p, idx, mem)
                                        v0.AddArg(v1)
                                        return true
                                }
@@ -25594,13 +24395,10 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                                v3 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
                                                v3.AuxInt = i0
                                                v3.Aux = s
-                                               v3.AddArg(p)
-                                               v3.AddArg(idx)
-                                               v3.AddArg(mem)
+                                               v3.AddArg3(p, idx, mem)
                                                v2.AddArg(v3)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -25680,13 +24478,10 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                                                v3 := b.NewValue0(v.Pos, OpAMD64MOVLloadidx1, typ.UInt32)
                                                v3.AuxInt = i0
                                                v3.Aux = s
-                                               v3.AddArg(p)
-                                               v3.AddArg(idx)
-                                               v3.AddArg(mem)
+                                               v3.AddArg3(p, idx, mem)
                                                v2.AddArg(v3)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -25714,9 +24509,7 @@ func rewriteValueAMD64_OpAMD64ORQ(v *Value) bool {
                        v.reset(OpAMD64ORQload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -25824,8 +24617,7 @@ func rewriteValueAMD64_OpAMD64ORQconstmodify(v *Value) bool {
                v.reset(OpAMD64ORQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (ORQconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -25847,8 +24639,7 @@ func rewriteValueAMD64_OpAMD64ORQconstmodify(v *Value) bool {
                v.reset(OpAMD64ORQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -25878,9 +24669,7 @@ func rewriteValueAMD64_OpAMD64ORQload(v *Value) bool {
                v.reset(OpAMD64ORQload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (ORQload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -25903,9 +24692,7 @@ func rewriteValueAMD64_OpAMD64ORQload(v *Value) bool {
                v.reset(OpAMD64ORQload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: ( ORQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
@@ -25924,10 +24711,9 @@ func rewriteValueAMD64_OpAMD64ORQload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64ORQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -25955,9 +24741,7 @@ func rewriteValueAMD64_OpAMD64ORQmodify(v *Value) bool {
                v.reset(OpAMD64ORQmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (ORQmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -25980,9 +24764,7 @@ func rewriteValueAMD64_OpAMD64ORQmodify(v *Value) bool {
                v.reset(OpAMD64ORQmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -25999,8 +24781,7 @@ func rewriteValueAMD64_OpAMD64ROLB(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64RORB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ROLB x (NEGL y))
@@ -26012,8 +24793,7 @@ func rewriteValueAMD64_OpAMD64ROLB(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64RORB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ROLB x (MOVQconst [c]))
@@ -26086,8 +24866,7 @@ func rewriteValueAMD64_OpAMD64ROLL(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64RORL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ROLL x (NEGL y))
@@ -26099,8 +24878,7 @@ func rewriteValueAMD64_OpAMD64ROLL(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64RORL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ROLL x (MOVQconst [c]))
@@ -26173,8 +24951,7 @@ func rewriteValueAMD64_OpAMD64ROLQ(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64RORQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ROLQ x (NEGL y))
@@ -26186,8 +24963,7 @@ func rewriteValueAMD64_OpAMD64ROLQ(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64RORQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ROLQ x (MOVQconst [c]))
@@ -26260,8 +25036,7 @@ func rewriteValueAMD64_OpAMD64ROLW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64RORW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ROLW x (NEGL y))
@@ -26273,8 +25048,7 @@ func rewriteValueAMD64_OpAMD64ROLW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64RORW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ROLW x (MOVQconst [c]))
@@ -26347,8 +25121,7 @@ func rewriteValueAMD64_OpAMD64RORB(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64ROLB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RORB x (NEGL y))
@@ -26360,8 +25133,7 @@ func rewriteValueAMD64_OpAMD64RORB(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64ROLB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RORB x (MOVQconst [c]))
@@ -26404,8 +25176,7 @@ func rewriteValueAMD64_OpAMD64RORL(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64ROLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RORL x (NEGL y))
@@ -26417,8 +25188,7 @@ func rewriteValueAMD64_OpAMD64RORL(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64ROLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RORL x (MOVQconst [c]))
@@ -26461,8 +25231,7 @@ func rewriteValueAMD64_OpAMD64RORQ(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64ROLQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RORQ x (NEGL y))
@@ -26474,8 +25243,7 @@ func rewriteValueAMD64_OpAMD64RORQ(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64ROLQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RORQ x (MOVQconst [c]))
@@ -26518,8 +25286,7 @@ func rewriteValueAMD64_OpAMD64RORW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64ROLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RORW x (NEGL y))
@@ -26531,8 +25298,7 @@ func rewriteValueAMD64_OpAMD64RORW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpAMD64ROLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RORW x (MOVQconst [c]))
@@ -26666,8 +25432,7 @@ func rewriteValueAMD64_OpAMD64SARL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SARL x (NEGQ <t> (ADDQconst [c] y)))
@@ -26689,10 +25454,9 @@ func rewriteValueAMD64_OpAMD64SARL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SARL x (ANDQconst [c] y))
@@ -26709,8 +25473,7 @@ func rewriteValueAMD64_OpAMD64SARL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SARL x (NEGQ <t> (ANDQconst [c] y)))
@@ -26732,10 +25495,9 @@ func rewriteValueAMD64_OpAMD64SARL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SARL x (ADDLconst [c] y))
@@ -26752,8 +25514,7 @@ func rewriteValueAMD64_OpAMD64SARL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SARL x (NEGL <t> (ADDLconst [c] y)))
@@ -26775,10 +25536,9 @@ func rewriteValueAMD64_OpAMD64SARL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SARL x (ANDLconst [c] y))
@@ -26795,8 +25555,7 @@ func rewriteValueAMD64_OpAMD64SARL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SARL x (NEGL <t> (ANDLconst [c] y)))
@@ -26818,10 +25577,9 @@ func rewriteValueAMD64_OpAMD64SARL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -26898,8 +25656,7 @@ func rewriteValueAMD64_OpAMD64SARQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SARQ x (NEGQ <t> (ADDQconst [c] y)))
@@ -26921,10 +25678,9 @@ func rewriteValueAMD64_OpAMD64SARQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SARQ x (ANDQconst [c] y))
@@ -26941,8 +25697,7 @@ func rewriteValueAMD64_OpAMD64SARQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SARQ x (NEGQ <t> (ANDQconst [c] y)))
@@ -26964,10 +25719,9 @@ func rewriteValueAMD64_OpAMD64SARQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SARQ x (ADDLconst [c] y))
@@ -26984,8 +25738,7 @@ func rewriteValueAMD64_OpAMD64SARQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SARQ x (NEGL <t> (ADDLconst [c] y)))
@@ -27007,10 +25760,9 @@ func rewriteValueAMD64_OpAMD64SARQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SARQ x (ANDLconst [c] y))
@@ -27027,8 +25779,7 @@ func rewriteValueAMD64_OpAMD64SARQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SARQ x (NEGL <t> (ANDLconst [c] y)))
@@ -27050,10 +25801,9 @@ func rewriteValueAMD64_OpAMD64SARQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -27218,8 +25968,7 @@ func rewriteValueAMD64_OpAMD64SBBQ(v *Value) bool {
                }
                v.reset(OpAMD64SBBQconst)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(borrow)
+               v.AddArg2(x, borrow)
                return true
        }
        // match: (SBBQ x y (FlagEQ))
@@ -27231,8 +25980,7 @@ func rewriteValueAMD64_OpAMD64SBBQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SUBQborrow)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -27515,9 +26263,7 @@ func rewriteValueAMD64_OpAMD64SETAEstore(v *Value) bool {
                v.reset(OpAMD64SETBEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (SETAEstore [off1] {sym} (ADDQconst [off2] base) val mem)
@@ -27539,9 +26285,7 @@ func rewriteValueAMD64_OpAMD64SETAEstore(v *Value) bool {
                v.reset(OpAMD64SETAEstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETAEstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -27564,9 +26308,7 @@ func rewriteValueAMD64_OpAMD64SETAEstore(v *Value) bool {
                v.reset(OpAMD64SETAEstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETAEstore [off] {sym} ptr (FlagEQ) mem)
@@ -27582,11 +26324,9 @@ func rewriteValueAMD64_OpAMD64SETAEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETAEstore [off] {sym} ptr (FlagLT_ULT) mem)
@@ -27602,11 +26342,9 @@ func rewriteValueAMD64_OpAMD64SETAEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETAEstore [off] {sym} ptr (FlagLT_UGT) mem)
@@ -27622,11 +26360,9 @@ func rewriteValueAMD64_OpAMD64SETAEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETAEstore [off] {sym} ptr (FlagGT_ULT) mem)
@@ -27642,11 +26378,9 @@ func rewriteValueAMD64_OpAMD64SETAEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETAEstore [off] {sym} ptr (FlagGT_UGT) mem)
@@ -27662,11 +26396,9 @@ func rewriteValueAMD64_OpAMD64SETAEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -27691,9 +26423,7 @@ func rewriteValueAMD64_OpAMD64SETAstore(v *Value) bool {
                v.reset(OpAMD64SETBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (SETAstore [off1] {sym} (ADDQconst [off2] base) val mem)
@@ -27715,9 +26445,7 @@ func rewriteValueAMD64_OpAMD64SETAstore(v *Value) bool {
                v.reset(OpAMD64SETAstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETAstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -27740,9 +26468,7 @@ func rewriteValueAMD64_OpAMD64SETAstore(v *Value) bool {
                v.reset(OpAMD64SETAstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETAstore [off] {sym} ptr (FlagEQ) mem)
@@ -27758,11 +26484,9 @@ func rewriteValueAMD64_OpAMD64SETAstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETAstore [off] {sym} ptr (FlagLT_ULT) mem)
@@ -27778,11 +26502,9 @@ func rewriteValueAMD64_OpAMD64SETAstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETAstore [off] {sym} ptr (FlagLT_UGT) mem)
@@ -27798,11 +26520,9 @@ func rewriteValueAMD64_OpAMD64SETAstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETAstore [off] {sym} ptr (FlagGT_ULT) mem)
@@ -27818,11 +26538,9 @@ func rewriteValueAMD64_OpAMD64SETAstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETAstore [off] {sym} ptr (FlagGT_UGT) mem)
@@ -27838,11 +26556,9 @@ func rewriteValueAMD64_OpAMD64SETAstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -28053,9 +26769,7 @@ func rewriteValueAMD64_OpAMD64SETBEstore(v *Value) bool {
                v.reset(OpAMD64SETAEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (SETBEstore [off1] {sym} (ADDQconst [off2] base) val mem)
@@ -28077,9 +26791,7 @@ func rewriteValueAMD64_OpAMD64SETBEstore(v *Value) bool {
                v.reset(OpAMD64SETBEstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETBEstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -28102,9 +26814,7 @@ func rewriteValueAMD64_OpAMD64SETBEstore(v *Value) bool {
                v.reset(OpAMD64SETBEstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETBEstore [off] {sym} ptr (FlagEQ) mem)
@@ -28120,11 +26830,9 @@ func rewriteValueAMD64_OpAMD64SETBEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETBEstore [off] {sym} ptr (FlagLT_ULT) mem)
@@ -28140,11 +26848,9 @@ func rewriteValueAMD64_OpAMD64SETBEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETBEstore [off] {sym} ptr (FlagLT_UGT) mem)
@@ -28160,11 +26866,9 @@ func rewriteValueAMD64_OpAMD64SETBEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETBEstore [off] {sym} ptr (FlagGT_ULT) mem)
@@ -28180,11 +26884,9 @@ func rewriteValueAMD64_OpAMD64SETBEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETBEstore [off] {sym} ptr (FlagGT_UGT) mem)
@@ -28200,11 +26902,9 @@ func rewriteValueAMD64_OpAMD64SETBEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -28229,9 +26929,7 @@ func rewriteValueAMD64_OpAMD64SETBstore(v *Value) bool {
                v.reset(OpAMD64SETAstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (SETBstore [off1] {sym} (ADDQconst [off2] base) val mem)
@@ -28253,9 +26951,7 @@ func rewriteValueAMD64_OpAMD64SETBstore(v *Value) bool {
                v.reset(OpAMD64SETBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETBstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -28278,9 +26974,7 @@ func rewriteValueAMD64_OpAMD64SETBstore(v *Value) bool {
                v.reset(OpAMD64SETBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETBstore [off] {sym} ptr (FlagEQ) mem)
@@ -28296,11 +26990,9 @@ func rewriteValueAMD64_OpAMD64SETBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETBstore [off] {sym} ptr (FlagLT_ULT) mem)
@@ -28316,11 +27008,9 @@ func rewriteValueAMD64_OpAMD64SETBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETBstore [off] {sym} ptr (FlagLT_UGT) mem)
@@ -28336,11 +27026,9 @@ func rewriteValueAMD64_OpAMD64SETBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETBstore [off] {sym} ptr (FlagGT_ULT) mem)
@@ -28356,11 +27044,9 @@ func rewriteValueAMD64_OpAMD64SETBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETBstore [off] {sym} ptr (FlagGT_UGT) mem)
@@ -28376,11 +27062,9 @@ func rewriteValueAMD64_OpAMD64SETBstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -28409,8 +27093,7 @@ func rewriteValueAMD64_OpAMD64SETEQ(v *Value) bool {
                        y := v_0_1
                        v.reset(OpAMD64SETAE)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTL, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        v.AddArg(v0)
                        return true
                }
@@ -28437,8 +27120,7 @@ func rewriteValueAMD64_OpAMD64SETEQ(v *Value) bool {
                        y := v_0_1
                        v.reset(OpAMD64SETAE)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQ, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        v.AddArg(v0)
                        return true
                }
@@ -28829,12 +27511,9 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                        v.reset(OpAMD64SETAEstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTL, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v0.AddArg2(x, y)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -28865,12 +27544,9 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                        v.reset(OpAMD64SETAEstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQ, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v0.AddArg2(x, y)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -28894,12 +27570,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64SETAEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64BTLconst, types.TypeFlags)
                v0.AuxInt = log2uint32(c)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETEQstore [off] {sym} ptr (TESTQconst [c] x) mem)
@@ -28921,12 +27595,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64SETAEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64BTQconst, types.TypeFlags)
                v0.AuxInt = log2(c)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETEQstore [off] {sym} ptr (TESTQ (MOVQconst [c]) x) mem)
@@ -28955,12 +27627,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                        v.reset(OpAMD64SETAEstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQconst, types.TypeFlags)
                        v0.AuxInt = log2(c)
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -28982,12 +27652,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64SETNEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
                v0.AuxInt = 0
                v0.AddArg(s)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETEQstore [off] {sym} ptr (CMPQconst [1] s:(ANDQconst [1] _)) mem)
@@ -29007,12 +27675,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64SETNEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v0.AuxInt = 0
                v0.AddArg(s)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETEQstore [off] {sym} ptr (TESTQ z1:(SHLQconst [63] (SHRQconst [63] x)) z2) mem)
@@ -29046,12 +27712,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                        v.reset(OpAMD64SETAEstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQconst, types.TypeFlags)
                        v0.AuxInt = 63
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -29087,12 +27751,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                        v.reset(OpAMD64SETAEstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTLconst, types.TypeFlags)
                        v0.AuxInt = 31
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -29128,12 +27790,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                        v.reset(OpAMD64SETAEstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQconst, types.TypeFlags)
                        v0.AuxInt = 0
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -29169,12 +27829,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                        v.reset(OpAMD64SETAEstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTLconst, types.TypeFlags)
                        v0.AuxInt = 0
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -29206,12 +27864,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                        v.reset(OpAMD64SETAEstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQconst, types.TypeFlags)
                        v0.AuxInt = 63
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -29243,12 +27899,10 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                        v.reset(OpAMD64SETAEstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTLconst, types.TypeFlags)
                        v0.AuxInt = 31
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -29267,9 +27921,7 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64SETEQstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (SETEQstore [off1] {sym} (ADDQconst [off2] base) val mem)
@@ -29291,9 +27943,7 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64SETEQstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETEQstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -29316,9 +27966,7 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64SETEQstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETEQstore [off] {sym} ptr (FlagEQ) mem)
@@ -29334,11 +27982,9 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETEQstore [off] {sym} ptr (FlagLT_ULT) mem)
@@ -29354,11 +28000,9 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETEQstore [off] {sym} ptr (FlagLT_UGT) mem)
@@ -29374,11 +28018,9 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETEQstore [off] {sym} ptr (FlagGT_ULT) mem)
@@ -29394,11 +28036,9 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETEQstore [off] {sym} ptr (FlagGT_UGT) mem)
@@ -29414,11 +28054,9 @@ func rewriteValueAMD64_OpAMD64SETEQstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -29573,9 +28211,7 @@ func rewriteValueAMD64_OpAMD64SETGEstore(v *Value) bool {
                v.reset(OpAMD64SETLEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (SETGEstore [off1] {sym} (ADDQconst [off2] base) val mem)
@@ -29597,9 +28233,7 @@ func rewriteValueAMD64_OpAMD64SETGEstore(v *Value) bool {
                v.reset(OpAMD64SETGEstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETGEstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -29622,9 +28256,7 @@ func rewriteValueAMD64_OpAMD64SETGEstore(v *Value) bool {
                v.reset(OpAMD64SETGEstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETGEstore [off] {sym} ptr (FlagEQ) mem)
@@ -29640,11 +28272,9 @@ func rewriteValueAMD64_OpAMD64SETGEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETGEstore [off] {sym} ptr (FlagLT_ULT) mem)
@@ -29660,11 +28290,9 @@ func rewriteValueAMD64_OpAMD64SETGEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETGEstore [off] {sym} ptr (FlagLT_UGT) mem)
@@ -29680,11 +28308,9 @@ func rewriteValueAMD64_OpAMD64SETGEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETGEstore [off] {sym} ptr (FlagGT_ULT) mem)
@@ -29700,11 +28326,9 @@ func rewriteValueAMD64_OpAMD64SETGEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETGEstore [off] {sym} ptr (FlagGT_UGT) mem)
@@ -29720,11 +28344,9 @@ func rewriteValueAMD64_OpAMD64SETGEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -29749,9 +28371,7 @@ func rewriteValueAMD64_OpAMD64SETGstore(v *Value) bool {
                v.reset(OpAMD64SETLstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (SETGstore [off1] {sym} (ADDQconst [off2] base) val mem)
@@ -29773,9 +28393,7 @@ func rewriteValueAMD64_OpAMD64SETGstore(v *Value) bool {
                v.reset(OpAMD64SETGstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETGstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -29798,9 +28416,7 @@ func rewriteValueAMD64_OpAMD64SETGstore(v *Value) bool {
                v.reset(OpAMD64SETGstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETGstore [off] {sym} ptr (FlagEQ) mem)
@@ -29816,11 +28432,9 @@ func rewriteValueAMD64_OpAMD64SETGstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETGstore [off] {sym} ptr (FlagLT_ULT) mem)
@@ -29836,11 +28450,9 @@ func rewriteValueAMD64_OpAMD64SETGstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETGstore [off] {sym} ptr (FlagLT_UGT) mem)
@@ -29856,11 +28468,9 @@ func rewriteValueAMD64_OpAMD64SETGstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETGstore [off] {sym} ptr (FlagGT_ULT) mem)
@@ -29876,11 +28486,9 @@ func rewriteValueAMD64_OpAMD64SETGstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETGstore [off] {sym} ptr (FlagGT_UGT) mem)
@@ -29896,11 +28504,9 @@ func rewriteValueAMD64_OpAMD64SETGstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -30055,9 +28661,7 @@ func rewriteValueAMD64_OpAMD64SETLEstore(v *Value) bool {
                v.reset(OpAMD64SETGEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (SETLEstore [off1] {sym} (ADDQconst [off2] base) val mem)
@@ -30079,9 +28683,7 @@ func rewriteValueAMD64_OpAMD64SETLEstore(v *Value) bool {
                v.reset(OpAMD64SETLEstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETLEstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -30104,9 +28706,7 @@ func rewriteValueAMD64_OpAMD64SETLEstore(v *Value) bool {
                v.reset(OpAMD64SETLEstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETLEstore [off] {sym} ptr (FlagEQ) mem)
@@ -30122,11 +28722,9 @@ func rewriteValueAMD64_OpAMD64SETLEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETLEstore [off] {sym} ptr (FlagLT_ULT) mem)
@@ -30142,11 +28740,9 @@ func rewriteValueAMD64_OpAMD64SETLEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETLEstore [off] {sym} ptr (FlagLT_UGT) mem)
@@ -30162,11 +28758,9 @@ func rewriteValueAMD64_OpAMD64SETLEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETLEstore [off] {sym} ptr (FlagGT_ULT) mem)
@@ -30182,11 +28776,9 @@ func rewriteValueAMD64_OpAMD64SETLEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETLEstore [off] {sym} ptr (FlagGT_UGT) mem)
@@ -30202,11 +28794,9 @@ func rewriteValueAMD64_OpAMD64SETLEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -30231,9 +28821,7 @@ func rewriteValueAMD64_OpAMD64SETLstore(v *Value) bool {
                v.reset(OpAMD64SETGstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (SETLstore [off1] {sym} (ADDQconst [off2] base) val mem)
@@ -30255,9 +28843,7 @@ func rewriteValueAMD64_OpAMD64SETLstore(v *Value) bool {
                v.reset(OpAMD64SETLstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETLstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -30280,9 +28866,7 @@ func rewriteValueAMD64_OpAMD64SETLstore(v *Value) bool {
                v.reset(OpAMD64SETLstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETLstore [off] {sym} ptr (FlagEQ) mem)
@@ -30298,11 +28882,9 @@ func rewriteValueAMD64_OpAMD64SETLstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETLstore [off] {sym} ptr (FlagLT_ULT) mem)
@@ -30318,11 +28900,9 @@ func rewriteValueAMD64_OpAMD64SETLstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETLstore [off] {sym} ptr (FlagLT_UGT) mem)
@@ -30338,11 +28918,9 @@ func rewriteValueAMD64_OpAMD64SETLstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETLstore [off] {sym} ptr (FlagGT_ULT) mem)
@@ -30358,11 +28936,9 @@ func rewriteValueAMD64_OpAMD64SETLstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETLstore [off] {sym} ptr (FlagGT_UGT) mem)
@@ -30378,11 +28954,9 @@ func rewriteValueAMD64_OpAMD64SETLstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -30411,8 +28985,7 @@ func rewriteValueAMD64_OpAMD64SETNE(v *Value) bool {
                        y := v_0_1
                        v.reset(OpAMD64SETB)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTL, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        v.AddArg(v0)
                        return true
                }
@@ -30439,8 +29012,7 @@ func rewriteValueAMD64_OpAMD64SETNE(v *Value) bool {
                        y := v_0_1
                        v.reset(OpAMD64SETB)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQ, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        v.AddArg(v0)
                        return true
                }
@@ -30831,12 +29403,9 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                        v.reset(OpAMD64SETBstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTL, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v0.AddArg2(x, y)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -30867,12 +29436,9 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                        v.reset(OpAMD64SETBstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQ, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v0.AddArg2(x, y)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -30896,12 +29462,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64SETBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64BTLconst, types.TypeFlags)
                v0.AuxInt = log2uint32(c)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETNEstore [off] {sym} ptr (TESTQconst [c] x) mem)
@@ -30923,12 +29487,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64SETBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64BTQconst, types.TypeFlags)
                v0.AuxInt = log2(c)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETNEstore [off] {sym} ptr (TESTQ (MOVQconst [c]) x) mem)
@@ -30957,12 +29519,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                        v.reset(OpAMD64SETBstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQconst, types.TypeFlags)
                        v0.AuxInt = log2(c)
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -30984,12 +29544,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64SETEQstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
                v0.AuxInt = 0
                v0.AddArg(s)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETNEstore [off] {sym} ptr (CMPQconst [1] s:(ANDQconst [1] _)) mem)
@@ -31009,12 +29567,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64SETEQstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v0.AuxInt = 0
                v0.AddArg(s)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETNEstore [off] {sym} ptr (TESTQ z1:(SHLQconst [63] (SHRQconst [63] x)) z2) mem)
@@ -31048,12 +29604,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                        v.reset(OpAMD64SETBstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQconst, types.TypeFlags)
                        v0.AuxInt = 63
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -31089,12 +29643,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                        v.reset(OpAMD64SETBstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTLconst, types.TypeFlags)
                        v0.AuxInt = 31
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -31130,12 +29682,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                        v.reset(OpAMD64SETBstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQconst, types.TypeFlags)
                        v0.AuxInt = 0
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -31171,12 +29721,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                        v.reset(OpAMD64SETBstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTLconst, types.TypeFlags)
                        v0.AuxInt = 0
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -31208,12 +29756,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                        v.reset(OpAMD64SETBstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTQconst, types.TypeFlags)
                        v0.AuxInt = 63
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -31245,12 +29791,10 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                        v.reset(OpAMD64SETBstore)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
                        v0 := b.NewValue0(v.Pos, OpAMD64BTLconst, types.TypeFlags)
                        v0.AuxInt = 31
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, v0, mem)
                        return true
                }
                break
@@ -31269,9 +29813,7 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64SETNEstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (SETNEstore [off1] {sym} (ADDQconst [off2] base) val mem)
@@ -31293,9 +29835,7 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64SETNEstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETNEstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -31318,9 +29858,7 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64SETNEstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SETNEstore [off] {sym} ptr (FlagEQ) mem)
@@ -31336,11 +29874,9 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETNEstore [off] {sym} ptr (FlagLT_ULT) mem)
@@ -31356,11 +29892,9 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETNEstore [off] {sym} ptr (FlagLT_UGT) mem)
@@ -31376,11 +29910,9 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETNEstore [off] {sym} ptr (FlagGT_ULT) mem)
@@ -31396,11 +29928,9 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (SETNEstore [off] {sym} ptr (FlagGT_UGT) mem)
@@ -31416,11 +29946,9 @@ func rewriteValueAMD64_OpAMD64SETNEstore(v *Value) bool {
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLconst, typ.UInt8)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -31469,8 +29997,7 @@ func rewriteValueAMD64_OpAMD64SHLL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHLL x (NEGQ <t> (ADDQconst [c] y)))
@@ -31492,10 +30019,9 @@ func rewriteValueAMD64_OpAMD64SHLL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHLL x (ANDQconst [c] y))
@@ -31512,8 +30038,7 @@ func rewriteValueAMD64_OpAMD64SHLL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHLL x (NEGQ <t> (ANDQconst [c] y)))
@@ -31535,10 +30060,9 @@ func rewriteValueAMD64_OpAMD64SHLL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHLL x (ADDLconst [c] y))
@@ -31555,8 +30079,7 @@ func rewriteValueAMD64_OpAMD64SHLL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHLL x (NEGL <t> (ADDLconst [c] y)))
@@ -31578,10 +30101,9 @@ func rewriteValueAMD64_OpAMD64SHLL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHLL x (ANDLconst [c] y))
@@ -31598,8 +30120,7 @@ func rewriteValueAMD64_OpAMD64SHLL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHLL x (NEGL <t> (ANDLconst [c] y)))
@@ -31621,10 +30142,9 @@ func rewriteValueAMD64_OpAMD64SHLL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -31713,8 +30233,7 @@ func rewriteValueAMD64_OpAMD64SHLQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHLQ x (NEGQ <t> (ADDQconst [c] y)))
@@ -31736,10 +30255,9 @@ func rewriteValueAMD64_OpAMD64SHLQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHLQ x (ANDQconst [c] y))
@@ -31756,8 +30274,7 @@ func rewriteValueAMD64_OpAMD64SHLQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHLQ x (NEGQ <t> (ANDQconst [c] y)))
@@ -31779,10 +30296,9 @@ func rewriteValueAMD64_OpAMD64SHLQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHLQ x (ADDLconst [c] y))
@@ -31799,8 +30315,7 @@ func rewriteValueAMD64_OpAMD64SHLQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHLQ x (NEGL <t> (ADDLconst [c] y)))
@@ -31822,10 +30337,9 @@ func rewriteValueAMD64_OpAMD64SHLQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHLQ x (ANDLconst [c] y))
@@ -31842,8 +30356,7 @@ func rewriteValueAMD64_OpAMD64SHLQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHLQ x (NEGL <t> (ANDLconst [c] y)))
@@ -31865,10 +30378,9 @@ func rewriteValueAMD64_OpAMD64SHLQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -32054,8 +30566,7 @@ func rewriteValueAMD64_OpAMD64SHRL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHRL x (NEGQ <t> (ADDQconst [c] y)))
@@ -32077,10 +30588,9 @@ func rewriteValueAMD64_OpAMD64SHRL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHRL x (ANDQconst [c] y))
@@ -32097,8 +30607,7 @@ func rewriteValueAMD64_OpAMD64SHRL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHRL x (NEGQ <t> (ANDQconst [c] y)))
@@ -32120,10 +30629,9 @@ func rewriteValueAMD64_OpAMD64SHRL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHRL x (ADDLconst [c] y))
@@ -32140,8 +30648,7 @@ func rewriteValueAMD64_OpAMD64SHRL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHRL x (NEGL <t> (ADDLconst [c] y)))
@@ -32163,10 +30670,9 @@ func rewriteValueAMD64_OpAMD64SHRL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHRL x (ANDLconst [c] y))
@@ -32183,8 +30689,7 @@ func rewriteValueAMD64_OpAMD64SHRL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHRL x (NEGL <t> (ANDLconst [c] y)))
@@ -32206,10 +30711,9 @@ func rewriteValueAMD64_OpAMD64SHRL(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -32286,8 +30790,7 @@ func rewriteValueAMD64_OpAMD64SHRQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHRQ x (NEGQ <t> (ADDQconst [c] y)))
@@ -32309,10 +30812,9 @@ func rewriteValueAMD64_OpAMD64SHRQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHRQ x (ANDQconst [c] y))
@@ -32329,8 +30831,7 @@ func rewriteValueAMD64_OpAMD64SHRQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHRQ x (NEGQ <t> (ANDQconst [c] y)))
@@ -32352,10 +30853,9 @@ func rewriteValueAMD64_OpAMD64SHRQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGQ, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHRQ x (ADDLconst [c] y))
@@ -32372,8 +30872,7 @@ func rewriteValueAMD64_OpAMD64SHRQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHRQ x (NEGL <t> (ADDLconst [c] y)))
@@ -32395,10 +30894,9 @@ func rewriteValueAMD64_OpAMD64SHRQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SHRQ x (ANDLconst [c] y))
@@ -32415,8 +30913,7 @@ func rewriteValueAMD64_OpAMD64SHRQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SHRQ x (NEGL <t> (ANDLconst [c] y)))
@@ -32438,10 +30935,9 @@ func rewriteValueAMD64_OpAMD64SHRQ(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64NEGL, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -32621,9 +31117,7 @@ func rewriteValueAMD64_OpAMD64SUBL(v *Value) bool {
                v.reset(OpAMD64SUBLload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -32680,9 +31174,7 @@ func rewriteValueAMD64_OpAMD64SUBLload(v *Value) bool {
                v.reset(OpAMD64SUBLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBLload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -32705,9 +31197,7 @@ func rewriteValueAMD64_OpAMD64SUBLload(v *Value) bool {
                v.reset(OpAMD64SUBLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
@@ -32726,10 +31216,9 @@ func rewriteValueAMD64_OpAMD64SUBLload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64SUBL)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -32757,9 +31246,7 @@ func rewriteValueAMD64_OpAMD64SUBLmodify(v *Value) bool {
                v.reset(OpAMD64SUBLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SUBLmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -32782,9 +31269,7 @@ func rewriteValueAMD64_OpAMD64SUBLmodify(v *Value) bool {
                v.reset(OpAMD64SUBLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -32859,9 +31344,7 @@ func rewriteValueAMD64_OpAMD64SUBQ(v *Value) bool {
                v.reset(OpAMD64SUBQload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -32973,9 +31456,7 @@ func rewriteValueAMD64_OpAMD64SUBQload(v *Value) bool {
                v.reset(OpAMD64SUBQload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBQload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -32998,9 +31479,7 @@ func rewriteValueAMD64_OpAMD64SUBQload(v *Value) bool {
                v.reset(OpAMD64SUBQload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
@@ -33019,10 +31498,9 @@ func rewriteValueAMD64_OpAMD64SUBQload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64SUBQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -33050,9 +31528,7 @@ func rewriteValueAMD64_OpAMD64SUBQmodify(v *Value) bool {
                v.reset(OpAMD64SUBQmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (SUBQmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -33075,9 +31551,7 @@ func rewriteValueAMD64_OpAMD64SUBQmodify(v *Value) bool {
                v.reset(OpAMD64SUBQmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -33104,9 +31578,7 @@ func rewriteValueAMD64_OpAMD64SUBSD(v *Value) bool {
                v.reset(OpAMD64SUBSDload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -33136,9 +31608,7 @@ func rewriteValueAMD64_OpAMD64SUBSDload(v *Value) bool {
                v.reset(OpAMD64SUBSDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBSDload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -33161,9 +31631,7 @@ func rewriteValueAMD64_OpAMD64SUBSDload(v *Value) bool {
                v.reset(OpAMD64SUBSDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBSDload x [off] {sym} ptr (MOVQstore [off] {sym} ptr y _))
@@ -33182,10 +31650,9 @@ func rewriteValueAMD64_OpAMD64SUBSDload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64SUBSD)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQi2f, typ.Float64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -33212,9 +31679,7 @@ func rewriteValueAMD64_OpAMD64SUBSS(v *Value) bool {
                v.reset(OpAMD64SUBSSload)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -33244,9 +31709,7 @@ func rewriteValueAMD64_OpAMD64SUBSSload(v *Value) bool {
                v.reset(OpAMD64SUBSSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBSSload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -33269,9 +31732,7 @@ func rewriteValueAMD64_OpAMD64SUBSSload(v *Value) bool {
                v.reset(OpAMD64SUBSSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (SUBSSload x [off] {sym} ptr (MOVLstore [off] {sym} ptr y _))
@@ -33290,10 +31751,9 @@ func rewriteValueAMD64_OpAMD64SUBSSload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64SUBSS)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLi2f, typ.Float32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -33341,8 +31801,7 @@ func rewriteValueAMD64_OpAMD64TESTB(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = makeValAndOff(0, off)
                        v0.Aux = sym
-                       v0.AddArg(ptr)
-                       v0.AddArg(mem)
+                       v0.AddArg2(ptr, mem)
                        return true
                }
                break
@@ -33363,8 +31822,7 @@ func rewriteValueAMD64_OpAMD64TESTBconst(v *Value) bool {
                        break
                }
                v.reset(OpAMD64TESTB)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        return false
@@ -33412,8 +31870,7 @@ func rewriteValueAMD64_OpAMD64TESTL(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = makeValAndOff(0, off)
                        v0.Aux = sym
-                       v0.AddArg(ptr)
-                       v0.AddArg(mem)
+                       v0.AddArg2(ptr, mem)
                        return true
                }
                break
@@ -33444,8 +31901,7 @@ func rewriteValueAMD64_OpAMD64TESTLconst(v *Value) bool {
                        break
                }
                v.reset(OpAMD64TESTL)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        return false
@@ -33497,8 +31953,7 @@ func rewriteValueAMD64_OpAMD64TESTQ(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = makeValAndOff(0, off)
                        v0.Aux = sym
-                       v0.AddArg(ptr)
-                       v0.AddArg(mem)
+                       v0.AddArg2(ptr, mem)
                        return true
                }
                break
@@ -33529,8 +31984,7 @@ func rewriteValueAMD64_OpAMD64TESTQconst(v *Value) bool {
                        break
                }
                v.reset(OpAMD64TESTQ)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        return false
@@ -33578,8 +32032,7 @@ func rewriteValueAMD64_OpAMD64TESTW(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = makeValAndOff(0, off)
                        v0.Aux = sym
-                       v0.AddArg(ptr)
-                       v0.AddArg(mem)
+                       v0.AddArg2(ptr, mem)
                        return true
                }
                break
@@ -33600,8 +32053,7 @@ func rewriteValueAMD64_OpAMD64TESTWconst(v *Value) bool {
                        break
                }
                v.reset(OpAMD64TESTW)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
        return false
@@ -33629,9 +32081,7 @@ func rewriteValueAMD64_OpAMD64XADDLlock(v *Value) bool {
                v.reset(OpAMD64XADDLlock)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(val, ptr, mem)
                return true
        }
        return false
@@ -33659,9 +32109,7 @@ func rewriteValueAMD64_OpAMD64XADDQlock(v *Value) bool {
                v.reset(OpAMD64XADDQlock)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(val, ptr, mem)
                return true
        }
        return false
@@ -33689,9 +32137,7 @@ func rewriteValueAMD64_OpAMD64XCHGL(v *Value) bool {
                v.reset(OpAMD64XCHGL)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(val, ptr, mem)
                return true
        }
        // match: (XCHGL [off1] {sym1} val (LEAQ [off2] {sym2} ptr) mem)
@@ -33714,9 +32160,7 @@ func rewriteValueAMD64_OpAMD64XCHGL(v *Value) bool {
                v.reset(OpAMD64XCHGL)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(val, ptr, mem)
                return true
        }
        return false
@@ -33744,9 +32188,7 @@ func rewriteValueAMD64_OpAMD64XCHGQ(v *Value) bool {
                v.reset(OpAMD64XCHGQ)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(val, ptr, mem)
                return true
        }
        // match: (XCHGQ [off1] {sym1} val (LEAQ [off2] {sym2} ptr) mem)
@@ -33769,9 +32211,7 @@ func rewriteValueAMD64_OpAMD64XCHGQ(v *Value) bool {
                v.reset(OpAMD64XCHGQ)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(val, ptr, mem)
                return true
        }
        return false
@@ -33793,8 +32233,7 @@ func rewriteValueAMD64_OpAMD64XORL(v *Value) bool {
                        }
                        x := v_1
                        v.reset(OpAMD64BTCL)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -33940,9 +32379,7 @@ func rewriteValueAMD64_OpAMD64XORL(v *Value) bool {
                        v.reset(OpAMD64XORLload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -34152,8 +32589,7 @@ func rewriteValueAMD64_OpAMD64XORLconstmodify(v *Value) bool {
                v.reset(OpAMD64XORLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (XORLconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -34175,8 +32611,7 @@ func rewriteValueAMD64_OpAMD64XORLconstmodify(v *Value) bool {
                v.reset(OpAMD64XORLconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -34206,9 +32641,7 @@ func rewriteValueAMD64_OpAMD64XORLload(v *Value) bool {
                v.reset(OpAMD64XORLload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (XORLload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -34231,9 +32664,7 @@ func rewriteValueAMD64_OpAMD64XORLload(v *Value) bool {
                v.reset(OpAMD64XORLload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (XORLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
@@ -34252,10 +32683,9 @@ func rewriteValueAMD64_OpAMD64XORLload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64XORL)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -34283,9 +32713,7 @@ func rewriteValueAMD64_OpAMD64XORLmodify(v *Value) bool {
                v.reset(OpAMD64XORLmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (XORLmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -34308,9 +32736,7 @@ func rewriteValueAMD64_OpAMD64XORLmodify(v *Value) bool {
                v.reset(OpAMD64XORLmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -34332,8 +32758,7 @@ func rewriteValueAMD64_OpAMD64XORQ(v *Value) bool {
                        }
                        x := v_1
                        v.reset(OpAMD64BTCQ)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -34433,9 +32858,7 @@ func rewriteValueAMD64_OpAMD64XORQ(v *Value) bool {
                        v.reset(OpAMD64XORQload)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -34533,8 +32956,7 @@ func rewriteValueAMD64_OpAMD64XORQconstmodify(v *Value) bool {
                v.reset(OpAMD64XORQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (XORQconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
@@ -34556,8 +32978,7 @@ func rewriteValueAMD64_OpAMD64XORQconstmodify(v *Value) bool {
                v.reset(OpAMD64XORQconstmodify)
                v.AuxInt = ValAndOff(valoff1).add(off2)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -34587,9 +33008,7 @@ func rewriteValueAMD64_OpAMD64XORQload(v *Value) bool {
                v.reset(OpAMD64XORQload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (XORQload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
@@ -34612,9 +33031,7 @@ func rewriteValueAMD64_OpAMD64XORQload(v *Value) bool {
                v.reset(OpAMD64XORQload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(val)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg3(val, base, mem)
                return true
        }
        // match: (XORQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
@@ -34633,10 +33050,9 @@ func rewriteValueAMD64_OpAMD64XORQload(v *Value) bool {
                }
                y := v_2.Args[1]
                v.reset(OpAMD64XORQ)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -34664,9 +33080,7 @@ func rewriteValueAMD64_OpAMD64XORQmodify(v *Value) bool {
                v.reset(OpAMD64XORQmodify)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (XORQmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
@@ -34689,9 +33103,7 @@ func rewriteValueAMD64_OpAMD64XORQmodify(v *Value) bool {
                v.reset(OpAMD64XORQmodify)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -34709,12 +33121,9 @@ func rewriteValueAMD64_OpAtomicAdd32(v *Value) bool {
                val := v_1
                mem := v_2
                v.reset(OpAMD64AddTupleFirst32)
-               v.AddArg(val)
                v0 := b.NewValue0(v.Pos, OpAMD64XADDLlock, types.NewTuple(typ.UInt32, types.TypeMem))
-               v0.AddArg(val)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg3(val, ptr, mem)
+               v.AddArg2(val, v0)
                return true
        }
 }
@@ -34731,12 +33140,9 @@ func rewriteValueAMD64_OpAtomicAdd64(v *Value) bool {
                val := v_1
                mem := v_2
                v.reset(OpAMD64AddTupleFirst64)
-               v.AddArg(val)
                v0 := b.NewValue0(v.Pos, OpAMD64XADDQlock, types.NewTuple(typ.UInt64, types.TypeMem))
-               v0.AddArg(val)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg3(val, ptr, mem)
+               v.AddArg2(val, v0)
                return true
        }
 }
@@ -34751,9 +33157,7 @@ func rewriteValueAMD64_OpAtomicExchange32(v *Value) bool {
                val := v_1
                mem := v_2
                v.reset(OpAMD64XCHGL)
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(val, ptr, mem)
                return true
        }
 }
@@ -34768,9 +33172,7 @@ func rewriteValueAMD64_OpAtomicExchange64(v *Value) bool {
                val := v_1
                mem := v_2
                v.reset(OpAMD64XCHGQ)
-               v.AddArg(val)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(val, ptr, mem)
                return true
        }
 }
@@ -34788,9 +33190,7 @@ func rewriteValueAMD64_OpAtomicStore32(v *Value) bool {
                mem := v_2
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpAMD64XCHGL, types.NewTuple(typ.UInt32, types.TypeMem))
-               v0.AddArg(val)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg3(val, ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -34809,9 +33209,7 @@ func rewriteValueAMD64_OpAtomicStore64(v *Value) bool {
                mem := v_2
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpAMD64XCHGQ, types.NewTuple(typ.UInt64, types.TypeMem))
-               v0.AddArg(val)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg3(val, ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -34830,9 +33228,7 @@ func rewriteValueAMD64_OpAtomicStore8(v *Value) bool {
                mem := v_2
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpAMD64XCHGB, types.NewTuple(typ.UInt8, types.TypeMem))
-               v0.AddArg(val)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg3(val, ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -34851,9 +33247,7 @@ func rewriteValueAMD64_OpAtomicStorePtrNoWB(v *Value) bool {
                mem := v_2
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpAMD64XCHGQ, types.NewTuple(typ.BytePtr, types.TypeMem))
-               v0.AddArg(val)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg3(val, ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -34871,10 +33265,9 @@ func rewriteValueAMD64_OpBitLen16(v *Value) bool {
                v0.AuxInt = 1
                v1 := b.NewValue0(v.Pos, OpAMD64MOVWQZX, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVWQZX, typ.UInt32)
                v2.AddArg(x)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -34893,10 +33286,9 @@ func rewriteValueAMD64_OpBitLen32(v *Value) bool {
                v1.AuxInt = 1
                v2 := b.NewValue0(v.Pos, OpAMD64MOVLQZX, typ.UInt64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpAMD64MOVLQZX, typ.UInt64)
                v3.AddArg(x)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -34918,15 +33310,13 @@ func rewriteValueAMD64_OpBitLen64(v *Value) bool {
                v2 := b.NewValue0(v.Pos, OpAMD64BSRQ, types.NewTuple(typ.UInt64, types.TypeFlags))
                v2.AddArg(x)
                v1.AddArg(v2)
-               v0.AddArg(v1)
                v3 := b.NewValue0(v.Pos, OpAMD64MOVQconst, t)
                v3.AuxInt = -1
-               v0.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v5 := b.NewValue0(v.Pos, OpAMD64BSRQ, types.NewTuple(typ.UInt64, types.TypeFlags))
                v5.AddArg(x)
                v4.AddArg(v5)
-               v0.AddArg(v4)
+               v0.AddArg3(v1, v3, v4)
                v.AddArg(v0)
                return true
        }
@@ -34944,10 +33334,9 @@ func rewriteValueAMD64_OpBitLen8(v *Value) bool {
                v0.AuxInt = 1
                v1 := b.NewValue0(v.Pos, OpAMD64MOVBQZX, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVBQZX, typ.UInt32)
                v2.AddArg(x)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -34985,9 +33374,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQEQ)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETNE cond))
@@ -35005,9 +33392,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQNE)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETL cond))
@@ -35025,9 +33410,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQLT)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETG cond))
@@ -35045,9 +33428,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQGT)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETLE cond))
@@ -35065,9 +33446,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQLE)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETGE cond))
@@ -35085,9 +33464,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQGE)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETA cond))
@@ -35105,9 +33482,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQHI)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETB cond))
@@ -35125,9 +33500,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQCS)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETAE cond))
@@ -35145,9 +33518,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQCC)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETBE cond))
@@ -35165,9 +33536,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQLS)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETEQF cond))
@@ -35185,9 +33554,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQEQF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETNEF cond))
@@ -35205,9 +33572,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQNEF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETGF cond))
@@ -35225,9 +33590,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQGTF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETGEF cond))
@@ -35245,9 +33608,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQGEF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETEQ cond))
@@ -35265,9 +33626,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLEQ)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETNE cond))
@@ -35285,9 +33644,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLNE)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETL cond))
@@ -35305,9 +33662,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLLT)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETG cond))
@@ -35325,9 +33680,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLGT)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETLE cond))
@@ -35345,9 +33698,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLLE)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETGE cond))
@@ -35365,9 +33716,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLGE)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETA cond))
@@ -35385,9 +33734,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLHI)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETB cond))
@@ -35405,9 +33752,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLCS)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETAE cond))
@@ -35425,9 +33770,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLCC)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETBE cond))
@@ -35445,9 +33788,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLLS)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETEQF cond))
@@ -35465,9 +33806,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLEQF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETNEF cond))
@@ -35485,9 +33824,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLNEF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETGF cond))
@@ -35505,9 +33842,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLGTF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETGEF cond))
@@ -35525,9 +33860,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLGEF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETEQ cond))
@@ -35545,9 +33878,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWEQ)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETNE cond))
@@ -35565,9 +33896,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWNE)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETL cond))
@@ -35585,9 +33914,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWLT)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETG cond))
@@ -35605,9 +33932,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWGT)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETLE cond))
@@ -35625,9 +33950,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWLE)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETGE cond))
@@ -35645,9 +33968,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWGE)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETA cond))
@@ -35665,9 +33986,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWHI)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETB cond))
@@ -35685,9 +34004,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWCS)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETAE cond))
@@ -35705,9 +34022,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWCC)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETBE cond))
@@ -35725,9 +34040,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWLS)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETEQF cond))
@@ -35745,9 +34058,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWEQF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETNEF cond))
@@ -35765,9 +34076,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWNEF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETGF cond))
@@ -35785,9 +34094,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWGTF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y (SETGEF cond))
@@ -35805,9 +34112,7 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWGEF)
-               v.AddArg(y)
-               v.AddArg(x)
-               v.AddArg(cond)
+               v.AddArg3(y, x, cond)
                return true
        }
        // match: (CondSelect <t> x y check)
@@ -35823,11 +34128,9 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                }
                v.reset(OpCondSelect)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVBQZX, typ.UInt64)
                v0.AddArg(check)
-               v.AddArg(v0)
+               v.AddArg3(x, y, v0)
                return true
        }
        // match: (CondSelect <t> x y check)
@@ -35843,11 +34146,9 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                }
                v.reset(OpCondSelect)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVWQZX, typ.UInt64)
                v0.AddArg(check)
-               v.AddArg(v0)
+               v.AddArg3(x, y, v0)
                return true
        }
        // match: (CondSelect <t> x y check)
@@ -35863,11 +34164,9 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                }
                v.reset(OpCondSelect)
                v.Type = t
-               v.AddArg(x)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLQZX, typ.UInt64)
                v0.AddArg(check)
-               v.AddArg(v0)
+               v.AddArg3(x, y, v0)
                return true
        }
        // match: (CondSelect <t> x y check)
@@ -35882,12 +34181,10 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVQNE)
-               v.AddArg(y)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v0.AuxInt = 0
                v0.AddArg(check)
-               v.AddArg(v0)
+               v.AddArg3(y, x, v0)
                return true
        }
        // match: (CondSelect <t> x y check)
@@ -35902,12 +34199,10 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVLNE)
-               v.AddArg(y)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v0.AuxInt = 0
                v0.AddArg(check)
-               v.AddArg(v0)
+               v.AddArg3(y, x, v0)
                return true
        }
        // match: (CondSelect <t> x y check)
@@ -35922,12 +34217,10 @@ func rewriteValueAMD64_OpCondSelect(v *Value) bool {
                        break
                }
                v.reset(OpAMD64CMOVWNE)
-               v.AddArg(y)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v0.AuxInt = 0
                v0.AddArg(check)
-               v.AddArg(v0)
+               v.AddArg3(y, x, v0)
                return true
        }
        return false
@@ -35980,15 +34273,13 @@ func rewriteValueAMD64_OpCtz64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpAMD64BSFQ, types.NewTuple(typ.UInt64, types.TypeFlags))
                v1.AddArg(x)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVQconst, t)
                v2.AuxInt = 64
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v4 := b.NewValue0(v.Pos, OpAMD64BSFQ, types.NewTuple(typ.UInt64, types.TypeFlags))
                v4.AddArg(x)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -36037,8 +34328,7 @@ func rewriteValueAMD64_OpDiv16(v *Value) bool {
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVW, types.NewTuple(typ.Int16, typ.Int16))
                v0.AuxInt = a
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36055,8 +34345,7 @@ func rewriteValueAMD64_OpDiv16u(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVWU, types.NewTuple(typ.UInt16, typ.UInt16))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36075,8 +34364,7 @@ func rewriteValueAMD64_OpDiv32(v *Value) bool {
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVL, types.NewTuple(typ.Int32, typ.Int32))
                v0.AuxInt = a
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36093,8 +34381,7 @@ func rewriteValueAMD64_OpDiv32u(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVLU, types.NewTuple(typ.UInt32, typ.UInt32))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36113,8 +34400,7 @@ func rewriteValueAMD64_OpDiv64(v *Value) bool {
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVQ, types.NewTuple(typ.Int64, typ.Int64))
                v0.AuxInt = a
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36131,8 +34417,7 @@ func rewriteValueAMD64_OpDiv64u(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVQU, types.NewTuple(typ.UInt64, typ.UInt64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36151,10 +34436,9 @@ func rewriteValueAMD64_OpDiv8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64DIVW, types.NewTuple(typ.Int16, typ.Int16))
                v1 := b.NewValue0(v.Pos, OpSignExt8to16, typ.Int16)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to16, typ.Int16)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -36173,10 +34457,9 @@ func rewriteValueAMD64_OpDiv8u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64DIVWU, types.NewTuple(typ.UInt16, typ.UInt16))
                v1 := b.NewValue0(v.Pos, OpZeroExt8to16, typ.UInt16)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to16, typ.UInt16)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -36192,8 +34475,7 @@ func rewriteValueAMD64_OpEq16(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETEQ)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36209,8 +34491,7 @@ func rewriteValueAMD64_OpEq32(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETEQ)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36226,8 +34507,7 @@ func rewriteValueAMD64_OpEq32F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETEQF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36243,8 +34523,7 @@ func rewriteValueAMD64_OpEq64(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETEQ)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36260,8 +34539,7 @@ func rewriteValueAMD64_OpEq64F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETEQF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36277,8 +34555,7 @@ func rewriteValueAMD64_OpEq8(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETEQ)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36294,8 +34571,7 @@ func rewriteValueAMD64_OpEqB(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETEQ)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36311,8 +34587,7 @@ func rewriteValueAMD64_OpEqPtr(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETEQ)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36328,9 +34603,7 @@ func rewriteValueAMD64_OpFMA(v *Value) bool {
                y := v_1
                z := v_2
                v.reset(OpAMD64VFMADD231SD)
-               v.AddArg(z)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(z, x, y)
                return true
        }
 }
@@ -36357,8 +34630,7 @@ func rewriteValueAMD64_OpGeq32F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETGEF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36374,8 +34646,7 @@ func rewriteValueAMD64_OpGeq64F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETGEF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36391,8 +34662,7 @@ func rewriteValueAMD64_OpGreater32F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETGF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36408,8 +34678,7 @@ func rewriteValueAMD64_OpGreater64F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETGF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36425,8 +34694,7 @@ func rewriteValueAMD64_OpIsInBounds(v *Value) bool {
                len := v_1
                v.reset(OpAMD64SETB)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -36440,8 +34708,7 @@ func rewriteValueAMD64_OpIsNonNil(v *Value) bool {
                p := v_0
                v.reset(OpAMD64SETNE)
                v0 := b.NewValue0(v.Pos, OpAMD64TESTQ, types.TypeFlags)
-               v0.AddArg(p)
-               v0.AddArg(p)
+               v0.AddArg2(p, p)
                v.AddArg(v0)
                return true
        }
@@ -36457,8 +34724,7 @@ func rewriteValueAMD64_OpIsSliceInBounds(v *Value) bool {
                len := v_1
                v.reset(OpAMD64SETBE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -36474,8 +34740,7 @@ func rewriteValueAMD64_OpLeq16(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETLE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36491,8 +34756,7 @@ func rewriteValueAMD64_OpLeq16U(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETBE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36508,8 +34772,7 @@ func rewriteValueAMD64_OpLeq32(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETLE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36525,8 +34788,7 @@ func rewriteValueAMD64_OpLeq32F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETGEF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISS, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -36542,8 +34804,7 @@ func rewriteValueAMD64_OpLeq32U(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETBE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36559,8 +34820,7 @@ func rewriteValueAMD64_OpLeq64(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETLE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36576,8 +34836,7 @@ func rewriteValueAMD64_OpLeq64F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETGEF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISD, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -36593,8 +34852,7 @@ func rewriteValueAMD64_OpLeq64U(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETBE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36610,8 +34868,7 @@ func rewriteValueAMD64_OpLeq8(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETLE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36627,8 +34884,7 @@ func rewriteValueAMD64_OpLeq8U(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETBE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36644,8 +34900,7 @@ func rewriteValueAMD64_OpLess16(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETL)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36661,8 +34916,7 @@ func rewriteValueAMD64_OpLess16U(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETB)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36678,8 +34932,7 @@ func rewriteValueAMD64_OpLess32(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETL)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36695,8 +34948,7 @@ func rewriteValueAMD64_OpLess32F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETGF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISS, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -36712,8 +34964,7 @@ func rewriteValueAMD64_OpLess32U(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETB)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36729,8 +34980,7 @@ func rewriteValueAMD64_OpLess64(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETL)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36746,8 +34996,7 @@ func rewriteValueAMD64_OpLess64F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETGF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISD, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -36763,8 +35012,7 @@ func rewriteValueAMD64_OpLess64U(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETB)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36780,8 +35028,7 @@ func rewriteValueAMD64_OpLess8(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETL)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36797,8 +35044,7 @@ func rewriteValueAMD64_OpLess8U(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETB)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -36817,8 +35063,7 @@ func rewriteValueAMD64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVQload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -36832,8 +35077,7 @@ func rewriteValueAMD64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVLload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -36847,8 +35091,7 @@ func rewriteValueAMD64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVWload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -36862,8 +35105,7 @@ func rewriteValueAMD64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVBload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -36877,8 +35119,7 @@ func rewriteValueAMD64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVSSload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -36892,8 +35133,7 @@ func rewriteValueAMD64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVSDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -36927,15 +35167,13 @@ func rewriteValueAMD64_OpLsh16x16(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh16x16 x y)
@@ -36948,8 +35186,7 @@ func rewriteValueAMD64_OpLsh16x16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -36970,15 +35207,13 @@ func rewriteValueAMD64_OpLsh16x32(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh16x32 x y)
@@ -36991,8 +35226,7 @@ func rewriteValueAMD64_OpLsh16x32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37013,15 +35247,13 @@ func rewriteValueAMD64_OpLsh16x64(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh16x64 x y)
@@ -37034,8 +35266,7 @@ func rewriteValueAMD64_OpLsh16x64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37056,15 +35287,13 @@ func rewriteValueAMD64_OpLsh16x8(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh16x8 x y)
@@ -37077,8 +35306,7 @@ func rewriteValueAMD64_OpLsh16x8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37099,15 +35327,13 @@ func rewriteValueAMD64_OpLsh32x16(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh32x16 x y)
@@ -37120,8 +35346,7 @@ func rewriteValueAMD64_OpLsh32x16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37142,15 +35367,13 @@ func rewriteValueAMD64_OpLsh32x32(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh32x32 x y)
@@ -37163,8 +35386,7 @@ func rewriteValueAMD64_OpLsh32x32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37185,15 +35407,13 @@ func rewriteValueAMD64_OpLsh32x64(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh32x64 x y)
@@ -37206,8 +35426,7 @@ func rewriteValueAMD64_OpLsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37228,15 +35447,13 @@ func rewriteValueAMD64_OpLsh32x8(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh32x8 x y)
@@ -37249,8 +35466,7 @@ func rewriteValueAMD64_OpLsh32x8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37271,15 +35487,13 @@ func rewriteValueAMD64_OpLsh64x16(v *Value) bool {
                }
                v.reset(OpAMD64ANDQ)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQ, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh64x16 x y)
@@ -37292,8 +35506,7 @@ func rewriteValueAMD64_OpLsh64x16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37314,15 +35527,13 @@ func rewriteValueAMD64_OpLsh64x32(v *Value) bool {
                }
                v.reset(OpAMD64ANDQ)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQ, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh64x32 x y)
@@ -37335,8 +35546,7 @@ func rewriteValueAMD64_OpLsh64x32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37357,15 +35567,13 @@ func rewriteValueAMD64_OpLsh64x64(v *Value) bool {
                }
                v.reset(OpAMD64ANDQ)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQ, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh64x64 x y)
@@ -37378,8 +35586,7 @@ func rewriteValueAMD64_OpLsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37400,15 +35607,13 @@ func rewriteValueAMD64_OpLsh64x8(v *Value) bool {
                }
                v.reset(OpAMD64ANDQ)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLQ, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh64x8 x y)
@@ -37421,8 +35626,7 @@ func rewriteValueAMD64_OpLsh64x8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37443,15 +35647,13 @@ func rewriteValueAMD64_OpLsh8x16(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh8x16 x y)
@@ -37464,8 +35666,7 @@ func rewriteValueAMD64_OpLsh8x16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37486,15 +35687,13 @@ func rewriteValueAMD64_OpLsh8x32(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh8x32 x y)
@@ -37507,8 +35706,7 @@ func rewriteValueAMD64_OpLsh8x32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37529,15 +35727,13 @@ func rewriteValueAMD64_OpLsh8x64(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh8x64 x y)
@@ -37550,8 +35746,7 @@ func rewriteValueAMD64_OpLsh8x64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37572,15 +35767,13 @@ func rewriteValueAMD64_OpLsh8x8(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Lsh8x8 x y)
@@ -37593,8 +35786,7 @@ func rewriteValueAMD64_OpLsh8x8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHLL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -37613,8 +35805,7 @@ func rewriteValueAMD64_OpMod16(v *Value) bool {
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVW, types.NewTuple(typ.Int16, typ.Int16))
                v0.AuxInt = a
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -37631,8 +35822,7 @@ func rewriteValueAMD64_OpMod16u(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVWU, types.NewTuple(typ.UInt16, typ.UInt16))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -37651,8 +35841,7 @@ func rewriteValueAMD64_OpMod32(v *Value) bool {
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVL, types.NewTuple(typ.Int32, typ.Int32))
                v0.AuxInt = a
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -37669,8 +35858,7 @@ func rewriteValueAMD64_OpMod32u(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVLU, types.NewTuple(typ.UInt32, typ.UInt32))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -37689,8 +35877,7 @@ func rewriteValueAMD64_OpMod64(v *Value) bool {
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVQ, types.NewTuple(typ.Int64, typ.Int64))
                v0.AuxInt = a
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -37707,8 +35894,7 @@ func rewriteValueAMD64_OpMod64u(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpAMD64DIVQU, types.NewTuple(typ.UInt64, typ.UInt64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -37727,10 +35913,9 @@ func rewriteValueAMD64_OpMod8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64DIVW, types.NewTuple(typ.Int16, typ.Int16))
                v1 := b.NewValue0(v.Pos, OpSignExt8to16, typ.Int16)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to16, typ.Int16)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -37749,10 +35934,9 @@ func rewriteValueAMD64_OpMod8u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64DIVWU, types.NewTuple(typ.UInt16, typ.UInt16))
                v1 := b.NewValue0(v.Pos, OpZeroExt8to16, typ.UInt16)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to16, typ.UInt16)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -37786,12 +35970,9 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpAMD64MOVBstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVBload, typ.UInt8)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] dst src mem)
@@ -37804,12 +35985,9 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpAMD64MOVWstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVWload, typ.UInt16)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [4] dst src mem)
@@ -37822,12 +36000,9 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpAMD64MOVLstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [8] dst src mem)
@@ -37840,12 +36015,9 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpAMD64MOVQstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [16] dst src mem)
@@ -37862,12 +36034,9 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVOstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVOload, types.TypeInt128)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [16] dst src mem)
@@ -37885,20 +36054,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                }
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [32] dst src mem)
@@ -37915,17 +36078,13 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, dst.Type)
                v0.AuxInt = 16
                v0.AddArg(dst)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, src.Type)
                v1.AuxInt = 16
                v1.AddArg(src)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMove, types.TypeMem)
                v2.AuxInt = 16
-               v2.AddArg(dst)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg3(dst, src, mem)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Move [48] dst src mem)
@@ -37946,17 +36105,13 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, dst.Type)
                v0.AuxInt = 16
                v0.AddArg(dst)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, src.Type)
                v1.AuxInt = 16
                v1.AddArg(src)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMove, types.TypeMem)
                v2.AuxInt = 16
-               v2.AddArg(dst)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg3(dst, src, mem)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Move [64] dst src mem)
@@ -37977,17 +36132,13 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, dst.Type)
                v0.AuxInt = 32
                v0.AddArg(dst)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, src.Type)
                v1.AuxInt = 32
                v1.AddArg(src)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMove, types.TypeMem)
                v2.AuxInt = 32
-               v2.AddArg(dst)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg3(dst, src, mem)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Move [3] dst src mem)
@@ -38001,20 +36152,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVBload, typ.UInt8)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVWload, typ.UInt16)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [5] dst src mem)
@@ -38028,20 +36173,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVBload, typ.UInt8)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVLstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [6] dst src mem)
@@ -38055,20 +36194,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVWload, typ.UInt16)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVLstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [7] dst src mem)
@@ -38082,20 +36215,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = 3
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32)
                v0.AuxInt = 3
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVLstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [9] dst src mem)
@@ -38109,20 +36236,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpAMD64MOVBstore)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVBload, typ.UInt8)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [10] dst src mem)
@@ -38136,20 +36257,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpAMD64MOVWstore)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVWload, typ.UInt16)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [12] dst src mem)
@@ -38163,20 +36278,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpAMD64MOVLstore)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -38192,20 +36301,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                }
                v.reset(OpAMD64MOVQstore)
                v.AuxInt = s - 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
                v0.AuxInt = s - 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -38224,19 +36327,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, dst.Type)
                v0.AuxInt = s % 16
                v0.AddArg(dst)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, src.Type)
                v1.AuxInt = s % 16
                v1.AddArg(src)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVQstore, types.TypeMem)
-               v2.AddArg(dst)
                v3 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
-               v3.AddArg(src)
-               v3.AddArg(mem)
-               v2.AddArg(v3)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v3.AddArg2(src, mem)
+               v2.AddArg3(dst, v3, mem)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -38255,19 +36353,14 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, dst.Type)
                v0.AuxInt = s % 16
                v0.AddArg(dst)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, src.Type)
                v1.AuxInt = s % 16
                v1.AddArg(src)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVOstore, types.TypeMem)
-               v2.AddArg(dst)
                v3 := b.NewValue0(v.Pos, OpAMD64MOVOload, types.TypeInt128)
-               v3.AddArg(src)
-               v3.AddArg(mem)
-               v2.AddArg(v3)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v3.AddArg2(src, mem)
+               v2.AddArg3(dst, v3, mem)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -38286,28 +36379,20 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, dst.Type)
                v0.AuxInt = s % 16
                v0.AddArg(dst)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, src.Type)
                v1.AuxInt = s % 16
                v1.AddArg(src)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVQstore, types.TypeMem)
                v2.AuxInt = 8
-               v2.AddArg(dst)
                v3 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
                v3.AuxInt = 8
-               v3.AddArg(src)
-               v3.AddArg(mem)
-               v2.AddArg(v3)
+               v3.AddArg2(src, mem)
                v4 := b.NewValue0(v.Pos, OpAMD64MOVQstore, types.TypeMem)
-               v4.AddArg(dst)
                v5 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
-               v5.AddArg(src)
-               v5.AddArg(mem)
-               v4.AddArg(v5)
-               v4.AddArg(mem)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v5.AddArg2(src, mem)
+               v4.AddArg3(dst, v5, mem)
+               v2.AddArg3(dst, v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -38323,9 +36408,7 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                }
                v.reset(OpAMD64DUFFCOPY)
                v.AuxInt = 14 * (64 - s/16)
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -38340,12 +36423,9 @@ func rewriteValueAMD64_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpAMD64REPMOVSQ)
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQconst, typ.UInt64)
                v0.AuxInt = s / 8
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(dst, src, v0, mem)
                return true
        }
        return false
@@ -38359,10 +36439,9 @@ func rewriteValueAMD64_OpNeg32F(v *Value) bool {
        for {
                x := v_0
                v.reset(OpAMD64PXOR)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVSSconst, typ.Float32)
                v0.AuxInt = auxFrom32F(float32(math.Copysign(0, -1)))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -38375,10 +36454,9 @@ func rewriteValueAMD64_OpNeg64F(v *Value) bool {
        for {
                x := v_0
                v.reset(OpAMD64PXOR)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVSDconst, typ.Float64)
                v0.AuxInt = auxFrom64F(math.Copysign(0, -1))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -38393,8 +36471,7 @@ func rewriteValueAMD64_OpNeq16(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETNE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -38410,8 +36487,7 @@ func rewriteValueAMD64_OpNeq32(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETNE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPL, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -38427,8 +36503,7 @@ func rewriteValueAMD64_OpNeq32F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETNEF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -38444,8 +36519,7 @@ func rewriteValueAMD64_OpNeq64(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETNE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -38461,8 +36535,7 @@ func rewriteValueAMD64_OpNeq64F(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETNEF)
                v0 := b.NewValue0(v.Pos, OpAMD64UCOMISD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -38478,8 +36551,7 @@ func rewriteValueAMD64_OpNeq8(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETNE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -38495,8 +36567,7 @@ func rewriteValueAMD64_OpNeqB(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETNE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -38512,8 +36583,7 @@ func rewriteValueAMD64_OpNeqPtr(v *Value) bool {
                y := v_1
                v.reset(OpAMD64SETNE)
                v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -38556,8 +36626,7 @@ func rewriteValueAMD64_OpOffPtr(v *Value) bool {
                v.reset(OpAMD64ADDQ)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQconst, typ.UInt64)
                v0.AuxInt = off
-               v.AddArg(v0)
-               v.AddArg(ptr)
+               v.AddArg2(v0, ptr)
                return true
        }
 }
@@ -38578,9 +36647,7 @@ func rewriteValueAMD64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpAMD64LoweredPanicBoundsA)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -38596,9 +36663,7 @@ func rewriteValueAMD64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpAMD64LoweredPanicBoundsB)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -38614,9 +36679,7 @@ func rewriteValueAMD64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpAMD64LoweredPanicBoundsC)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        return false
@@ -38679,15 +36742,13 @@ func rewriteValueAMD64_OpRsh16Ux16(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
                v2.AuxInt = 16
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh16Ux16 x y)
@@ -38700,8 +36761,7 @@ func rewriteValueAMD64_OpRsh16Ux16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -38722,15 +36782,13 @@ func rewriteValueAMD64_OpRsh16Ux32(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
                v2.AuxInt = 16
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh16Ux32 x y)
@@ -38743,8 +36801,7 @@ func rewriteValueAMD64_OpRsh16Ux32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -38765,15 +36822,13 @@ func rewriteValueAMD64_OpRsh16Ux64(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v2.AuxInt = 16
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh16Ux64 x y)
@@ -38786,8 +36841,7 @@ func rewriteValueAMD64_OpRsh16Ux64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -38808,15 +36862,13 @@ func rewriteValueAMD64_OpRsh16Ux8(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
                v2.AuxInt = 16
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh16Ux8 x y)
@@ -38829,8 +36881,7 @@ func rewriteValueAMD64_OpRsh16Ux8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -38851,9 +36902,7 @@ func rewriteValueAMD64_OpRsh16x16(v *Value) bool {
                }
                v.reset(OpAMD64SARW)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
@@ -38861,8 +36910,8 @@ func rewriteValueAMD64_OpRsh16x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x16 x y)
@@ -38875,8 +36924,7 @@ func rewriteValueAMD64_OpRsh16x16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -38897,9 +36945,7 @@ func rewriteValueAMD64_OpRsh16x32(v *Value) bool {
                }
                v.reset(OpAMD64SARW)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
@@ -38907,8 +36953,8 @@ func rewriteValueAMD64_OpRsh16x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x32 x y)
@@ -38921,8 +36967,7 @@ func rewriteValueAMD64_OpRsh16x32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -38943,9 +36988,7 @@ func rewriteValueAMD64_OpRsh16x64(v *Value) bool {
                }
                v.reset(OpAMD64SARW)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORQ, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTQ, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
@@ -38953,8 +36996,8 @@ func rewriteValueAMD64_OpRsh16x64(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x64 x y)
@@ -38967,8 +37010,7 @@ func rewriteValueAMD64_OpRsh16x64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -38989,9 +37031,7 @@ func rewriteValueAMD64_OpRsh16x8(v *Value) bool {
                }
                v.reset(OpAMD64SARW)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
@@ -38999,8 +37039,8 @@ func rewriteValueAMD64_OpRsh16x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x8 x y)
@@ -39013,8 +37053,7 @@ func rewriteValueAMD64_OpRsh16x8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39035,15 +37074,13 @@ func rewriteValueAMD64_OpRsh32Ux16(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh32Ux16 x y)
@@ -39056,8 +37093,7 @@ func rewriteValueAMD64_OpRsh32Ux16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39078,15 +37114,13 @@ func rewriteValueAMD64_OpRsh32Ux32(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh32Ux32 x y)
@@ -39099,8 +37133,7 @@ func rewriteValueAMD64_OpRsh32Ux32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39121,15 +37154,13 @@ func rewriteValueAMD64_OpRsh32Ux64(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh32Ux64 x y)
@@ -39142,8 +37173,7 @@ func rewriteValueAMD64_OpRsh32Ux64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39164,15 +37194,13 @@ func rewriteValueAMD64_OpRsh32Ux8(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
                v2.AuxInt = 32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh32Ux8 x y)
@@ -39185,8 +37213,7 @@ func rewriteValueAMD64_OpRsh32Ux8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39207,9 +37234,7 @@ func rewriteValueAMD64_OpRsh32x16(v *Value) bool {
                }
                v.reset(OpAMD64SARL)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
@@ -39217,8 +37242,8 @@ func rewriteValueAMD64_OpRsh32x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x16 x y)
@@ -39231,8 +37256,7 @@ func rewriteValueAMD64_OpRsh32x16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39253,9 +37277,7 @@ func rewriteValueAMD64_OpRsh32x32(v *Value) bool {
                }
                v.reset(OpAMD64SARL)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
@@ -39263,8 +37285,8 @@ func rewriteValueAMD64_OpRsh32x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x32 x y)
@@ -39277,8 +37299,7 @@ func rewriteValueAMD64_OpRsh32x32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39299,9 +37320,7 @@ func rewriteValueAMD64_OpRsh32x64(v *Value) bool {
                }
                v.reset(OpAMD64SARL)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORQ, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTQ, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
@@ -39309,8 +37328,8 @@ func rewriteValueAMD64_OpRsh32x64(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x64 x y)
@@ -39323,8 +37342,7 @@ func rewriteValueAMD64_OpRsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39345,9 +37363,7 @@ func rewriteValueAMD64_OpRsh32x8(v *Value) bool {
                }
                v.reset(OpAMD64SARL)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
@@ -39355,8 +37371,8 @@ func rewriteValueAMD64_OpRsh32x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x8 x y)
@@ -39369,8 +37385,7 @@ func rewriteValueAMD64_OpRsh32x8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39391,15 +37406,13 @@ func rewriteValueAMD64_OpRsh64Ux16(v *Value) bool {
                }
                v.reset(OpAMD64ANDQ)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRQ, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh64Ux16 x y)
@@ -39412,8 +37425,7 @@ func rewriteValueAMD64_OpRsh64Ux16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39434,15 +37446,13 @@ func rewriteValueAMD64_OpRsh64Ux32(v *Value) bool {
                }
                v.reset(OpAMD64ANDQ)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRQ, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh64Ux32 x y)
@@ -39455,8 +37465,7 @@ func rewriteValueAMD64_OpRsh64Ux32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39477,15 +37486,13 @@ func rewriteValueAMD64_OpRsh64Ux64(v *Value) bool {
                }
                v.reset(OpAMD64ANDQ)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRQ, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh64Ux64 x y)
@@ -39498,8 +37505,7 @@ func rewriteValueAMD64_OpRsh64Ux64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39520,15 +37526,13 @@ func rewriteValueAMD64_OpRsh64Ux8(v *Value) bool {
                }
                v.reset(OpAMD64ANDQ)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRQ, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh64Ux8 x y)
@@ -39541,8 +37545,7 @@ func rewriteValueAMD64_OpRsh64Ux8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39563,9 +37566,7 @@ func rewriteValueAMD64_OpRsh64x16(v *Value) bool {
                }
                v.reset(OpAMD64SARQ)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
@@ -39573,8 +37574,8 @@ func rewriteValueAMD64_OpRsh64x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x16 x y)
@@ -39587,8 +37588,7 @@ func rewriteValueAMD64_OpRsh64x16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39609,9 +37609,7 @@ func rewriteValueAMD64_OpRsh64x32(v *Value) bool {
                }
                v.reset(OpAMD64SARQ)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
@@ -39619,8 +37617,8 @@ func rewriteValueAMD64_OpRsh64x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x32 x y)
@@ -39633,8 +37631,7 @@ func rewriteValueAMD64_OpRsh64x32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39655,9 +37652,7 @@ func rewriteValueAMD64_OpRsh64x64(v *Value) bool {
                }
                v.reset(OpAMD64SARQ)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORQ, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTQ, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
@@ -39665,8 +37660,8 @@ func rewriteValueAMD64_OpRsh64x64(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x64 x y)
@@ -39679,8 +37674,7 @@ func rewriteValueAMD64_OpRsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39701,9 +37695,7 @@ func rewriteValueAMD64_OpRsh64x8(v *Value) bool {
                }
                v.reset(OpAMD64SARQ)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
@@ -39711,8 +37703,8 @@ func rewriteValueAMD64_OpRsh64x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x8 x y)
@@ -39725,8 +37717,7 @@ func rewriteValueAMD64_OpRsh64x8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARQ)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39747,15 +37738,13 @@ func rewriteValueAMD64_OpRsh8Ux16(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRB, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
                v2.AuxInt = 8
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh8Ux16 x y)
@@ -39768,8 +37757,7 @@ func rewriteValueAMD64_OpRsh8Ux16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39790,15 +37778,13 @@ func rewriteValueAMD64_OpRsh8Ux32(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRB, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
                v2.AuxInt = 8
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh8Ux32 x y)
@@ -39811,8 +37797,7 @@ func rewriteValueAMD64_OpRsh8Ux32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39833,15 +37818,13 @@ func rewriteValueAMD64_OpRsh8Ux64(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRB, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
                v2.AuxInt = 8
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh8Ux64 x y)
@@ -39854,8 +37837,7 @@ func rewriteValueAMD64_OpRsh8Ux64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39876,15 +37858,13 @@ func rewriteValueAMD64_OpRsh8Ux8(v *Value) bool {
                }
                v.reset(OpAMD64ANDL)
                v0 := b.NewValue0(v.Pos, OpAMD64SHRB, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, t)
                v2 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
                v2.AuxInt = 8
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Rsh8Ux8 x y)
@@ -39897,8 +37877,7 @@ func rewriteValueAMD64_OpRsh8Ux8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SHRB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39919,9 +37898,7 @@ func rewriteValueAMD64_OpRsh8x16(v *Value) bool {
                }
                v.reset(OpAMD64SARB)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
@@ -39929,8 +37906,8 @@ func rewriteValueAMD64_OpRsh8x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8x16 x y)
@@ -39943,8 +37920,7 @@ func rewriteValueAMD64_OpRsh8x16(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -39965,9 +37941,7 @@ func rewriteValueAMD64_OpRsh8x32(v *Value) bool {
                }
                v.reset(OpAMD64SARB)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
@@ -39975,8 +37949,8 @@ func rewriteValueAMD64_OpRsh8x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8x32 x y)
@@ -39989,8 +37963,7 @@ func rewriteValueAMD64_OpRsh8x32(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -40011,9 +37984,7 @@ func rewriteValueAMD64_OpRsh8x64(v *Value) bool {
                }
                v.reset(OpAMD64SARB)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORQ, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTQ, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
@@ -40021,8 +37992,8 @@ func rewriteValueAMD64_OpRsh8x64(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8x64 x y)
@@ -40035,8 +38006,7 @@ func rewriteValueAMD64_OpRsh8x64(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -40057,9 +38027,7 @@ func rewriteValueAMD64_OpRsh8x8(v *Value) bool {
                }
                v.reset(OpAMD64SARB)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpAMD64ORL, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpAMD64NOTL, y.Type)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBLcarrymask, y.Type)
                v3 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
@@ -40067,8 +38035,8 @@ func rewriteValueAMD64_OpRsh8x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8x8 x y)
@@ -40081,8 +38049,7 @@ func rewriteValueAMD64_OpRsh8x8(v *Value) bool {
                        break
                }
                v.reset(OpAMD64SARB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -40102,8 +38069,7 @@ func rewriteValueAMD64_OpSelect0(v *Value) bool {
                v.reset(OpSelect0)
                v.Type = typ.UInt64
                v0 := b.NewValue0(v.Pos, OpAMD64MULQU, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -40118,8 +38084,7 @@ func rewriteValueAMD64_OpSelect0(v *Value) bool {
                v.reset(OpSelect0)
                v.Type = typ.UInt32
                v0 := b.NewValue0(v.Pos, OpAMD64MULLU, types.NewTuple(typ.UInt32, types.TypeFlags))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -40135,13 +38100,11 @@ func rewriteValueAMD64_OpSelect0(v *Value) bool {
                v.reset(OpSelect0)
                v.Type = typ.UInt64
                v0 := b.NewValue0(v.Pos, OpAMD64ADCQ, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v0.AddArg(x)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v2 := b.NewValue0(v.Pos, OpAMD64NEGLflags, types.NewTuple(typ.UInt32, types.TypeFlags))
                v2.AddArg(c)
                v1.AddArg(v2)
-               v0.AddArg(v1)
+               v0.AddArg3(x, y, v1)
                v.AddArg(v0)
                return true
        }
@@ -40157,13 +38120,11 @@ func rewriteValueAMD64_OpSelect0(v *Value) bool {
                v.reset(OpSelect0)
                v.Type = typ.UInt64
                v0 := b.NewValue0(v.Pos, OpAMD64SBBQ, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v0.AddArg(x)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v2 := b.NewValue0(v.Pos, OpAMD64NEGLflags, types.NewTuple(typ.UInt32, types.TypeFlags))
                v2.AddArg(c)
                v1.AddArg(v2)
-               v0.AddArg(v1)
+               v0.AddArg3(x, y, v1)
                v.AddArg(v0)
                return true
        }
@@ -40177,10 +38138,9 @@ func rewriteValueAMD64_OpSelect0(v *Value) bool {
                tuple := v_0.Args[1]
                val := v_0.Args[0]
                v.reset(OpAMD64ADDL)
-               v.AddArg(val)
                v0 := b.NewValue0(v.Pos, OpSelect0, t)
                v0.AddArg(tuple)
-               v.AddArg(v0)
+               v.AddArg2(val, v0)
                return true
        }
        // match: (Select0 <t> (AddTupleFirst64 val tuple))
@@ -40193,10 +38153,9 @@ func rewriteValueAMD64_OpSelect0(v *Value) bool {
                tuple := v_0.Args[1]
                val := v_0.Args[0]
                v.reset(OpAMD64ADDQ)
-               v.AddArg(val)
                v0 := b.NewValue0(v.Pos, OpSelect0, t)
                v0.AddArg(tuple)
-               v.AddArg(v0)
+               v.AddArg2(val, v0)
                return true
        }
        return false
@@ -40216,8 +38175,7 @@ func rewriteValueAMD64_OpSelect1(v *Value) bool {
                v.reset(OpAMD64SETO)
                v0 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpAMD64MULQU, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -40233,8 +38191,7 @@ func rewriteValueAMD64_OpSelect1(v *Value) bool {
                v.reset(OpAMD64SETO)
                v0 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpAMD64MULLU, types.NewTuple(typ.UInt32, types.TypeFlags))
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -40253,13 +38210,11 @@ func rewriteValueAMD64_OpSelect1(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v2 := b.NewValue0(v.Pos, OpAMD64ADCQ, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v2.AddArg(x)
-               v2.AddArg(y)
                v3 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v4 := b.NewValue0(v.Pos, OpAMD64NEGLflags, types.NewTuple(typ.UInt32, types.TypeFlags))
                v4.AddArg(c)
                v3.AddArg(v4)
-               v2.AddArg(v3)
+               v2.AddArg3(x, y, v3)
                v1.AddArg(v2)
                v0.AddArg(v1)
                v.AddArg(v0)
@@ -40279,13 +38234,11 @@ func rewriteValueAMD64_OpSelect1(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64SBBQcarrymask, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v2 := b.NewValue0(v.Pos, OpAMD64SBBQ, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v2.AddArg(x)
-               v2.AddArg(y)
                v3 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v4 := b.NewValue0(v.Pos, OpAMD64NEGLflags, types.NewTuple(typ.UInt32, types.TypeFlags))
                v4.AddArg(c)
                v3.AddArg(v4)
-               v2.AddArg(v3)
+               v2.AddArg3(x, y, v3)
                v1.AddArg(v2)
                v0.AddArg(v1)
                v.AddArg(v0)
@@ -40380,9 +38333,7 @@ func rewriteValueAMD64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVSDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -40397,9 +38348,7 @@ func rewriteValueAMD64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVSSstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -40414,9 +38363,7 @@ func rewriteValueAMD64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVQstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -40431,9 +38378,7 @@ func rewriteValueAMD64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVLstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -40448,9 +38393,7 @@ func rewriteValueAMD64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVWstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -40465,9 +38408,7 @@ func rewriteValueAMD64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVBstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -40512,8 +38453,7 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpAMD64MOVBstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [2] destptr mem)
@@ -40526,8 +38466,7 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpAMD64MOVWstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [4] destptr mem)
@@ -40540,8 +38479,7 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpAMD64MOVLstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [8] destptr mem)
@@ -40554,8 +38492,7 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpAMD64MOVQstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [3] destptr mem)
@@ -40568,12 +38505,10 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpAMD64MOVBstoreconst)
                v.AuxInt = makeValAndOff(0, 2)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVWstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [5] destptr mem)
@@ -40586,12 +38521,10 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpAMD64MOVBstoreconst)
                v.AuxInt = makeValAndOff(0, 4)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [6] destptr mem)
@@ -40604,12 +38537,10 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpAMD64MOVWstoreconst)
                v.AuxInt = makeValAndOff(0, 4)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [7] destptr mem)
@@ -40622,12 +38553,10 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpAMD64MOVLstoreconst)
                v.AuxInt = makeValAndOff(0, 3)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -40645,12 +38574,10 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, destptr.Type)
                v0.AuxInt = s % 8
                v0.AddArg(destptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQstoreconst, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(destptr)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(destptr, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Zero [16] destptr mem)
@@ -40667,12 +38594,10 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                }
                v.reset(OpAMD64MOVQstoreconst)
                v.AuxInt = makeValAndOff(0, 8)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [24] destptr mem)
@@ -40689,16 +38614,13 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                }
                v.reset(OpAMD64MOVQstoreconst)
                v.AuxInt = makeValAndOff(0, 16)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQstoreconst, types.TypeMem)
                v0.AuxInt = makeValAndOff(0, 8)
-               v0.AddArg(destptr)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQstoreconst, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(destptr)
-               v1.AddArg(mem)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(destptr, mem)
+               v0.AddArg2(destptr, v1)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [32] destptr mem)
@@ -40715,20 +38637,16 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                }
                v.reset(OpAMD64MOVQstoreconst)
                v.AuxInt = makeValAndOff(0, 24)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQstoreconst, types.TypeMem)
                v0.AuxInt = makeValAndOff(0, 16)
-               v0.AddArg(destptr)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQstoreconst, types.TypeMem)
                v1.AuxInt = makeValAndOff(0, 8)
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVQstoreconst, types.TypeMem)
                v2.AuxInt = 0
-               v2.AddArg(destptr)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v2.AddArg2(destptr, mem)
+               v1.AddArg2(destptr, v2)
+               v0.AddArg2(destptr, v1)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -40743,12 +38661,10 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                }
                v.reset(OpAMD64MOVQstoreconst)
                v.AuxInt = makeValAndOff(0, s-8)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -40766,14 +38682,11 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, destptr.Type)
                v0.AuxInt = s % 16
                v0.AddArg(destptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVOstore, types.TypeMem)
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(destptr, v2, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -40791,12 +38704,10 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, destptr.Type)
                v0.AuxInt = s % 16
                v0.AddArg(destptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQstoreconst, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(destptr)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(destptr, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Zero [16] destptr mem)
@@ -40812,11 +38723,9 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpAMD64MOVOstore)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(destptr, v0, mem)
                return true
        }
        // match: (Zero [32] destptr mem)
@@ -40835,17 +38744,13 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, destptr.Type)
                v0.AuxInt = 16
                v0.AddArg(destptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVOstore, types.TypeMem)
-               v2.AddArg(destptr)
                v3 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v3.AuxInt = 0
-               v2.AddArg(v3)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg3(destptr, v3, mem)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Zero [48] destptr mem)
@@ -40864,26 +38769,20 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, destptr.Type)
                v0.AuxInt = 32
                v0.AddArg(destptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVOstore, types.TypeMem)
                v3 := b.NewValue0(v.Pos, OpOffPtr, destptr.Type)
                v3.AuxInt = 16
                v3.AddArg(destptr)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v4.AuxInt = 0
-               v2.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpAMD64MOVOstore, types.TypeMem)
-               v5.AddArg(destptr)
                v6 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v6.AuxInt = 0
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v2.AddArg(v5)
-               v.AddArg(v2)
+               v5.AddArg3(destptr, v6, mem)
+               v2.AddArg3(v3, v4, v5)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Zero [64] destptr mem)
@@ -40902,35 +38801,27 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, destptr.Type)
                v0.AuxInt = 48
                v0.AddArg(destptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpAMD64MOVOstore, types.TypeMem)
                v3 := b.NewValue0(v.Pos, OpOffPtr, destptr.Type)
                v3.AuxInt = 32
                v3.AddArg(destptr)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v4.AuxInt = 0
-               v2.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpAMD64MOVOstore, types.TypeMem)
                v6 := b.NewValue0(v.Pos, OpOffPtr, destptr.Type)
                v6.AuxInt = 16
                v6.AddArg(destptr)
-               v5.AddArg(v6)
                v7 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v7.AuxInt = 0
-               v5.AddArg(v7)
                v8 := b.NewValue0(v.Pos, OpAMD64MOVOstore, types.TypeMem)
-               v8.AddArg(destptr)
                v9 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v9.AuxInt = 0
-               v8.AddArg(v9)
-               v8.AddArg(mem)
-               v5.AddArg(v8)
-               v2.AddArg(v5)
-               v.AddArg(v2)
+               v8.AddArg3(destptr, v9, mem)
+               v5.AddArg3(v6, v7, v8)
+               v2.AddArg3(v3, v4, v5)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -40945,11 +38836,9 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                }
                v.reset(OpAMD64DUFFZERO)
                v.AuxInt = s
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVOconst, types.TypeInt128)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(destptr, v0, mem)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -40963,14 +38852,11 @@ func rewriteValueAMD64_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpAMD64REPSTOSQ)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQconst, typ.UInt64)
                v0.AuxInt = s / 8
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpAMD64MOVQconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
-               v.AddArg(mem)
+               v.AddArg4(destptr, v0, v1, mem)
                return true
        }
        return false
@@ -40997,8 +38883,7 @@ func rewriteBlockAMD64(b *Block) bool {
                                y := v_0_1
                                b.Reset(BlockAMD64UGE)
                                v0 := b.NewValue0(v_0.Pos, OpAMD64BTL, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -41023,8 +38908,7 @@ func rewriteBlockAMD64(b *Block) bool {
                                y := v_0_1
                                b.Reset(BlockAMD64UGE)
                                v0 := b.NewValue0(v_0.Pos, OpAMD64BTQ, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -41538,8 +39422,7 @@ func rewriteBlockAMD64(b *Block) bool {
                        cond := b.Controls[0]
                        b.Reset(BlockAMD64NE)
                        v0 := b.NewValue0(cond.Pos, OpAMD64TESTB, types.TypeFlags)
-                       v0.AddArg(cond)
-                       v0.AddArg(cond)
+                       v0.AddArg2(cond, cond)
                        b.AddControl(v0)
                        return true
                }
@@ -41846,8 +39729,7 @@ func rewriteBlockAMD64(b *Block) bool {
                                y := v_0_1
                                b.Reset(BlockAMD64ULT)
                                v0 := b.NewValue0(v_0.Pos, OpAMD64BTL, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -41872,8 +39754,7 @@ func rewriteBlockAMD64(b *Block) bool {
                                y := v_0_1
                                b.Reset(BlockAMD64ULT)
                                v0 := b.NewValue0(v_0.Pos, OpAMD64BTQ, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
index 69df3f7a1e547934f23618156b46a07fadd1e6ed..40a7013744ccac75bc64ddda49996b03e430987e 100644 (file)
@@ -41,8 +41,7 @@ func rewriteValueAMD64splitload_OpAMD64CMPBconstload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64MOVBload, typ.UInt8)
                v0.AuxInt = offOnly(vo)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -65,10 +64,8 @@ func rewriteValueAMD64splitload_OpAMD64CMPBload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64MOVBload, typ.UInt8)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v0.AddArg2(ptr, mem)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -89,8 +86,7 @@ func rewriteValueAMD64splitload_OpAMD64CMPLconstload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32)
                v0.AuxInt = offOnly(vo)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -113,10 +109,8 @@ func rewriteValueAMD64splitload_OpAMD64CMPLload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v0.AddArg2(ptr, mem)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -137,8 +131,7 @@ func rewriteValueAMD64splitload_OpAMD64CMPQconstload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
                v0.AuxInt = offOnly(vo)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -161,10 +154,8 @@ func rewriteValueAMD64splitload_OpAMD64CMPQload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v0.AddArg2(ptr, mem)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -185,8 +176,7 @@ func rewriteValueAMD64splitload_OpAMD64CMPWconstload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64MOVWload, typ.UInt16)
                v0.AuxInt = offOnly(vo)
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -209,10 +199,8 @@ func rewriteValueAMD64splitload_OpAMD64CMPWload(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAMD64MOVWload, typ.UInt16)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v0.AddArg2(ptr, mem)
+               v.AddArg2(v0, x)
                return true
        }
 }
index 6849fecc2a44c0162d0a088bd85e772cee699644..5be3e34dcbd78e828c764d00afb64eaeaec0b984 100644 (file)
@@ -918,8 +918,7 @@ func rewriteValueARM_OpARMADC(v *Value) bool {
                        flags := v_2
                        v.reset(OpARMADCconst)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(flags)
+                       v.AddArg2(x, flags)
                        return true
                }
                break
@@ -937,9 +936,7 @@ func rewriteValueARM_OpARMADC(v *Value) bool {
                        flags := v_2
                        v.reset(OpARMADCshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(flags)
+                       v.AddArg3(x, y, flags)
                        return true
                }
                break
@@ -957,9 +954,7 @@ func rewriteValueARM_OpARMADC(v *Value) bool {
                        flags := v_2
                        v.reset(OpARMADCshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(flags)
+                       v.AddArg3(x, y, flags)
                        return true
                }
                break
@@ -977,9 +972,7 @@ func rewriteValueARM_OpARMADC(v *Value) bool {
                        flags := v_2
                        v.reset(OpARMADCshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(flags)
+                       v.AddArg3(x, y, flags)
                        return true
                }
                break
@@ -996,10 +989,7 @@ func rewriteValueARM_OpARMADC(v *Value) bool {
                        y := v_1.Args[0]
                        flags := v_2
                        v.reset(OpARMADCshiftLLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
-                       v.AddArg(flags)
+                       v.AddArg4(x, y, z, flags)
                        return true
                }
                break
@@ -1016,10 +1006,7 @@ func rewriteValueARM_OpARMADC(v *Value) bool {
                        y := v_1.Args[0]
                        flags := v_2
                        v.reset(OpARMADCshiftRLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
-                       v.AddArg(flags)
+                       v.AddArg4(x, y, z, flags)
                        return true
                }
                break
@@ -1036,10 +1023,7 @@ func rewriteValueARM_OpARMADC(v *Value) bool {
                        y := v_1.Args[0]
                        flags := v_2
                        v.reset(OpARMADCshiftRAreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
-                       v.AddArg(flags)
+                       v.AddArg4(x, y, z, flags)
                        return true
                }
                break
@@ -1061,8 +1045,7 @@ func rewriteValueARM_OpARMADCconst(v *Value) bool {
                flags := v_1
                v.reset(OpARMADCconst)
                v.AuxInt = int64(int32(c + d))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        // match: (ADCconst [c] (SUBconst [d] x) flags)
@@ -1077,8 +1060,7 @@ func rewriteValueARM_OpARMADCconst(v *Value) bool {
                flags := v_1
                v.reset(OpARMADCconst)
                v.AuxInt = int64(int32(c - d))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -1103,8 +1085,7 @@ func rewriteValueARM_OpARMADCshiftLL(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSLLconst, x.Type)
                v0.AuxInt = d
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (ADCshiftLL x (MOVWconst [c]) [d] flags)
@@ -1119,8 +1100,7 @@ func rewriteValueARM_OpARMADCshiftLL(v *Value) bool {
                flags := v_2
                v.reset(OpARMADCconst)
                v.AuxInt = int64(int32(uint32(c) << uint64(d)))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -1144,10 +1124,8 @@ func rewriteValueARM_OpARMADCshiftLLreg(v *Value) bool {
                v.reset(OpARMADCconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (ADCshiftLLreg x y (MOVWconst [c]) flags)
@@ -1162,9 +1140,7 @@ func rewriteValueARM_OpARMADCshiftLLreg(v *Value) bool {
                flags := v_3
                v.reset(OpARMADCshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        return false
@@ -1189,8 +1165,7 @@ func rewriteValueARM_OpARMADCshiftRA(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRAconst, x.Type)
                v0.AuxInt = d
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (ADCshiftRA x (MOVWconst [c]) [d] flags)
@@ -1205,8 +1180,7 @@ func rewriteValueARM_OpARMADCshiftRA(v *Value) bool {
                flags := v_2
                v.reset(OpARMADCconst)
                v.AuxInt = int64(int32(c) >> uint64(d))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -1230,10 +1204,8 @@ func rewriteValueARM_OpARMADCshiftRAreg(v *Value) bool {
                v.reset(OpARMADCconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (ADCshiftRAreg x y (MOVWconst [c]) flags)
@@ -1248,9 +1220,7 @@ func rewriteValueARM_OpARMADCshiftRAreg(v *Value) bool {
                flags := v_3
                v.reset(OpARMADCshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        return false
@@ -1275,8 +1245,7 @@ func rewriteValueARM_OpARMADCshiftRL(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRLconst, x.Type)
                v0.AuxInt = d
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (ADCshiftRL x (MOVWconst [c]) [d] flags)
@@ -1291,8 +1260,7 @@ func rewriteValueARM_OpARMADCshiftRL(v *Value) bool {
                flags := v_2
                v.reset(OpARMADCconst)
                v.AuxInt = int64(int32(uint32(c) >> uint64(d)))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -1316,10 +1284,8 @@ func rewriteValueARM_OpARMADCshiftRLreg(v *Value) bool {
                v.reset(OpARMADCconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (ADCshiftRLreg x y (MOVWconst [c]) flags)
@@ -1334,9 +1300,7 @@ func rewriteValueARM_OpARMADCshiftRLreg(v *Value) bool {
                flags := v_3
                v.reset(OpARMADCshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        return false
@@ -1373,8 +1337,7 @@ func rewriteValueARM_OpARMADD(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMADDshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1391,8 +1354,7 @@ func rewriteValueARM_OpARMADD(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMADDshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1409,8 +1371,7 @@ func rewriteValueARM_OpARMADD(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMADDshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1426,9 +1387,7 @@ func rewriteValueARM_OpARMADD(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMADDshiftLLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -1444,9 +1403,7 @@ func rewriteValueARM_OpARMADD(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMADDshiftRLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -1462,9 +1419,7 @@ func rewriteValueARM_OpARMADD(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMADDshiftRAreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -1479,8 +1434,7 @@ func rewriteValueARM_OpARMADD(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpARMSUB)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1503,8 +1457,7 @@ func rewriteValueARM_OpARMADD(v *Value) bool {
                        v.reset(OpARMRSBconst)
                        v.AuxInt = c + d
                        v0 := b.NewValue0(v.Pos, OpARMADD, t)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        v.AddArg(v0)
                        return true
                }
@@ -1521,9 +1474,7 @@ func rewriteValueARM_OpARMADD(v *Value) bool {
                        x := v_0.Args[0]
                        a := v_1
                        v.reset(OpARMMULA)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(a)
+                       v.AddArg3(x, y, a)
                        return true
                }
                break
@@ -1548,9 +1499,7 @@ func rewriteValueARM_OpARMADDD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARMMULAD)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -1570,9 +1519,7 @@ func rewriteValueARM_OpARMADDD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARMMULSD)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -1597,9 +1544,7 @@ func rewriteValueARM_OpARMADDF(v *Value) bool {
                                continue
                        }
                        v.reset(OpARMMULAF)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -1619,9 +1564,7 @@ func rewriteValueARM_OpARMADDF(v *Value) bool {
                                continue
                        }
                        v.reset(OpARMMULSF)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -1659,8 +1602,7 @@ func rewriteValueARM_OpARMADDS(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMADDSshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1677,8 +1619,7 @@ func rewriteValueARM_OpARMADDS(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMADDSshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1695,8 +1636,7 @@ func rewriteValueARM_OpARMADDS(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMADDSshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1712,9 +1652,7 @@ func rewriteValueARM_OpARMADDS(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMADDSshiftLLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -1730,9 +1668,7 @@ func rewriteValueARM_OpARMADDS(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMADDSshiftRLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -1748,9 +1684,7 @@ func rewriteValueARM_OpARMADDS(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMADDSshiftRAreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -1811,8 +1745,7 @@ func rewriteValueARM_OpARMADDSshiftLLreg(v *Value) bool {
                v.reset(OpARMADDSconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1827,8 +1760,7 @@ func rewriteValueARM_OpARMADDSshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMADDSshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -1887,8 +1819,7 @@ func rewriteValueARM_OpARMADDSshiftRAreg(v *Value) bool {
                v.reset(OpARMADDSconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1903,8 +1834,7 @@ func rewriteValueARM_OpARMADDSshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMADDSshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -1963,8 +1893,7 @@ func rewriteValueARM_OpARMADDSshiftRLreg(v *Value) bool {
                v.reset(OpARMADDSconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1979,8 +1908,7 @@ func rewriteValueARM_OpARMADDSshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMADDSshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -2203,8 +2131,7 @@ func rewriteValueARM_OpARMADDshiftLLreg(v *Value) bool {
                v.reset(OpARMADDconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2219,8 +2146,7 @@ func rewriteValueARM_OpARMADDshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMADDshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -2279,8 +2205,7 @@ func rewriteValueARM_OpARMADDshiftRAreg(v *Value) bool {
                v.reset(OpARMADDconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2295,8 +2220,7 @@ func rewriteValueARM_OpARMADDshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMADDshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -2371,8 +2295,7 @@ func rewriteValueARM_OpARMADDshiftRLreg(v *Value) bool {
                v.reset(OpARMADDconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2387,8 +2310,7 @@ func rewriteValueARM_OpARMADDshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMADDshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -2424,8 +2346,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMANDshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2442,8 +2363,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMANDshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2460,8 +2380,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMANDshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2477,9 +2396,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMANDshiftLLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -2495,9 +2412,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMANDshiftRLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -2513,9 +2428,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMANDshiftRAreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -2542,8 +2455,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpARMBIC)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2560,8 +2472,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMBICshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2578,8 +2489,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMBICshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2596,8 +2506,7 @@ func rewriteValueARM_OpARMAND(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMBICshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2759,8 +2668,7 @@ func rewriteValueARM_OpARMANDshiftLLreg(v *Value) bool {
                v.reset(OpARMANDconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2775,8 +2683,7 @@ func rewriteValueARM_OpARMANDshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMANDshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -2854,8 +2761,7 @@ func rewriteValueARM_OpARMANDshiftRAreg(v *Value) bool {
                v.reset(OpARMANDconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2870,8 +2776,7 @@ func rewriteValueARM_OpARMANDshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMANDshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -2949,8 +2854,7 @@ func rewriteValueARM_OpARMANDshiftRLreg(v *Value) bool {
                v.reset(OpARMANDconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2965,8 +2869,7 @@ func rewriteValueARM_OpARMANDshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMANDshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -3030,8 +2933,7 @@ func rewriteValueARM_OpARMBIC(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMBICshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (BIC x (SRLconst [c] y))
@@ -3045,8 +2947,7 @@ func rewriteValueARM_OpARMBIC(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMBICshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (BIC x (SRAconst [c] y))
@@ -3060,8 +2961,7 @@ func rewriteValueARM_OpARMBIC(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMBICshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (BIC x (SLL y z))
@@ -3074,9 +2974,7 @@ func rewriteValueARM_OpARMBIC(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMBICshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (BIC x (SRL y z))
@@ -3089,9 +2987,7 @@ func rewriteValueARM_OpARMBIC(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMBICshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (BIC x (SRA y z))
@@ -3104,9 +3000,7 @@ func rewriteValueARM_OpARMBIC(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMBICshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (BIC x x)
@@ -3255,8 +3149,7 @@ func rewriteValueARM_OpARMBICshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMBICshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -3312,8 +3205,7 @@ func rewriteValueARM_OpARMBICshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMBICshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -3369,8 +3261,7 @@ func rewriteValueARM_OpARMBICshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMBICshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -3406,8 +3297,7 @@ func rewriteValueARM_OpARMCMN(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMCMNshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3424,8 +3314,7 @@ func rewriteValueARM_OpARMCMN(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMCMNshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3442,8 +3331,7 @@ func rewriteValueARM_OpARMCMN(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMCMNshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3459,9 +3347,7 @@ func rewriteValueARM_OpARMCMN(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMCMNshiftLLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -3477,9 +3363,7 @@ func rewriteValueARM_OpARMCMN(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMCMNshiftRLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -3495,9 +3379,7 @@ func rewriteValueARM_OpARMCMN(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMCMNshiftRAreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -3512,8 +3394,7 @@ func rewriteValueARM_OpARMCMN(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpARMCMP)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -3653,8 +3534,7 @@ func rewriteValueARM_OpARMCMNshiftLLreg(v *Value) bool {
                v.reset(OpARMCMNconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -3669,8 +3549,7 @@ func rewriteValueARM_OpARMCMNshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMCMNshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -3729,8 +3608,7 @@ func rewriteValueARM_OpARMCMNshiftRAreg(v *Value) bool {
                v.reset(OpARMCMNconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -3745,8 +3623,7 @@ func rewriteValueARM_OpARMCMNshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMCMNshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -3805,8 +3682,7 @@ func rewriteValueARM_OpARMCMNshiftRLreg(v *Value) bool {
                v.reset(OpARMCMNconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -3821,8 +3697,7 @@ func rewriteValueARM_OpARMCMNshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMCMNshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -3898,8 +3773,7 @@ func rewriteValueARM_OpARMCMOVWHSconst(v *Value) bool {
                flags := v_1.Args[0]
                v.reset(OpARMCMOVWLSconst)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -3975,8 +3849,7 @@ func rewriteValueARM_OpARMCMOVWLSconst(v *Value) bool {
                flags := v_1.Args[0]
                v.reset(OpARMCMOVWHSconst)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -4024,8 +3897,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                }
                v.reset(OpARMInvertFlags)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -4040,8 +3912,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMCMPshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMP (SLLconst [c] y) x)
@@ -4056,8 +3927,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                v.reset(OpARMInvertFlags)
                v0 := b.NewValue0(v.Pos, OpARMCMPshiftLL, types.TypeFlags)
                v0.AuxInt = c
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -4072,8 +3942,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMCMPshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMP (SRLconst [c] y) x)
@@ -4088,8 +3957,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                v.reset(OpARMInvertFlags)
                v0 := b.NewValue0(v.Pos, OpARMCMPshiftRL, types.TypeFlags)
                v0.AuxInt = c
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -4104,8 +3972,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMCMPshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMP (SRAconst [c] y) x)
@@ -4120,8 +3987,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                v.reset(OpARMInvertFlags)
                v0 := b.NewValue0(v.Pos, OpARMCMPshiftRA, types.TypeFlags)
                v0.AuxInt = c
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -4135,9 +4001,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMCMPshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (CMP (SLL y z) x)
@@ -4151,9 +4015,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                x := v_1
                v.reset(OpARMInvertFlags)
                v0 := b.NewValue0(v.Pos, OpARMCMPshiftLLreg, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v0.AddArg(z)
+               v0.AddArg3(x, y, z)
                v.AddArg(v0)
                return true
        }
@@ -4167,9 +4029,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMCMPshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (CMP (SRL y z) x)
@@ -4183,9 +4043,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                x := v_1
                v.reset(OpARMInvertFlags)
                v0 := b.NewValue0(v.Pos, OpARMCMPshiftRLreg, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v0.AddArg(z)
+               v0.AddArg3(x, y, z)
                v.AddArg(v0)
                return true
        }
@@ -4199,9 +4057,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMCMPshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (CMP (SRA y z) x)
@@ -4215,9 +4071,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                x := v_1
                v.reset(OpARMInvertFlags)
                v0 := b.NewValue0(v.Pos, OpARMCMPshiftRAreg, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v0.AddArg(z)
+               v0.AddArg3(x, y, z)
                v.AddArg(v0)
                return true
        }
@@ -4230,8 +4084,7 @@ func rewriteValueARM_OpARMCMP(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpARMCMN)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -4456,8 +4309,7 @@ func rewriteValueARM_OpARMCMPshiftLLreg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v0.AuxInt = c
                v1 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -4473,8 +4325,7 @@ func rewriteValueARM_OpARMCMPshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMCMPshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -4536,8 +4387,7 @@ func rewriteValueARM_OpARMCMPshiftRAreg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v0.AuxInt = c
                v1 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -4553,8 +4403,7 @@ func rewriteValueARM_OpARMCMPshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMCMPshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -4616,8 +4465,7 @@ func rewriteValueARM_OpARMCMPshiftRLreg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v0.AuxInt = c
                v1 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -4633,8 +4481,7 @@ func rewriteValueARM_OpARMCMPshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMCMPshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -5241,8 +5088,7 @@ func rewriteValueARM_OpARMMOVBUload(v *Value) bool {
                v.reset(OpARMMOVBUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUload [off1] {sym} (SUBconst [off2] ptr) mem)
@@ -5259,8 +5105,7 @@ func rewriteValueARM_OpARMMOVBUload(v *Value) bool {
                v.reset(OpARMMOVBUload)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -5282,8 +5127,7 @@ func rewriteValueARM_OpARMMOVBUload(v *Value) bool {
                v.reset(OpARMMOVBUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUload [off] {sym} ptr (MOVBstore [off2] {sym2} ptr2 x _))
@@ -5326,9 +5170,7 @@ func rewriteValueARM_OpARMMOVBUload(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVBUloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBUload [off] {sym} (SB) _)
@@ -5383,8 +5225,7 @@ func rewriteValueARM_OpARMMOVBUloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVBUload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUloadidx (MOVWconst [c]) ptr mem)
@@ -5398,8 +5239,7 @@ func rewriteValueARM_OpARMMOVBUloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVBUload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -5472,8 +5312,7 @@ func rewriteValueARM_OpARMMOVBload(v *Value) bool {
                v.reset(OpARMMOVBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off1] {sym} (SUBconst [off2] ptr) mem)
@@ -5490,8 +5329,7 @@ func rewriteValueARM_OpARMMOVBload(v *Value) bool {
                v.reset(OpARMMOVBload)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -5513,8 +5351,7 @@ func rewriteValueARM_OpARMMOVBload(v *Value) bool {
                v.reset(OpARMMOVBload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off] {sym} ptr (MOVBstore [off2] {sym2} ptr2 x _))
@@ -5557,9 +5394,7 @@ func rewriteValueARM_OpARMMOVBload(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVBloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -5601,8 +5436,7 @@ func rewriteValueARM_OpARMMOVBloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVBload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBloadidx (MOVWconst [c]) ptr mem)
@@ -5616,8 +5450,7 @@ func rewriteValueARM_OpARMMOVBloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVBload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -5696,9 +5529,7 @@ func rewriteValueARM_OpARMMOVBstore(v *Value) bool {
                v.reset(OpARMMOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym} (SUBconst [off2] ptr) val mem)
@@ -5716,9 +5547,7 @@ func rewriteValueARM_OpARMMOVBstore(v *Value) bool {
                v.reset(OpARMMOVBstore)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) val mem)
@@ -5741,9 +5570,7 @@ func rewriteValueARM_OpARMMOVBstore(v *Value) bool {
                v.reset(OpARMMOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
@@ -5760,9 +5587,7 @@ func rewriteValueARM_OpARMMOVBstore(v *Value) bool {
                v.reset(OpARMMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBUreg x) mem)
@@ -5779,9 +5604,7 @@ func rewriteValueARM_OpARMMOVBstore(v *Value) bool {
                v.reset(OpARMMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
@@ -5798,9 +5621,7 @@ func rewriteValueARM_OpARMMOVBstore(v *Value) bool {
                v.reset(OpARMMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVHUreg x) mem)
@@ -5817,9 +5638,7 @@ func rewriteValueARM_OpARMMOVBstore(v *Value) bool {
                v.reset(OpARMMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [0] {sym} (ADD ptr idx) val mem)
@@ -5841,10 +5660,7 @@ func rewriteValueARM_OpARMMOVBstore(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVBstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -5866,9 +5682,7 @@ func rewriteValueARM_OpARMMOVBstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVBstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstoreidx (MOVWconst [c]) ptr val mem)
@@ -5883,9 +5697,7 @@ func rewriteValueARM_OpARMMOVBstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVBstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -5907,8 +5719,7 @@ func rewriteValueARM_OpARMMOVDload(v *Value) bool {
                v.reset(OpARMMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDload [off1] {sym} (SUBconst [off2] ptr) mem)
@@ -5925,8 +5736,7 @@ func rewriteValueARM_OpARMMOVDload(v *Value) bool {
                v.reset(OpARMMOVDload)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -5948,8 +5758,7 @@ func rewriteValueARM_OpARMMOVDload(v *Value) bool {
                v.reset(OpARMMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDload [off] {sym} ptr (MOVDstore [off2] {sym2} ptr2 x _))
@@ -5996,9 +5805,7 @@ func rewriteValueARM_OpARMMOVDstore(v *Value) bool {
                v.reset(OpARMMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym} (SUBconst [off2] ptr) val mem)
@@ -6016,9 +5823,7 @@ func rewriteValueARM_OpARMMOVDstore(v *Value) bool {
                v.reset(OpARMMOVDstore)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) val mem)
@@ -6041,9 +5846,7 @@ func rewriteValueARM_OpARMMOVDstore(v *Value) bool {
                v.reset(OpARMMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -6065,8 +5868,7 @@ func rewriteValueARM_OpARMMOVFload(v *Value) bool {
                v.reset(OpARMMOVFload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVFload [off1] {sym} (SUBconst [off2] ptr) mem)
@@ -6083,8 +5885,7 @@ func rewriteValueARM_OpARMMOVFload(v *Value) bool {
                v.reset(OpARMMOVFload)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVFload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -6106,8 +5907,7 @@ func rewriteValueARM_OpARMMOVFload(v *Value) bool {
                v.reset(OpARMMOVFload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVFload [off] {sym} ptr (MOVFstore [off2] {sym2} ptr2 x _))
@@ -6154,9 +5954,7 @@ func rewriteValueARM_OpARMMOVFstore(v *Value) bool {
                v.reset(OpARMMOVFstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVFstore [off1] {sym} (SUBconst [off2] ptr) val mem)
@@ -6174,9 +5972,7 @@ func rewriteValueARM_OpARMMOVFstore(v *Value) bool {
                v.reset(OpARMMOVFstore)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVFstore [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) val mem)
@@ -6199,9 +5995,7 @@ func rewriteValueARM_OpARMMOVFstore(v *Value) bool {
                v.reset(OpARMMOVFstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -6225,8 +6019,7 @@ func rewriteValueARM_OpARMMOVHUload(v *Value) bool {
                v.reset(OpARMMOVHUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUload [off1] {sym} (SUBconst [off2] ptr) mem)
@@ -6243,8 +6036,7 @@ func rewriteValueARM_OpARMMOVHUload(v *Value) bool {
                v.reset(OpARMMOVHUload)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -6266,8 +6058,7 @@ func rewriteValueARM_OpARMMOVHUload(v *Value) bool {
                v.reset(OpARMMOVHUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUload [off] {sym} ptr (MOVHstore [off2] {sym2} ptr2 x _))
@@ -6310,9 +6101,7 @@ func rewriteValueARM_OpARMMOVHUload(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVHUloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHUload [off] {sym} (SB) _)
@@ -6367,8 +6156,7 @@ func rewriteValueARM_OpARMMOVHUloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVHUload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUloadidx (MOVWconst [c]) ptr mem)
@@ -6382,8 +6170,7 @@ func rewriteValueARM_OpARMMOVHUloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVHUload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -6479,8 +6266,7 @@ func rewriteValueARM_OpARMMOVHload(v *Value) bool {
                v.reset(OpARMMOVHload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHload [off1] {sym} (SUBconst [off2] ptr) mem)
@@ -6497,8 +6283,7 @@ func rewriteValueARM_OpARMMOVHload(v *Value) bool {
                v.reset(OpARMMOVHload)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -6520,8 +6305,7 @@ func rewriteValueARM_OpARMMOVHload(v *Value) bool {
                v.reset(OpARMMOVHload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHload [off] {sym} ptr (MOVHstore [off2] {sym2} ptr2 x _))
@@ -6564,9 +6348,7 @@ func rewriteValueARM_OpARMMOVHload(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVHloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -6608,8 +6390,7 @@ func rewriteValueARM_OpARMMOVHloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVHload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHloadidx (MOVWconst [c]) ptr mem)
@@ -6623,8 +6404,7 @@ func rewriteValueARM_OpARMMOVHloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVHload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -6749,9 +6529,7 @@ func rewriteValueARM_OpARMMOVHstore(v *Value) bool {
                v.reset(OpARMMOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off1] {sym} (SUBconst [off2] ptr) val mem)
@@ -6769,9 +6547,7 @@ func rewriteValueARM_OpARMMOVHstore(v *Value) bool {
                v.reset(OpARMMOVHstore)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) val mem)
@@ -6794,9 +6570,7 @@ func rewriteValueARM_OpARMMOVHstore(v *Value) bool {
                v.reset(OpARMMOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
@@ -6813,9 +6587,7 @@ func rewriteValueARM_OpARMMOVHstore(v *Value) bool {
                v.reset(OpARMMOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHUreg x) mem)
@@ -6832,9 +6604,7 @@ func rewriteValueARM_OpARMMOVHstore(v *Value) bool {
                v.reset(OpARMMOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [0] {sym} (ADD ptr idx) val mem)
@@ -6856,10 +6626,7 @@ func rewriteValueARM_OpARMMOVHstore(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVHstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -6881,9 +6648,7 @@ func rewriteValueARM_OpARMMOVHstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVHstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstoreidx (MOVWconst [c]) ptr val mem)
@@ -6898,9 +6663,7 @@ func rewriteValueARM_OpARMMOVHstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVHstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -6924,8 +6687,7 @@ func rewriteValueARM_OpARMMOVWload(v *Value) bool {
                v.reset(OpARMMOVWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off1] {sym} (SUBconst [off2] ptr) mem)
@@ -6942,8 +6704,7 @@ func rewriteValueARM_OpARMMOVWload(v *Value) bool {
                v.reset(OpARMMOVWload)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -6965,8 +6726,7 @@ func rewriteValueARM_OpARMMOVWload(v *Value) bool {
                v.reset(OpARMMOVWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off] {sym} ptr (MOVWstore [off2] {sym2} ptr2 x _))
@@ -7010,9 +6770,7 @@ func rewriteValueARM_OpARMMOVWload(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVWloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [0] {sym} (ADDshiftLL ptr idx [c]) mem)
@@ -7035,9 +6793,7 @@ func rewriteValueARM_OpARMMOVWload(v *Value) bool {
                }
                v.reset(OpARMMOVWloadshiftLL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [0] {sym} (ADDshiftRL ptr idx [c]) mem)
@@ -7060,9 +6816,7 @@ func rewriteValueARM_OpARMMOVWload(v *Value) bool {
                }
                v.reset(OpARMMOVWloadshiftRL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [0] {sym} (ADDshiftRA ptr idx [c]) mem)
@@ -7085,9 +6839,7 @@ func rewriteValueARM_OpARMMOVWload(v *Value) bool {
                }
                v.reset(OpARMMOVWloadshiftRA)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [off] {sym} (SB) _)
@@ -7143,8 +6895,7 @@ func rewriteValueARM_OpARMMOVWloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWloadidx (MOVWconst [c]) ptr mem)
@@ -7158,8 +6909,7 @@ func rewriteValueARM_OpARMMOVWloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWloadidx ptr (SLLconst idx [c]) mem)
@@ -7174,9 +6924,7 @@ func rewriteValueARM_OpARMMOVWloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWloadshiftLL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWloadidx (SLLconst idx [c]) ptr mem)
@@ -7191,9 +6939,7 @@ func rewriteValueARM_OpARMMOVWloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWloadshiftLL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWloadidx ptr (SRLconst idx [c]) mem)
@@ -7208,9 +6954,7 @@ func rewriteValueARM_OpARMMOVWloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWloadshiftRL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWloadidx (SRLconst idx [c]) ptr mem)
@@ -7225,9 +6969,7 @@ func rewriteValueARM_OpARMMOVWloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWloadshiftRL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWloadidx ptr (SRAconst idx [c]) mem)
@@ -7242,9 +6984,7 @@ func rewriteValueARM_OpARMMOVWloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWloadshiftRA)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWloadidx (SRAconst idx [c]) ptr mem)
@@ -7259,9 +6999,7 @@ func rewriteValueARM_OpARMMOVWloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWloadshiftRA)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -7307,8 +7045,7 @@ func rewriteValueARM_OpARMMOVWloadshiftLL(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWload)
                v.AuxInt = int64(uint32(c) << uint64(d))
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -7354,8 +7091,7 @@ func rewriteValueARM_OpARMMOVWloadshiftRA(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWload)
                v.AuxInt = int64(int32(c) >> uint64(d))
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -7401,8 +7137,7 @@ func rewriteValueARM_OpARMMOVWloadshiftRL(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVWload)
                v.AuxInt = int64(uint32(c) >> uint64(d))
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -7453,9 +7188,7 @@ func rewriteValueARM_OpARMMOVWstore(v *Value) bool {
                v.reset(OpARMMOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym} (SUBconst [off2] ptr) val mem)
@@ -7473,9 +7206,7 @@ func rewriteValueARM_OpARMMOVWstore(v *Value) bool {
                v.reset(OpARMMOVWstore)
                v.AuxInt = off1 - off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) val mem)
@@ -7498,9 +7229,7 @@ func rewriteValueARM_OpARMMOVWstore(v *Value) bool {
                v.reset(OpARMMOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [0] {sym} (ADD ptr idx) val mem)
@@ -7522,10 +7251,7 @@ func rewriteValueARM_OpARMMOVWstore(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVWstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [0] {sym} (ADDshiftLL ptr idx [c]) val mem)
@@ -7549,10 +7275,7 @@ func rewriteValueARM_OpARMMOVWstore(v *Value) bool {
                }
                v.reset(OpARMMOVWstoreshiftLL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [0] {sym} (ADDshiftRL ptr idx [c]) val mem)
@@ -7576,10 +7299,7 @@ func rewriteValueARM_OpARMMOVWstore(v *Value) bool {
                }
                v.reset(OpARMMOVWstoreshiftRL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [0] {sym} (ADDshiftRA ptr idx [c]) val mem)
@@ -7603,10 +7323,7 @@ func rewriteValueARM_OpARMMOVWstore(v *Value) bool {
                }
                v.reset(OpARMMOVWstoreshiftRA)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -7628,9 +7345,7 @@ func rewriteValueARM_OpARMMOVWstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstoreidx (MOVWconst [c]) ptr val mem)
@@ -7645,9 +7360,7 @@ func rewriteValueARM_OpARMMOVWstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstoreidx ptr (SLLconst idx [c]) val mem)
@@ -7663,10 +7376,7 @@ func rewriteValueARM_OpARMMOVWstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstoreshiftLL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx (SLLconst idx [c]) ptr val mem)
@@ -7682,10 +7392,7 @@ func rewriteValueARM_OpARMMOVWstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstoreshiftLL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx ptr (SRLconst idx [c]) val mem)
@@ -7701,10 +7408,7 @@ func rewriteValueARM_OpARMMOVWstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstoreshiftRL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx (SRLconst idx [c]) ptr val mem)
@@ -7720,10 +7424,7 @@ func rewriteValueARM_OpARMMOVWstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstoreshiftRL)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx ptr (SRAconst idx [c]) val mem)
@@ -7739,10 +7440,7 @@ func rewriteValueARM_OpARMMOVWstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstoreshiftRA)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx (SRAconst idx [c]) ptr val mem)
@@ -7758,10 +7456,7 @@ func rewriteValueARM_OpARMMOVWstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstoreshiftRA)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -7784,9 +7479,7 @@ func rewriteValueARM_OpARMMOVWstoreshiftLL(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstore)
                v.AuxInt = int64(uint32(c) << uint64(d))
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -7809,9 +7502,7 @@ func rewriteValueARM_OpARMMOVWstoreshiftRA(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstore)
                v.AuxInt = int64(int32(c) >> uint64(d))
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -7834,9 +7525,7 @@ func rewriteValueARM_OpARMMOVWstoreshiftRL(v *Value) bool {
                mem := v_3
                v.reset(OpARMMOVWstore)
                v.AuxInt = int64(uint32(c) >> uint64(d))
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -7928,8 +7617,7 @@ func rewriteValueARM_OpARMMUL(v *Value) bool {
                        }
                        v.reset(OpARMADDshiftLL)
                        v.AuxInt = log2(c - 1)
-                       v.AddArg(x)
-                       v.AddArg(x)
+                       v.AddArg2(x, x)
                        return true
                }
                break
@@ -7949,8 +7637,7 @@ func rewriteValueARM_OpARMMUL(v *Value) bool {
                        }
                        v.reset(OpARMRSBshiftLL)
                        v.AuxInt = log2(c + 1)
-                       v.AddArg(x)
-                       v.AddArg(x)
+                       v.AddArg2(x, x)
                        return true
                }
                break
@@ -7972,8 +7659,7 @@ func rewriteValueARM_OpARMMUL(v *Value) bool {
                        v.AuxInt = log2(c / 3)
                        v0 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                        v0.AuxInt = 1
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -7996,8 +7682,7 @@ func rewriteValueARM_OpARMMUL(v *Value) bool {
                        v.AuxInt = log2(c / 5)
                        v0 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                        v0.AuxInt = 2
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -8020,8 +7705,7 @@ func rewriteValueARM_OpARMMUL(v *Value) bool {
                        v.AuxInt = log2(c / 7)
                        v0 := b.NewValue0(v.Pos, OpARMRSBshiftLL, x.Type)
                        v0.AuxInt = 3
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -8044,8 +7728,7 @@ func rewriteValueARM_OpARMMUL(v *Value) bool {
                        v.AuxInt = log2(c / 9)
                        v0 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                        v0.AuxInt = 3
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -8090,8 +7773,7 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                        break
                }
                v.reset(OpARMSUB)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MULA _ (MOVWconst [0]) a)
@@ -8115,8 +7797,7 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                }
                a := v_2
                v.reset(OpARMADD)
-               v.AddArg(x)
-               v.AddArg(a)
+               v.AddArg2(x, a)
                return true
        }
        // match: (MULA x (MOVWconst [c]) a)
@@ -8136,8 +7817,7 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSLLconst, x.Type)
                v0.AuxInt = log2(c)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA x (MOVWconst [c]) a)
@@ -8156,10 +7836,8 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v.reset(OpARMADD)
                v0 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v0.AddArg2(x, x)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA x (MOVWconst [c]) a)
@@ -8178,10 +7856,8 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v.reset(OpARMADD)
                v0 := b.NewValue0(v.Pos, OpARMRSBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v0.AddArg2(x, x)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA x (MOVWconst [c]) a)
@@ -8202,11 +7878,9 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v0.AuxInt = log2(c / 3)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 1
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA x (MOVWconst [c]) a)
@@ -8227,11 +7901,9 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v0.AuxInt = log2(c / 5)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 2
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA x (MOVWconst [c]) a)
@@ -8252,11 +7924,9 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v0.AuxInt = log2(c / 7)
                v1 := b.NewValue0(v.Pos, OpARMRSBshiftLL, x.Type)
                v1.AuxInt = 3
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA x (MOVWconst [c]) a)
@@ -8277,11 +7947,9 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v0.AuxInt = log2(c / 9)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 3
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA (MOVWconst [c]) x a)
@@ -8298,8 +7966,7 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                        break
                }
                v.reset(OpARMSUB)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MULA (MOVWconst [0]) _ a)
@@ -8323,8 +7990,7 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                x := v_1
                a := v_2
                v.reset(OpARMADD)
-               v.AddArg(x)
-               v.AddArg(a)
+               v.AddArg2(x, a)
                return true
        }
        // match: (MULA (MOVWconst [c]) x a)
@@ -8344,8 +8010,7 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSLLconst, x.Type)
                v0.AuxInt = log2(c)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA (MOVWconst [c]) x a)
@@ -8364,10 +8029,8 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v.reset(OpARMADD)
                v0 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v0.AddArg2(x, x)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA (MOVWconst [c]) x a)
@@ -8386,10 +8049,8 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v.reset(OpARMADD)
                v0 := b.NewValue0(v.Pos, OpARMRSBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v0.AddArg2(x, x)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA (MOVWconst [c]) x a)
@@ -8410,11 +8071,9 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v0.AuxInt = log2(c / 3)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 1
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA (MOVWconst [c]) x a)
@@ -8435,11 +8094,9 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v0.AuxInt = log2(c / 5)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 2
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA (MOVWconst [c]) x a)
@@ -8460,11 +8117,9 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v0.AuxInt = log2(c / 7)
                v1 := b.NewValue0(v.Pos, OpARMRSBshiftLL, x.Type)
                v1.AuxInt = 3
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA (MOVWconst [c]) x a)
@@ -8485,11 +8140,9 @@ func rewriteValueARM_OpARMMULA(v *Value) bool {
                v0.AuxInt = log2(c / 9)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 3
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULA (MOVWconst [c]) (MOVWconst [d]) a)
@@ -8528,8 +8181,7 @@ func rewriteValueARM_OpARMMULD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARMNMULD)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -8553,8 +8205,7 @@ func rewriteValueARM_OpARMMULF(v *Value) bool {
                                continue
                        }
                        v.reset(OpARMNMULF)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -8580,8 +8231,7 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                        break
                }
                v.reset(OpARMADD)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MULS _ (MOVWconst [0]) a)
@@ -8605,8 +8255,7 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                }
                a := v_2
                v.reset(OpARMRSB)
-               v.AddArg(x)
-               v.AddArg(a)
+               v.AddArg2(x, a)
                return true
        }
        // match: (MULS x (MOVWconst [c]) a)
@@ -8626,8 +8275,7 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSLLconst, x.Type)
                v0.AuxInt = log2(c)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS x (MOVWconst [c]) a)
@@ -8646,10 +8294,8 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v.reset(OpARMRSB)
                v0 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v0.AddArg2(x, x)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS x (MOVWconst [c]) a)
@@ -8668,10 +8314,8 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v.reset(OpARMRSB)
                v0 := b.NewValue0(v.Pos, OpARMRSBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v0.AddArg2(x, x)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS x (MOVWconst [c]) a)
@@ -8692,11 +8336,9 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v0.AuxInt = log2(c / 3)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 1
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS x (MOVWconst [c]) a)
@@ -8717,11 +8359,9 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v0.AuxInt = log2(c / 5)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 2
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS x (MOVWconst [c]) a)
@@ -8742,11 +8382,9 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v0.AuxInt = log2(c / 7)
                v1 := b.NewValue0(v.Pos, OpARMRSBshiftLL, x.Type)
                v1.AuxInt = 3
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS x (MOVWconst [c]) a)
@@ -8767,11 +8405,9 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v0.AuxInt = log2(c / 9)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 3
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS (MOVWconst [c]) x a)
@@ -8788,8 +8424,7 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                        break
                }
                v.reset(OpARMADD)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MULS (MOVWconst [0]) _ a)
@@ -8813,8 +8448,7 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                x := v_1
                a := v_2
                v.reset(OpARMRSB)
-               v.AddArg(x)
-               v.AddArg(a)
+               v.AddArg2(x, a)
                return true
        }
        // match: (MULS (MOVWconst [c]) x a)
@@ -8834,8 +8468,7 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSLLconst, x.Type)
                v0.AuxInt = log2(c)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS (MOVWconst [c]) x a)
@@ -8854,10 +8487,8 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v.reset(OpARMRSB)
                v0 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v0.AddArg2(x, x)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS (MOVWconst [c]) x a)
@@ -8876,10 +8507,8 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v.reset(OpARMRSB)
                v0 := b.NewValue0(v.Pos, OpARMRSBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v0.AddArg2(x, x)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS (MOVWconst [c]) x a)
@@ -8900,11 +8529,9 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v0.AuxInt = log2(c / 3)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 1
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS (MOVWconst [c]) x a)
@@ -8925,11 +8552,9 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v0.AuxInt = log2(c / 5)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 2
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS (MOVWconst [c]) x a)
@@ -8950,11 +8575,9 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v0.AuxInt = log2(c / 7)
                v1 := b.NewValue0(v.Pos, OpARMRSBshiftLL, x.Type)
                v1.AuxInt = 3
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS (MOVWconst [c]) x a)
@@ -8975,11 +8598,9 @@ func rewriteValueARM_OpARMMULS(v *Value) bool {
                v0.AuxInt = log2(c / 9)
                v1 := b.NewValue0(v.Pos, OpARMADDshiftLL, x.Type)
                v1.AuxInt = 3
-               v1.AddArg(x)
-               v1.AddArg(x)
+               v1.AddArg2(x, x)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(a)
+               v.AddArg2(v0, a)
                return true
        }
        // match: (MULS (MOVWconst [c]) (MOVWconst [d]) a)
@@ -9062,8 +8683,7 @@ func rewriteValueARM_OpARMMVN(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpARMMVNshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (MVN (SRL x y))
@@ -9075,8 +8695,7 @@ func rewriteValueARM_OpARMMVN(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpARMMVNshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (MVN (SRA x y))
@@ -9088,8 +8707,7 @@ func rewriteValueARM_OpARMMVN(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpARMMVNshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -9211,8 +8829,7 @@ func rewriteValueARM_OpARMNEGD(v *Value) bool {
                        break
                }
                v.reset(OpARMNMULD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -9232,8 +8849,7 @@ func rewriteValueARM_OpARMNEGF(v *Value) bool {
                        break
                }
                v.reset(OpARMNMULF)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -9251,8 +8867,7 @@ func rewriteValueARM_OpARMNMULD(v *Value) bool {
                        x := v_0.Args[0]
                        y := v_1
                        v.reset(OpARMMULD)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9272,8 +8887,7 @@ func rewriteValueARM_OpARMNMULF(v *Value) bool {
                        x := v_0.Args[0]
                        y := v_1
                        v.reset(OpARMMULF)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9376,8 +8990,7 @@ func rewriteValueARM_OpARMOR(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMORshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9394,8 +9007,7 @@ func rewriteValueARM_OpARMOR(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMORshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9412,8 +9024,7 @@ func rewriteValueARM_OpARMOR(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMORshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -9429,9 +9040,7 @@ func rewriteValueARM_OpARMOR(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMORshiftLLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -9447,9 +9056,7 @@ func rewriteValueARM_OpARMOR(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMORshiftRLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -9465,9 +9072,7 @@ func rewriteValueARM_OpARMOR(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMORshiftRAreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -9663,8 +9268,7 @@ func rewriteValueARM_OpARMORshiftLLreg(v *Value) bool {
                v.reset(OpARMORconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -9679,8 +9283,7 @@ func rewriteValueARM_OpARMORshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMORshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -9758,8 +9361,7 @@ func rewriteValueARM_OpARMORshiftRAreg(v *Value) bool {
                v.reset(OpARMORconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -9774,8 +9376,7 @@ func rewriteValueARM_OpARMORshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMORshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -9869,8 +9470,7 @@ func rewriteValueARM_OpARMORshiftRLreg(v *Value) bool {
                v.reset(OpARMORconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -9885,8 +9485,7 @@ func rewriteValueARM_OpARMORshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMORshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -9931,8 +9530,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMRSBshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RSB (SLLconst [c] y) x)
@@ -9946,8 +9544,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                x := v_1
                v.reset(OpARMSUBshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RSB x (SRLconst [c] y))
@@ -9961,8 +9558,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMRSBshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RSB (SRLconst [c] y) x)
@@ -9976,8 +9572,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                x := v_1
                v.reset(OpARMSUBshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RSB x (SRAconst [c] y))
@@ -9991,8 +9586,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMRSBshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RSB (SRAconst [c] y) x)
@@ -10006,8 +9600,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                x := v_1
                v.reset(OpARMSUBshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (RSB x (SLL y z))
@@ -10020,9 +9613,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMRSBshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (RSB (SLL y z) x)
@@ -10035,9 +9626,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpARMSUBshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (RSB x (SRL y z))
@@ -10050,9 +9639,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMRSBshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (RSB (SRL y z) x)
@@ -10065,9 +9652,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpARMSUBshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (RSB x (SRA y z))
@@ -10080,9 +9665,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMRSBshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (RSB (SRA y z) x)
@@ -10095,9 +9678,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpARMSUBshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (RSB x x)
@@ -10125,9 +9706,7 @@ func rewriteValueARM_OpARMRSB(v *Value) bool {
                        break
                }
                v.reset(OpARMMULS)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(a)
+               v.AddArg3(x, y, a)
                return true
        }
        return false
@@ -10186,8 +9765,7 @@ func rewriteValueARM_OpARMRSBSshiftLLreg(v *Value) bool {
                v.reset(OpARMSUBSconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -10202,8 +9780,7 @@ func rewriteValueARM_OpARMRSBSshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMRSBSshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10262,8 +9839,7 @@ func rewriteValueARM_OpARMRSBSshiftRAreg(v *Value) bool {
                v.reset(OpARMSUBSconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -10278,8 +9854,7 @@ func rewriteValueARM_OpARMRSBSshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMRSBSshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10338,8 +9913,7 @@ func rewriteValueARM_OpARMRSBSshiftRLreg(v *Value) bool {
                v.reset(OpARMSUBSconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -10354,8 +9928,7 @@ func rewriteValueARM_OpARMRSBSshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMRSBSshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10489,8 +10062,7 @@ func rewriteValueARM_OpARMRSBshiftLLreg(v *Value) bool {
                v.reset(OpARMSUBconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -10505,8 +10077,7 @@ func rewriteValueARM_OpARMRSBshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMRSBshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10582,8 +10153,7 @@ func rewriteValueARM_OpARMRSBshiftRAreg(v *Value) bool {
                v.reset(OpARMSUBconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -10598,8 +10168,7 @@ func rewriteValueARM_OpARMRSBshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMRSBshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10675,8 +10244,7 @@ func rewriteValueARM_OpARMRSBshiftRLreg(v *Value) bool {
                v.reset(OpARMSUBconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -10691,8 +10259,7 @@ func rewriteValueARM_OpARMRSBshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMRSBshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10712,8 +10279,7 @@ func rewriteValueARM_OpARMRSCconst(v *Value) bool {
                flags := v_1
                v.reset(OpARMRSCconst)
                v.AuxInt = int64(int32(c - d))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        // match: (RSCconst [c] (SUBconst [d] x) flags)
@@ -10728,8 +10294,7 @@ func rewriteValueARM_OpARMRSCconst(v *Value) bool {
                flags := v_1
                v.reset(OpARMRSCconst)
                v.AuxInt = int64(int32(c + d))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -10754,8 +10319,7 @@ func rewriteValueARM_OpARMRSCshiftLL(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSLLconst, x.Type)
                v0.AuxInt = d
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (RSCshiftLL x (MOVWconst [c]) [d] flags)
@@ -10770,8 +10334,7 @@ func rewriteValueARM_OpARMRSCshiftLL(v *Value) bool {
                flags := v_2
                v.reset(OpARMRSCconst)
                v.AuxInt = int64(int32(uint32(c) << uint64(d)))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -10795,10 +10358,8 @@ func rewriteValueARM_OpARMRSCshiftLLreg(v *Value) bool {
                v.reset(OpARMSBCconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (RSCshiftLLreg x y (MOVWconst [c]) flags)
@@ -10813,9 +10374,7 @@ func rewriteValueARM_OpARMRSCshiftLLreg(v *Value) bool {
                flags := v_3
                v.reset(OpARMRSCshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        return false
@@ -10840,8 +10399,7 @@ func rewriteValueARM_OpARMRSCshiftRA(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRAconst, x.Type)
                v0.AuxInt = d
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (RSCshiftRA x (MOVWconst [c]) [d] flags)
@@ -10856,8 +10414,7 @@ func rewriteValueARM_OpARMRSCshiftRA(v *Value) bool {
                flags := v_2
                v.reset(OpARMRSCconst)
                v.AuxInt = int64(int32(c) >> uint64(d))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -10881,10 +10438,8 @@ func rewriteValueARM_OpARMRSCshiftRAreg(v *Value) bool {
                v.reset(OpARMSBCconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (RSCshiftRAreg x y (MOVWconst [c]) flags)
@@ -10899,9 +10454,7 @@ func rewriteValueARM_OpARMRSCshiftRAreg(v *Value) bool {
                flags := v_3
                v.reset(OpARMRSCshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        return false
@@ -10926,8 +10479,7 @@ func rewriteValueARM_OpARMRSCshiftRL(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRLconst, x.Type)
                v0.AuxInt = d
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (RSCshiftRL x (MOVWconst [c]) [d] flags)
@@ -10942,8 +10494,7 @@ func rewriteValueARM_OpARMRSCshiftRL(v *Value) bool {
                flags := v_2
                v.reset(OpARMRSCconst)
                v.AuxInt = int64(int32(uint32(c) >> uint64(d)))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -10967,10 +10518,8 @@ func rewriteValueARM_OpARMRSCshiftRLreg(v *Value) bool {
                v.reset(OpARMSBCconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (RSCshiftRLreg x y (MOVWconst [c]) flags)
@@ -10985,9 +10534,7 @@ func rewriteValueARM_OpARMRSCshiftRLreg(v *Value) bool {
                flags := v_3
                v.reset(OpARMRSCshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        return false
@@ -11007,8 +10554,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                flags := v_2
                v.reset(OpARMRSCconst)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        // match: (SBC x (MOVWconst [c]) flags)
@@ -11022,8 +10568,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                flags := v_2
                v.reset(OpARMSBCconst)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        // match: (SBC x (SLLconst [c] y) flags)
@@ -11038,9 +10583,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                flags := v_2
                v.reset(OpARMSBCshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        // match: (SBC (SLLconst [c] y) x flags)
@@ -11055,9 +10598,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                flags := v_2
                v.reset(OpARMRSCshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        // match: (SBC x (SRLconst [c] y) flags)
@@ -11072,9 +10613,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                flags := v_2
                v.reset(OpARMSBCshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        // match: (SBC (SRLconst [c] y) x flags)
@@ -11089,9 +10628,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                flags := v_2
                v.reset(OpARMRSCshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        // match: (SBC x (SRAconst [c] y) flags)
@@ -11106,9 +10643,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                flags := v_2
                v.reset(OpARMSBCshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        // match: (SBC (SRAconst [c] y) x flags)
@@ -11123,9 +10658,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                flags := v_2
                v.reset(OpARMRSCshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        // match: (SBC x (SLL y z) flags)
@@ -11139,10 +10672,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                y := v_1.Args[0]
                flags := v_2
                v.reset(OpARMSBCshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
-               v.AddArg(flags)
+               v.AddArg4(x, y, z, flags)
                return true
        }
        // match: (SBC (SLL y z) x flags)
@@ -11156,10 +10686,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                x := v_1
                flags := v_2
                v.reset(OpARMRSCshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
-               v.AddArg(flags)
+               v.AddArg4(x, y, z, flags)
                return true
        }
        // match: (SBC x (SRL y z) flags)
@@ -11173,10 +10700,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                y := v_1.Args[0]
                flags := v_2
                v.reset(OpARMSBCshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
-               v.AddArg(flags)
+               v.AddArg4(x, y, z, flags)
                return true
        }
        // match: (SBC (SRL y z) x flags)
@@ -11190,10 +10714,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                x := v_1
                flags := v_2
                v.reset(OpARMRSCshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
-               v.AddArg(flags)
+               v.AddArg4(x, y, z, flags)
                return true
        }
        // match: (SBC x (SRA y z) flags)
@@ -11207,10 +10728,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                y := v_1.Args[0]
                flags := v_2
                v.reset(OpARMSBCshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
-               v.AddArg(flags)
+               v.AddArg4(x, y, z, flags)
                return true
        }
        // match: (SBC (SRA y z) x flags)
@@ -11224,10 +10742,7 @@ func rewriteValueARM_OpARMSBC(v *Value) bool {
                x := v_1
                flags := v_2
                v.reset(OpARMRSCshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
-               v.AddArg(flags)
+               v.AddArg4(x, y, z, flags)
                return true
        }
        return false
@@ -11247,8 +10762,7 @@ func rewriteValueARM_OpARMSBCconst(v *Value) bool {
                flags := v_1
                v.reset(OpARMSBCconst)
                v.AuxInt = int64(int32(c - d))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        // match: (SBCconst [c] (SUBconst [d] x) flags)
@@ -11263,8 +10777,7 @@ func rewriteValueARM_OpARMSBCconst(v *Value) bool {
                flags := v_1
                v.reset(OpARMSBCconst)
                v.AuxInt = int64(int32(c + d))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -11289,8 +10802,7 @@ func rewriteValueARM_OpARMSBCshiftLL(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSLLconst, x.Type)
                v0.AuxInt = d
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (SBCshiftLL x (MOVWconst [c]) [d] flags)
@@ -11305,8 +10817,7 @@ func rewriteValueARM_OpARMSBCshiftLL(v *Value) bool {
                flags := v_2
                v.reset(OpARMSBCconst)
                v.AuxInt = int64(int32(uint32(c) << uint64(d)))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -11330,10 +10841,8 @@ func rewriteValueARM_OpARMSBCshiftLLreg(v *Value) bool {
                v.reset(OpARMRSCconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (SBCshiftLLreg x y (MOVWconst [c]) flags)
@@ -11348,9 +10857,7 @@ func rewriteValueARM_OpARMSBCshiftLLreg(v *Value) bool {
                flags := v_3
                v.reset(OpARMSBCshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        return false
@@ -11375,8 +10882,7 @@ func rewriteValueARM_OpARMSBCshiftRA(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRAconst, x.Type)
                v0.AuxInt = d
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (SBCshiftRA x (MOVWconst [c]) [d] flags)
@@ -11391,8 +10897,7 @@ func rewriteValueARM_OpARMSBCshiftRA(v *Value) bool {
                flags := v_2
                v.reset(OpARMSBCconst)
                v.AuxInt = int64(int32(c) >> uint64(d))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -11416,10 +10921,8 @@ func rewriteValueARM_OpARMSBCshiftRAreg(v *Value) bool {
                v.reset(OpARMRSCconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (SBCshiftRAreg x y (MOVWconst [c]) flags)
@@ -11434,9 +10937,7 @@ func rewriteValueARM_OpARMSBCshiftRAreg(v *Value) bool {
                flags := v_3
                v.reset(OpARMSBCshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        return false
@@ -11461,8 +10962,7 @@ func rewriteValueARM_OpARMSBCshiftRL(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRLconst, x.Type)
                v0.AuxInt = d
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (SBCshiftRL x (MOVWconst [c]) [d] flags)
@@ -11477,8 +10977,7 @@ func rewriteValueARM_OpARMSBCshiftRL(v *Value) bool {
                flags := v_2
                v.reset(OpARMSBCconst)
                v.AuxInt = int64(int32(uint32(c) >> uint64(d)))
-               v.AddArg(x)
-               v.AddArg(flags)
+               v.AddArg2(x, flags)
                return true
        }
        return false
@@ -11502,10 +11001,8 @@ func rewriteValueARM_OpARMSBCshiftRLreg(v *Value) bool {
                v.reset(OpARMRSCconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(flags)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, flags)
                return true
        }
        // match: (SBCshiftRLreg x y (MOVWconst [c]) flags)
@@ -11520,9 +11017,7 @@ func rewriteValueARM_OpARMSBCshiftRLreg(v *Value) bool {
                flags := v_3
                v.reset(OpARMSBCshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flags)
+               v.AddArg3(x, y, flags)
                return true
        }
        return false
@@ -11604,8 +11099,7 @@ func rewriteValueARM_OpARMSRAcond(v *Value) bool {
                        break
                }
                v.reset(OpARMSRA)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAcond x _ (FlagLT_UGT))
@@ -11629,8 +11123,7 @@ func rewriteValueARM_OpARMSRAcond(v *Value) bool {
                        break
                }
                v.reset(OpARMSRA)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAcond x _ (FlagGT_UGT))
@@ -11773,8 +11266,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMSUBshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUB (SLLconst [c] y) x)
@@ -11788,8 +11280,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                x := v_1
                v.reset(OpARMRSBshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUB x (SRLconst [c] y))
@@ -11803,8 +11294,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMSUBshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUB (SRLconst [c] y) x)
@@ -11818,8 +11308,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                x := v_1
                v.reset(OpARMRSBshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUB x (SRAconst [c] y))
@@ -11833,8 +11322,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMSUBshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUB (SRAconst [c] y) x)
@@ -11848,8 +11336,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                x := v_1
                v.reset(OpARMRSBshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUB x (SLL y z))
@@ -11862,9 +11349,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMSUBshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUB (SLL y z) x)
@@ -11877,9 +11362,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpARMRSBshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUB x (SRL y z))
@@ -11892,9 +11375,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMSUBshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUB (SRL y z) x)
@@ -11907,9 +11388,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpARMRSBshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUB x (SRA y z))
@@ -11922,9 +11401,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMSUBshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUB (SRA y z) x)
@@ -11937,9 +11414,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpARMRSBshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUB x x)
@@ -11967,9 +11442,7 @@ func rewriteValueARM_OpARMSUB(v *Value) bool {
                        break
                }
                v.reset(OpARMMULS)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(a)
+               v.AddArg3(x, y, a)
                return true
        }
        return false
@@ -11991,9 +11464,7 @@ func rewriteValueARM_OpARMSUBD(v *Value) bool {
                        break
                }
                v.reset(OpARMMULSD)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (SUBD a (NMULD x y))
@@ -12010,9 +11481,7 @@ func rewriteValueARM_OpARMSUBD(v *Value) bool {
                        break
                }
                v.reset(OpARMMULAD)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        return false
@@ -12034,9 +11503,7 @@ func rewriteValueARM_OpARMSUBF(v *Value) bool {
                        break
                }
                v.reset(OpARMMULSF)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (SUBF a (NMULF x y))
@@ -12051,11 +11518,9 @@ func rewriteValueARM_OpARMSUBF(v *Value) bool {
                x := v_1.Args[0]
                if !(a.Uses == 1 && objabi.GOARM >= 6) {
                        break
-               }
-               v.reset(OpARMMULAF)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               }
+               v.reset(OpARMMULAF)
+               v.AddArg3(a, x, y)
                return true
        }
        return false
@@ -12087,8 +11552,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMSUBSshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUBS (SLLconst [c] y) x)
@@ -12102,8 +11566,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                x := v_1
                v.reset(OpARMRSBSshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUBS x (SRLconst [c] y))
@@ -12117,8 +11580,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMSUBSshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUBS (SRLconst [c] y) x)
@@ -12132,8 +11594,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                x := v_1
                v.reset(OpARMRSBSshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUBS x (SRAconst [c] y))
@@ -12147,8 +11608,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARMSUBSshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUBS (SRAconst [c] y) x)
@@ -12162,8 +11622,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                x := v_1
                v.reset(OpARMRSBSshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUBS x (SLL y z))
@@ -12176,9 +11635,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMSUBSshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUBS (SLL y z) x)
@@ -12191,9 +11648,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpARMRSBSshiftLLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUBS x (SRL y z))
@@ -12206,9 +11661,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMSUBSshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUBS (SRL y z) x)
@@ -12221,9 +11674,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpARMRSBSshiftRLreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUBS x (SRA y z))
@@ -12236,9 +11687,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                z := v_1.Args[1]
                y := v_1.Args[0]
                v.reset(OpARMSUBSshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        // match: (SUBS (SRA y z) x)
@@ -12251,9 +11700,7 @@ func rewriteValueARM_OpARMSUBS(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpARMRSBSshiftRAreg)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        return false
@@ -12312,8 +11759,7 @@ func rewriteValueARM_OpARMSUBSshiftLLreg(v *Value) bool {
                v.reset(OpARMRSBSconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -12328,8 +11774,7 @@ func rewriteValueARM_OpARMSUBSshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMSUBSshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -12388,8 +11833,7 @@ func rewriteValueARM_OpARMSUBSshiftRAreg(v *Value) bool {
                v.reset(OpARMRSBSconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -12404,8 +11848,7 @@ func rewriteValueARM_OpARMSUBSshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMSUBSshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -12464,8 +11907,7 @@ func rewriteValueARM_OpARMSUBSshiftRLreg(v *Value) bool {
                v.reset(OpARMRSBSconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -12480,8 +11922,7 @@ func rewriteValueARM_OpARMSUBSshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMSUBSshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -12671,8 +12112,7 @@ func rewriteValueARM_OpARMSUBshiftLLreg(v *Value) bool {
                v.reset(OpARMRSBconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -12687,8 +12127,7 @@ func rewriteValueARM_OpARMSUBshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMSUBshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -12764,8 +12203,7 @@ func rewriteValueARM_OpARMSUBshiftRAreg(v *Value) bool {
                v.reset(OpARMRSBconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -12780,8 +12218,7 @@ func rewriteValueARM_OpARMSUBshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMSUBshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -12857,8 +12294,7 @@ func rewriteValueARM_OpARMSUBshiftRLreg(v *Value) bool {
                v.reset(OpARMRSBconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -12873,8 +12309,7 @@ func rewriteValueARM_OpARMSUBshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMSUBshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -12910,8 +12345,7 @@ func rewriteValueARM_OpARMTEQ(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMTEQshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -12928,8 +12362,7 @@ func rewriteValueARM_OpARMTEQ(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMTEQshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -12946,8 +12379,7 @@ func rewriteValueARM_OpARMTEQ(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMTEQshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -12963,9 +12395,7 @@ func rewriteValueARM_OpARMTEQ(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMTEQshiftLLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -12981,9 +12411,7 @@ func rewriteValueARM_OpARMTEQ(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMTEQshiftRLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -12999,9 +12427,7 @@ func rewriteValueARM_OpARMTEQ(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMTEQshiftRAreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -13111,8 +12537,7 @@ func rewriteValueARM_OpARMTEQshiftLLreg(v *Value) bool {
                v.reset(OpARMTEQconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13127,8 +12552,7 @@ func rewriteValueARM_OpARMTEQshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMTEQshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -13187,8 +12611,7 @@ func rewriteValueARM_OpARMTEQshiftRAreg(v *Value) bool {
                v.reset(OpARMTEQconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13203,8 +12626,7 @@ func rewriteValueARM_OpARMTEQshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMTEQshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -13263,8 +12685,7 @@ func rewriteValueARM_OpARMTEQshiftRLreg(v *Value) bool {
                v.reset(OpARMTEQconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13279,8 +12700,7 @@ func rewriteValueARM_OpARMTEQshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMTEQshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -13316,8 +12736,7 @@ func rewriteValueARM_OpARMTST(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMTSTshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -13334,8 +12753,7 @@ func rewriteValueARM_OpARMTST(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMTSTshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -13352,8 +12770,7 @@ func rewriteValueARM_OpARMTST(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMTSTshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -13369,9 +12786,7 @@ func rewriteValueARM_OpARMTST(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMTSTshiftLLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -13387,9 +12802,7 @@ func rewriteValueARM_OpARMTST(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMTSTshiftRLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -13405,9 +12818,7 @@ func rewriteValueARM_OpARMTST(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMTSTshiftRAreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -13517,8 +12928,7 @@ func rewriteValueARM_OpARMTSTshiftLLreg(v *Value) bool {
                v.reset(OpARMTSTconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13533,8 +12943,7 @@ func rewriteValueARM_OpARMTSTshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMTSTshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -13593,8 +13002,7 @@ func rewriteValueARM_OpARMTSTshiftRAreg(v *Value) bool {
                v.reset(OpARMTSTconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13609,8 +13017,7 @@ func rewriteValueARM_OpARMTSTshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMTSTshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -13669,8 +13076,7 @@ func rewriteValueARM_OpARMTSTshiftRLreg(v *Value) bool {
                v.reset(OpARMTSTconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -13685,8 +13091,7 @@ func rewriteValueARM_OpARMTSTshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMTSTshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -13722,8 +13127,7 @@ func rewriteValueARM_OpARMXOR(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMXORshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -13740,8 +13144,7 @@ func rewriteValueARM_OpARMXOR(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMXORshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -13758,8 +13161,7 @@ func rewriteValueARM_OpARMXOR(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMXORshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -13776,8 +13178,7 @@ func rewriteValueARM_OpARMXOR(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpARMXORshiftRR)
                        v.AuxInt = c
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -13793,9 +13194,7 @@ func rewriteValueARM_OpARMXOR(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMXORshiftLLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -13811,9 +13210,7 @@ func rewriteValueARM_OpARMXOR(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMXORshiftRLreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -13829,9 +13226,7 @@ func rewriteValueARM_OpARMXOR(v *Value) bool {
                        z := v_1.Args[1]
                        y := v_1.Args[0]
                        v.reset(OpARMXORshiftRAreg)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -14012,8 +13407,7 @@ func rewriteValueARM_OpARMXORshiftLLreg(v *Value) bool {
                v.reset(OpARMXORconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14028,8 +13422,7 @@ func rewriteValueARM_OpARMXORshiftLLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMXORshiftLL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14105,8 +13498,7 @@ func rewriteValueARM_OpARMXORshiftRAreg(v *Value) bool {
                v.reset(OpARMXORconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14121,8 +13513,7 @@ func rewriteValueARM_OpARMXORshiftRAreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMXORshiftRA)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14214,8 +13605,7 @@ func rewriteValueARM_OpARMXORshiftRLreg(v *Value) bool {
                v.reset(OpARMXORconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14230,8 +13620,7 @@ func rewriteValueARM_OpARMXORshiftRLreg(v *Value) bool {
                c := v_2.AuxInt
                v.reset(OpARMXORshiftRL)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -14287,11 +13676,9 @@ func rewriteValueARM_OpAvg32u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRLconst, t)
                v0.AuxInt = 1
                v1 := b.NewValue0(v.Pos, OpARMSUB, t)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -14330,18 +13717,16 @@ func rewriteValueARM_OpBswap32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpARMBICconst, t)
                v1.AuxInt = 0xff0000
                v2 := b.NewValue0(v.Pos, OpARMXOR, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpARMSRRconst, t)
                v3.AuxInt = 16
                v3.AddArg(x)
-               v2.AddArg(v3)
+               v2.AddArg2(x, v3)
                v1.AddArg(v2)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpARMSRRconst, t)
                v4.AuxInt = 8
                v4.AddArg(x)
-               v.AddArg(v4)
+               v.AddArg2(v0, v4)
                return true
        }
        // match: (Bswap32 x)
@@ -14389,14 +13774,13 @@ func rewriteValueARM_OpCtz16(v *Value) bool {
                v3 := b.NewValue0(v.Pos, OpARMORconst, typ.UInt32)
                v3.AuxInt = 0x10000
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARMRSBconst, typ.UInt32)
                v4.AuxInt = 0
                v5 := b.NewValue0(v.Pos, OpARMORconst, typ.UInt32)
                v5.AuxInt = 0x10000
                v5.AddArg(x)
                v4.AddArg(v5)
-               v2.AddArg(v4)
+               v2.AddArg2(v3, v4)
                v1.AddArg(v2)
                v0.AddArg(v1)
                v.AddArg(v0)
@@ -14441,11 +13825,10 @@ func rewriteValueARM_OpCtz32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpARMSUBconst, t)
                v1.AuxInt = 1
                v2 := b.NewValue0(v.Pos, OpARMAND, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpARMRSBconst, t)
                v3.AuxInt = 0
                v3.AddArg(x)
-               v2.AddArg(v3)
+               v2.AddArg2(x, v3)
                v1.AddArg(v2)
                v0.AddArg(v1)
                v.AddArg(v0)
@@ -14491,14 +13874,13 @@ func rewriteValueARM_OpCtz8(v *Value) bool {
                v3 := b.NewValue0(v.Pos, OpARMORconst, typ.UInt32)
                v3.AuxInt = 0x100
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARMRSBconst, typ.UInt32)
                v4.AuxInt = 0
                v5 := b.NewValue0(v.Pos, OpARMORconst, typ.UInt32)
                v5.AuxInt = 0x100
                v5.AddArg(x)
                v4.AddArg(v5)
-               v2.AddArg(v4)
+               v2.AddArg2(v3, v4)
                v1.AddArg(v2)
                v0.AddArg(v1)
                v.AddArg(v0)
@@ -14538,10 +13920,9 @@ func rewriteValueARM_OpDiv16(v *Value) bool {
                v.reset(OpDiv32)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -14558,10 +13939,9 @@ func rewriteValueARM_OpDiv16u(v *Value) bool {
                v.reset(OpDiv32u)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -14581,41 +13961,32 @@ func rewriteValueARM_OpDiv32(v *Value) bool {
                v2 := b.NewValue0(v.Pos, OpARMCALLudiv, types.NewTuple(typ.UInt32, typ.UInt32))
                v3 := b.NewValue0(v.Pos, OpARMSUB, typ.UInt32)
                v4 := b.NewValue0(v.Pos, OpARMXOR, typ.UInt32)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v5.AddArg(x)
-               v4.AddArg(v5)
-               v3.AddArg(v4)
+               v4.AddArg2(x, v5)
                v6 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v6.AddArg(x)
-               v3.AddArg(v6)
-               v2.AddArg(v3)
+               v3.AddArg2(v4, v6)
                v7 := b.NewValue0(v.Pos, OpARMSUB, typ.UInt32)
                v8 := b.NewValue0(v.Pos, OpARMXOR, typ.UInt32)
-               v8.AddArg(y)
                v9 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v9.AddArg(y)
-               v8.AddArg(v9)
-               v7.AddArg(v8)
+               v8.AddArg2(y, v9)
                v10 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v10.AddArg(y)
-               v7.AddArg(v10)
-               v2.AddArg(v7)
+               v7.AddArg2(v8, v10)
+               v2.AddArg2(v3, v7)
                v1.AddArg(v2)
-               v0.AddArg(v1)
                v11 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v12 := b.NewValue0(v.Pos, OpARMXOR, typ.UInt32)
-               v12.AddArg(x)
-               v12.AddArg(y)
+               v12.AddArg2(x, y)
                v11.AddArg(v12)
-               v0.AddArg(v11)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v11)
                v13 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v14 := b.NewValue0(v.Pos, OpARMXOR, typ.UInt32)
-               v14.AddArg(x)
-               v14.AddArg(y)
+               v14.AddArg2(x, y)
                v13.AddArg(v14)
-               v.AddArg(v13)
+               v.AddArg2(v0, v13)
                return true
        }
 }
@@ -14632,8 +14003,7 @@ func rewriteValueARM_OpDiv32u(v *Value) bool {
                v.reset(OpSelect0)
                v.Type = typ.UInt32
                v0 := b.NewValue0(v.Pos, OpARMCALLudiv, types.NewTuple(typ.UInt32, typ.UInt32))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14651,10 +14021,9 @@ func rewriteValueARM_OpDiv8(v *Value) bool {
                v.reset(OpDiv32)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -14671,10 +14040,9 @@ func rewriteValueARM_OpDiv8u(v *Value) bool {
                v.reset(OpDiv32u)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -14692,10 +14060,9 @@ func rewriteValueARM_OpEq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -14711,8 +14078,7 @@ func rewriteValueARM_OpEq32(v *Value) bool {
                y := v_1
                v.reset(OpARMEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14728,8 +14094,7 @@ func rewriteValueARM_OpEq32F(v *Value) bool {
                y := v_1
                v.reset(OpARMEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMPF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14745,8 +14110,7 @@ func rewriteValueARM_OpEq64F(v *Value) bool {
                y := v_1
                v.reset(OpARMEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMPD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14765,10 +14129,9 @@ func rewriteValueARM_OpEq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -14786,8 +14149,7 @@ func rewriteValueARM_OpEqB(v *Value) bool {
                v.reset(OpARMXORconst)
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpARMXOR, typ.Bool)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14803,8 +14165,7 @@ func rewriteValueARM_OpEqPtr(v *Value) bool {
                y := v_1
                v.reset(OpARMEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14820,9 +14181,7 @@ func rewriteValueARM_OpFMA(v *Value) bool {
                y := v_1
                z := v_2
                v.reset(OpARMFMULAD)
-               v.AddArg(z)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(z, x, y)
                return true
        }
 }
@@ -14837,8 +14196,7 @@ func rewriteValueARM_OpGeq32F(v *Value) bool {
                y := v_1
                v.reset(OpARMGreaterEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMPF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14854,8 +14212,7 @@ func rewriteValueARM_OpGeq64F(v *Value) bool {
                y := v_1
                v.reset(OpARMGreaterEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMPD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14871,8 +14228,7 @@ func rewriteValueARM_OpGreater32F(v *Value) bool {
                y := v_1
                v.reset(OpARMGreaterThan)
                v0 := b.NewValue0(v.Pos, OpARMCMPF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14888,8 +14244,7 @@ func rewriteValueARM_OpGreater64F(v *Value) bool {
                y := v_1
                v.reset(OpARMGreaterThan)
                v0 := b.NewValue0(v.Pos, OpARMCMPD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14905,8 +14260,7 @@ func rewriteValueARM_OpIsInBounds(v *Value) bool {
                len := v_1
                v.reset(OpARMLessThanU)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -14937,8 +14291,7 @@ func rewriteValueARM_OpIsSliceInBounds(v *Value) bool {
                len := v_1
                v.reset(OpARMLessEqualU)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -14957,10 +14310,9 @@ func rewriteValueARM_OpLeq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -14979,10 +14331,9 @@ func rewriteValueARM_OpLeq16U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -14998,8 +14349,7 @@ func rewriteValueARM_OpLeq32(v *Value) bool {
                y := v_1
                v.reset(OpARMLessEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15015,8 +14365,7 @@ func rewriteValueARM_OpLeq32F(v *Value) bool {
                y := v_1
                v.reset(OpARMGreaterEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMPF, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -15032,8 +14381,7 @@ func rewriteValueARM_OpLeq32U(v *Value) bool {
                y := v_1
                v.reset(OpARMLessEqualU)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15049,8 +14397,7 @@ func rewriteValueARM_OpLeq64F(v *Value) bool {
                y := v_1
                v.reset(OpARMGreaterEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMPD, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -15069,10 +14416,9 @@ func rewriteValueARM_OpLeq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -15091,10 +14437,9 @@ func rewriteValueARM_OpLeq8U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -15113,10 +14458,9 @@ func rewriteValueARM_OpLess16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -15135,10 +14479,9 @@ func rewriteValueARM_OpLess16U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -15154,8 +14497,7 @@ func rewriteValueARM_OpLess32(v *Value) bool {
                y := v_1
                v.reset(OpARMLessThan)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15171,8 +14513,7 @@ func rewriteValueARM_OpLess32F(v *Value) bool {
                y := v_1
                v.reset(OpARMGreaterThan)
                v0 := b.NewValue0(v.Pos, OpARMCMPF, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -15188,8 +14529,7 @@ func rewriteValueARM_OpLess32U(v *Value) bool {
                y := v_1
                v.reset(OpARMLessThanU)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15205,8 +14545,7 @@ func rewriteValueARM_OpLess64F(v *Value) bool {
                y := v_1
                v.reset(OpARMGreaterThan)
                v0 := b.NewValue0(v.Pos, OpARMCMPD, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -15225,10 +14564,9 @@ func rewriteValueARM_OpLess8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -15247,10 +14585,9 @@ func rewriteValueARM_OpLess8U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -15269,8 +14606,7 @@ func rewriteValueARM_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVBUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -15284,8 +14620,7 @@ func rewriteValueARM_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVBload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -15299,8 +14634,7 @@ func rewriteValueARM_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVBUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -15314,8 +14648,7 @@ func rewriteValueARM_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVHload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -15329,8 +14662,7 @@ func rewriteValueARM_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVHUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -15344,8 +14676,7 @@ func rewriteValueARM_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVWload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -15359,8 +14690,7 @@ func rewriteValueARM_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVFload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -15374,8 +14704,7 @@ func rewriteValueARM_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -15406,17 +14735,15 @@ func rewriteValueARM_OpLsh16x16(v *Value) bool {
                v.reset(OpARMCMOVWHSconst)
                v.AuxInt = 0
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v2.AuxInt = 256
                v3 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -15432,13 +14759,11 @@ func rewriteValueARM_OpLsh16x32(v *Value) bool {
                v.reset(OpARMCMOVWHSconst)
                v.AuxInt = 0
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v1.AuxInt = 256
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15490,10 +14815,9 @@ func rewriteValueARM_OpLsh16x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARMSLL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -15510,17 +14834,15 @@ func rewriteValueARM_OpLsh32x16(v *Value) bool {
                v.reset(OpARMCMOVWHSconst)
                v.AuxInt = 0
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v2.AuxInt = 256
                v3 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -15536,13 +14858,11 @@ func rewriteValueARM_OpLsh32x32(v *Value) bool {
                v.reset(OpARMCMOVWHSconst)
                v.AuxInt = 0
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v1.AuxInt = 256
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15594,10 +14914,9 @@ func rewriteValueARM_OpLsh32x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARMSLL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -15614,17 +14933,15 @@ func rewriteValueARM_OpLsh8x16(v *Value) bool {
                v.reset(OpARMCMOVWHSconst)
                v.AuxInt = 0
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v2.AuxInt = 256
                v3 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -15640,13 +14957,11 @@ func rewriteValueARM_OpLsh8x32(v *Value) bool {
                v.reset(OpARMCMOVWHSconst)
                v.AuxInt = 0
                v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v1.AuxInt = 256
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15698,10 +15013,9 @@ func rewriteValueARM_OpLsh8x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARMSLL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -15718,10 +15032,9 @@ func rewriteValueARM_OpMod16(v *Value) bool {
                v.reset(OpMod32)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15738,10 +15051,9 @@ func rewriteValueARM_OpMod16u(v *Value) bool {
                v.reset(OpMod32u)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15761,35 +15073,28 @@ func rewriteValueARM_OpMod32(v *Value) bool {
                v2 := b.NewValue0(v.Pos, OpARMCALLudiv, types.NewTuple(typ.UInt32, typ.UInt32))
                v3 := b.NewValue0(v.Pos, OpARMSUB, typ.UInt32)
                v4 := b.NewValue0(v.Pos, OpARMXOR, typ.UInt32)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v5.AddArg(x)
-               v4.AddArg(v5)
-               v3.AddArg(v4)
+               v4.AddArg2(x, v5)
                v6 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v6.AddArg(x)
-               v3.AddArg(v6)
-               v2.AddArg(v3)
+               v3.AddArg2(v4, v6)
                v7 := b.NewValue0(v.Pos, OpARMSUB, typ.UInt32)
                v8 := b.NewValue0(v.Pos, OpARMXOR, typ.UInt32)
-               v8.AddArg(y)
                v9 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v9.AddArg(y)
-               v8.AddArg(v9)
-               v7.AddArg(v8)
+               v8.AddArg2(y, v9)
                v10 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v10.AddArg(y)
-               v7.AddArg(v10)
-               v2.AddArg(v7)
+               v7.AddArg2(v8, v10)
+               v2.AddArg2(v3, v7)
                v1.AddArg(v2)
-               v0.AddArg(v1)
                v11 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v11.AddArg(x)
-               v0.AddArg(v11)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v11)
                v12 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v12.AddArg(x)
-               v.AddArg(v12)
+               v.AddArg2(v0, v12)
                return true
        }
 }
@@ -15806,8 +15111,7 @@ func rewriteValueARM_OpMod32u(v *Value) bool {
                v.reset(OpSelect1)
                v.Type = typ.UInt32
                v0 := b.NewValue0(v.Pos, OpARMCALLudiv, types.NewTuple(typ.UInt32, typ.UInt32))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15825,10 +15129,9 @@ func rewriteValueARM_OpMod8(v *Value) bool {
                v.reset(OpMod32)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15845,10 +15148,9 @@ func rewriteValueARM_OpMod8u(v *Value) bool {
                v.reset(OpMod32u)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15881,12 +15183,9 @@ func rewriteValueARM_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpARMMOVBstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARMMOVBUload, typ.UInt8)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] {t} dst src mem)
@@ -15904,12 +15203,9 @@ func rewriteValueARM_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVHstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARMMOVHUload, typ.UInt16)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] dst src mem)
@@ -15923,20 +15219,14 @@ func rewriteValueARM_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVBstore)
                v.AuxInt = 1
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARMMOVBUload, typ.UInt8)
                v0.AuxInt = 1
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARMMOVBUload, typ.UInt8)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [4] {t} dst src mem)
@@ -15954,12 +15244,9 @@ func rewriteValueARM_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVWstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARMMOVWload, typ.UInt32)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [4] {t} dst src mem)
@@ -15978,20 +15265,14 @@ func rewriteValueARM_OpMove(v *Value) bool {
                }
                v.reset(OpARMMOVHstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARMMOVHUload, typ.UInt16)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARMMOVHstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARMMOVHUload, typ.UInt16)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [4] dst src mem)
@@ -16005,38 +15286,26 @@ func rewriteValueARM_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVBstore)
                v.AuxInt = 3
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARMMOVBUload, typ.UInt8)
                v0.AuxInt = 3
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
                v1.AuxInt = 2
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARMMOVBUload, typ.UInt8)
                v2.AuxInt = 2
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
                v3.AuxInt = 1
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpARMMOVBUload, typ.UInt8)
                v4.AuxInt = 1
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
+               v4.AddArg2(src, mem)
                v5 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
-               v5.AddArg(dst)
                v6 := b.NewValue0(v.Pos, OpARMMOVBUload, typ.UInt8)
-               v6.AddArg(src)
-               v6.AddArg(mem)
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v6.AddArg2(src, mem)
+               v5.AddArg3(dst, v6, mem)
+               v3.AddArg3(dst, v4, v5)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [3] dst src mem)
@@ -16050,29 +15319,20 @@ func rewriteValueARM_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpARMMOVBstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARMMOVBUload, typ.UInt8)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
                v1.AuxInt = 1
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARMMOVBUload, typ.UInt8)
                v2.AuxInt = 1
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpARMMOVBUload, typ.UInt8)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] {t} dst src mem)
@@ -16089,9 +15349,7 @@ func rewriteValueARM_OpMove(v *Value) bool {
                }
                v.reset(OpARMDUFFCOPY)
                v.AuxInt = 8 * (128 - s/4)
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        // match: (Move [s] {t} dst src mem)
@@ -16108,13 +15366,10 @@ func rewriteValueARM_OpMove(v *Value) bool {
                }
                v.reset(OpARMLoweredMove)
                v.AuxInt = t.(*types.Type).Alignment()
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpARMADDconst, src.Type)
                v0.AuxInt = s - moveSize(t.(*types.Type).Alignment(), config)
                v0.AddArg(src)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(dst, src, v0, mem)
                return true
        }
        return false
@@ -16169,10 +15424,9 @@ func rewriteValueARM_OpNeq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -16188,8 +15442,7 @@ func rewriteValueARM_OpNeq32(v *Value) bool {
                y := v_1
                v.reset(OpARMNotEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -16205,8 +15458,7 @@ func rewriteValueARM_OpNeq32F(v *Value) bool {
                y := v_1
                v.reset(OpARMNotEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMPF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -16222,8 +15474,7 @@ func rewriteValueARM_OpNeq64F(v *Value) bool {
                y := v_1
                v.reset(OpARMNotEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMPD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -16242,10 +15493,9 @@ func rewriteValueARM_OpNeq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -16261,8 +15511,7 @@ func rewriteValueARM_OpNeqPtr(v *Value) bool {
                y := v_1
                v.reset(OpARMNotEqual)
                v0 := b.NewValue0(v.Pos, OpARMCMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -16322,9 +15571,7 @@ func rewriteValueARM_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpARMLoweredPanicBoundsA)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -16340,9 +15587,7 @@ func rewriteValueARM_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpARMLoweredPanicBoundsB)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -16358,9 +15603,7 @@ func rewriteValueARM_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpARMLoweredPanicBoundsC)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        return false
@@ -16384,10 +15627,7 @@ func rewriteValueARM_OpPanicExtend(v *Value) bool {
                }
                v.reset(OpARMLoweredPanicExtendA)
                v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg4(hi, lo, y, mem)
                return true
        }
        // match: (PanicExtend [kind] hi lo y mem)
@@ -16404,10 +15644,7 @@ func rewriteValueARM_OpPanicExtend(v *Value) bool {
                }
                v.reset(OpARMLoweredPanicExtendB)
                v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg4(hi, lo, y, mem)
                return true
        }
        // match: (PanicExtend [kind] hi lo y mem)
@@ -16424,10 +15661,7 @@ func rewriteValueARM_OpPanicExtend(v *Value) bool {
                }
                v.reset(OpARMLoweredPanicExtendC)
                v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg4(hi, lo, y, mem)
                return true
        }
        return false
@@ -16448,17 +15682,14 @@ func rewriteValueARM_OpRotateLeft16(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr16)
                v0 := b.NewValue0(v.Pos, OpLsh16x32, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v1.AuxInt = c & 15
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh16Ux32, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v3.AuxInt = -c & 15
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -16486,11 +15717,10 @@ func rewriteValueARM_OpRotateLeft32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARMSRR)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpARMRSBconst, y.Type)
                v0.AuxInt = 0
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -16510,17 +15740,14 @@ func rewriteValueARM_OpRotateLeft8(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr8)
                v0 := b.NewValue0(v.Pos, OpLsh8x32, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v1.AuxInt = c & 7
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh8Ux32, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v3.AuxInt = -c & 7
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -16540,17 +15767,15 @@ func rewriteValueARM_OpRsh16Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v3.AuxInt = 256
                v4 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -16569,13 +15794,11 @@ func rewriteValueARM_OpRsh16Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v2.AuxInt = 256
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -16634,10 +15857,9 @@ func rewriteValueARM_OpRsh16Ux8(v *Value) bool {
                v.reset(OpARMSRL)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -16654,16 +15876,14 @@ func rewriteValueARM_OpRsh16x16(v *Value) bool {
                v.reset(OpARMSRAcond)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v2.AuxInt = 256
                v3 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -16680,12 +15900,10 @@ func rewriteValueARM_OpRsh16x32(v *Value) bool {
                v.reset(OpARMSRAcond)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v1.AuxInt = 256
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg3(v0, y, v1)
                return true
        }
 }
@@ -16749,10 +15967,9 @@ func rewriteValueARM_OpRsh16x8(v *Value) bool {
                v.reset(OpARMSRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -16769,17 +15986,15 @@ func rewriteValueARM_OpRsh32Ux16(v *Value) bool {
                v.reset(OpARMCMOVWHSconst)
                v.AuxInt = 0
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v2.AuxInt = 256
                v3 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -16795,13 +16010,11 @@ func rewriteValueARM_OpRsh32Ux32(v *Value) bool {
                v.reset(OpARMCMOVWHSconst)
                v.AuxInt = 0
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v1.AuxInt = 256
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -16853,10 +16066,9 @@ func rewriteValueARM_OpRsh32Ux8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARMSRL)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -16871,16 +16083,14 @@ func rewriteValueARM_OpRsh32x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARMSRAcond)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v1.AuxInt = 256
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg3(x, v0, v1)
                return true
        }
 }
@@ -16894,12 +16104,10 @@ func rewriteValueARM_OpRsh32x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARMSRAcond)
-               v.AddArg(x)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v0.AuxInt = 256
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg3(x, y, v0)
                return true
        }
 }
@@ -16953,10 +16161,9 @@ func rewriteValueARM_OpRsh32x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARMSRA)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -16975,17 +16182,15 @@ func rewriteValueARM_OpRsh8Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v3.AuxInt = 256
                v4 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -17004,13 +16209,11 @@ func rewriteValueARM_OpRsh8Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v2.AuxInt = 256
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -17069,10 +16272,9 @@ func rewriteValueARM_OpRsh8Ux8(v *Value) bool {
                v.reset(OpARMSRL)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -17089,16 +16291,14 @@ func rewriteValueARM_OpRsh8x16(v *Value) bool {
                v.reset(OpARMSRAcond)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v2.AuxInt = 256
                v3 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -17115,12 +16315,10 @@ func rewriteValueARM_OpRsh8x32(v *Value) bool {
                v.reset(OpARMSRAcond)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpARMCMPconst, types.TypeFlags)
                v1.AuxInt = 256
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg3(v0, y, v1)
                return true
        }
 }
@@ -17184,10 +16382,9 @@ func rewriteValueARM_OpRsh8x8(v *Value) bool {
                v.reset(OpARMSRA)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -17362,9 +16559,7 @@ func rewriteValueARM_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVBstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -17379,9 +16574,7 @@ func rewriteValueARM_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVHstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -17396,9 +16589,7 @@ func rewriteValueARM_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVWstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -17413,9 +16604,7 @@ func rewriteValueARM_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVFstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -17430,9 +16619,7 @@ func rewriteValueARM_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -17464,11 +16651,9 @@ func rewriteValueARM_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpARMMOVBstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [2] {t} ptr mem)
@@ -17485,11 +16670,9 @@ func rewriteValueARM_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVHstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [2] ptr mem)
@@ -17502,18 +16685,14 @@ func rewriteValueARM_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARMMOVBstore)
                v.AuxInt = 1
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [4] {t} ptr mem)
@@ -17530,11 +16709,9 @@ func rewriteValueARM_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpARMMOVWstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [4] {t} ptr mem)
@@ -17552,18 +16729,14 @@ func rewriteValueARM_OpZero(v *Value) bool {
                }
                v.reset(OpARMMOVHstore)
                v.AuxInt = 2
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARMMOVHstore, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [4] ptr mem)
@@ -17576,32 +16749,24 @@ func rewriteValueARM_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARMMOVBstore)
                v.AuxInt = 3
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
                v1.AuxInt = 2
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
                v3.AuxInt = 1
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v4.AuxInt = 0
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
                v5.AuxInt = 0
-               v5.AddArg(ptr)
                v6 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v6.AuxInt = 0
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg3(ptr, v6, mem)
+               v3.AddArg3(ptr, v4, v5)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [3] ptr mem)
@@ -17614,25 +16779,19 @@ func rewriteValueARM_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARMMOVBstore)
                v.AuxInt = 2
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
                v1.AuxInt = 1
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARMMOVBstore, types.TypeMem)
                v3.AuxInt = 0
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [s] {t} ptr mem)
@@ -17648,11 +16807,9 @@ func rewriteValueARM_OpZero(v *Value) bool {
                }
                v.reset(OpARMDUFFZERO)
                v.AuxInt = 4 * (128 - s/4)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [s] {t} ptr mem)
@@ -17668,15 +16825,12 @@ func rewriteValueARM_OpZero(v *Value) bool {
                }
                v.reset(OpARMLoweredZero)
                v.AuxInt = t.(*types.Type).Alignment()
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARMADDconst, ptr.Type)
                v0.AuxInt = s - moveSize(t.(*types.Type).Alignment(), config)
                v0.AddArg(ptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARMMOVWconst, typ.UInt32)
                v1.AuxInt = 0
-               v.AddArg(v1)
-               v.AddArg(mem)
+               v.AddArg4(ptr, v0, v1, mem)
                return true
        }
        return false
@@ -17693,8 +16847,7 @@ func rewriteValueARM_OpZeromask(v *Value) bool {
                v.AuxInt = 31
                v0 := b.NewValue0(v.Pos, OpARMRSBshiftRL, typ.Int32)
                v0.AuxInt = 1
-               v0.AddArg(x)
-               v0.AddArg(x)
+               v0.AddArg2(x, x)
                v.AddArg(v0)
                return true
        }
@@ -17764,8 +16917,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -17789,11 +16941,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -17842,8 +16992,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -17868,8 +17017,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -17894,8 +17042,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -17919,9 +17066,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -17945,9 +17090,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -17971,9 +17114,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18000,8 +17141,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMEQ)
                                v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -18027,11 +17167,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -18080,8 +17218,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18106,8 +17243,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18132,8 +17268,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18157,9 +17292,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18183,9 +17316,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18209,9 +17340,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18238,8 +17367,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMEQ)
                                v0 := b.NewValue0(v_0.Pos, OpARMTST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -18290,8 +17418,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18316,8 +17443,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18342,8 +17468,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18367,9 +17492,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18393,9 +17516,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18419,9 +17540,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18448,8 +17567,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMEQ)
                                v0 := b.NewValue0(v_0.Pos, OpARMTEQ, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -18500,8 +17618,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18526,8 +17643,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18552,8 +17668,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18577,9 +17692,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18603,9 +17716,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18629,9 +17740,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMEQ)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18696,8 +17805,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18721,11 +17829,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -18774,8 +17880,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18800,8 +17905,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18826,8 +17930,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -18851,9 +17954,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18877,9 +17978,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18903,9 +18002,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -18932,8 +18029,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMGE)
                                v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -18959,11 +18055,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -19012,8 +18106,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19038,8 +18131,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19064,8 +18156,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19089,9 +18180,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19115,9 +18204,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19141,9 +18228,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19170,8 +18255,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMGE)
                                v0 := b.NewValue0(v_0.Pos, OpARMTST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -19222,8 +18306,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19248,8 +18331,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19274,8 +18356,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19299,9 +18380,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19325,9 +18404,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19351,9 +18428,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19380,8 +18455,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMGE)
                                v0 := b.NewValue0(v_0.Pos, OpARMTEQ, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -19432,8 +18506,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19458,8 +18531,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19484,8 +18556,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19509,9 +18580,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19535,9 +18604,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19561,9 +18628,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19629,8 +18694,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19654,11 +18718,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -19707,8 +18769,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19733,8 +18794,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19759,8 +18819,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19784,9 +18843,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19810,9 +18867,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19836,9 +18891,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -19865,8 +18918,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMGT)
                                v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -19917,8 +18969,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19943,8 +18994,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19969,8 +19019,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -19994,9 +19043,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20020,9 +19067,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20046,9 +19091,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20075,8 +19118,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMGT)
                                v0 := b.NewValue0(v_0.Pos, OpARMTST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -20102,11 +19144,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -20155,8 +19195,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -20181,8 +19220,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -20207,8 +19245,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -20232,9 +19269,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20258,9 +19293,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20284,9 +19317,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20313,8 +19344,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMGT)
                                v0 := b.NewValue0(v_0.Pos, OpARMTEQ, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -20365,8 +19395,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -20391,8 +19420,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -20417,8 +19445,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -20442,9 +19469,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20468,9 +19493,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20494,9 +19517,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMGT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20663,8 +19684,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -20688,11 +19708,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -20741,8 +19759,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -20767,8 +19784,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -20793,8 +19809,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -20818,9 +19833,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20844,9 +19857,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20870,9 +19881,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -20899,8 +19908,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMLE)
                                v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -20926,11 +19934,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -20979,8 +19985,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21005,8 +20010,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21031,8 +20035,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21056,9 +20059,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21082,9 +20083,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21108,9 +20107,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21137,8 +20134,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMLE)
                                v0 := b.NewValue0(v_0.Pos, OpARMTST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -21189,8 +20185,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21215,8 +20210,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21241,8 +20235,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21266,9 +20259,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21292,9 +20283,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21318,9 +20307,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21347,8 +20334,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMLE)
                                v0 := b.NewValue0(v_0.Pos, OpARMTEQ, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -21399,8 +20385,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21425,8 +20410,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21451,8 +20435,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21476,9 +20459,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21502,9 +20483,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21528,9 +20507,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21596,8 +20573,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21621,11 +20597,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -21674,8 +20648,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21700,8 +20673,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21726,8 +20698,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21751,9 +20722,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21777,9 +20746,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21803,9 +20770,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -21832,8 +20797,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMLT)
                                v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -21859,11 +20823,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -21912,8 +20874,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21938,8 +20899,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21964,8 +20924,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -21989,9 +20948,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22015,9 +20972,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22041,9 +20996,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22070,8 +21023,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMLT)
                                v0 := b.NewValue0(v_0.Pos, OpARMTST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -22122,8 +21074,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -22148,8 +21099,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -22174,8 +21124,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -22199,9 +21148,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22225,9 +21172,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22251,9 +21196,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22280,8 +21223,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMLT)
                                v0 := b.NewValue0(v_0.Pos, OpARMTEQ, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -22332,8 +21274,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -22358,8 +21299,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -22384,8 +21324,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -22409,9 +21348,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22435,9 +21372,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22461,9 +21396,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMLT)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22687,8 +21620,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -22712,11 +21644,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -22765,8 +21695,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -22791,8 +21720,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -22817,8 +21745,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -22842,9 +21769,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22868,9 +21793,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22894,9 +21817,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMPshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -22923,8 +21844,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMNE)
                                v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -22950,11 +21870,9 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARMMUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -23003,8 +21921,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -23029,8 +21946,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -23055,8 +21971,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -23080,9 +21995,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -23106,9 +22019,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -23132,9 +22043,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMCMNshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -23161,8 +22070,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMNE)
                                v0 := b.NewValue0(v_0.Pos, OpARMTST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -23213,8 +22121,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -23239,8 +22146,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -23265,8 +22171,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -23290,9 +22195,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -23316,9 +22219,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -23342,9 +22243,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTSTshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -23371,8 +22270,7 @@ func rewriteBlockARM(b *Block) bool {
                                }
                                b.Reset(BlockARMNE)
                                v0 := b.NewValue0(v_0.Pos, OpARMTEQ, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -23423,8 +22321,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -23449,8 +22346,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRL, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -23475,8 +22371,7 @@ func rewriteBlockARM(b *Block) bool {
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRA, types.TypeFlags)
                        v0.AuxInt = c
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -23500,9 +22395,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftLLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -23526,9 +22419,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRLreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
@@ -23552,9 +22443,7 @@ func rewriteBlockARM(b *Block) bool {
                        }
                        b.Reset(BlockARMNE)
                        v0 := b.NewValue0(v_0.Pos, OpARMTEQshiftRAreg, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
-                       v0.AddArg(z)
+                       v0.AddArg3(x, y, z)
                        b.AddControl(v0)
                        return true
                }
index 51051b93b737bfd69e0ad9ab839be9ddcfd3b2c9..dd3a8b922b907a9bf97e5098e29cfd8f10eea426 100644 (file)
@@ -1094,9 +1094,7 @@ func rewriteValueARM64_OpARM64ADCSflags(v *Value) bool {
                }
                c := v_2_0_0.Args[0]
                v.reset(OpARM64ADCSflags)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(c)
+               v.AddArg3(x, y, c)
                return true
        }
        // match: (ADCSflags x y (Select1 <types.TypeFlags> (ADDSconstflags [-1] (MOVDconst [0]))))
@@ -1116,8 +1114,7 @@ func rewriteValueARM64_OpARM64ADCSflags(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADDSflags)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -1159,9 +1156,7 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MADD)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -1182,9 +1177,7 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MSUB)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -1205,9 +1198,7 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MADDW)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -1228,9 +1219,7 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MSUBW)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -1245,8 +1234,7 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpARM64SUB)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1268,8 +1256,7 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                        }
                        v.reset(OpARM64ADDshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -1291,8 +1278,7 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                        }
                        v.reset(OpARM64ADDshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -1314,8 +1300,7 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                        }
                        v.reset(OpARM64ADDshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -1383,10 +1368,9 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64ROR)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpARM64NEG, t)
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -1454,8 +1438,7 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64ROR)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1524,10 +1507,9 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64RORW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpARM64NEG, t)
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -1599,8 +1581,7 @@ func rewriteValueARM64_OpARM64ADD(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64RORW)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1775,8 +1756,7 @@ func rewriteValueARM64_OpARM64ADDshiftLL(v *Value) bool {
                x2 := v_1
                v.reset(OpARM64EXTRconst)
                v.AuxInt = 64 - c
-               v.AddArg(x2)
-               v.AddArg(x)
+               v.AddArg2(x2, x)
                return true
        }
        // match: (ADDshiftLL <t> [c] (UBFX [bfc] x) x2)
@@ -1796,8 +1776,7 @@ func rewriteValueARM64_OpARM64ADDshiftLL(v *Value) bool {
                }
                v.reset(OpARM64EXTRWconst)
                v.AuxInt = 32 - c
-               v.AddArg(x2)
-               v.AddArg(x)
+               v.AddArg2(x2, x)
                return true
        }
        return false
@@ -1951,8 +1930,7 @@ func rewriteValueARM64_OpARM64AND(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpARM64BIC)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -1974,8 +1952,7 @@ func rewriteValueARM64_OpARM64AND(v *Value) bool {
                        }
                        v.reset(OpARM64ANDshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -1997,8 +1974,7 @@ func rewriteValueARM64_OpARM64AND(v *Value) bool {
                        }
                        v.reset(OpARM64ANDshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -2020,8 +1996,7 @@ func rewriteValueARM64_OpARM64AND(v *Value) bool {
                        }
                        v.reset(OpARM64ANDshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -2366,8 +2341,7 @@ func rewriteValueARM64_OpARM64BIC(v *Value) bool {
                }
                v.reset(OpARM64BICshiftLL)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (BIC x0 x1:(SRLconst [c] y))
@@ -2386,8 +2360,7 @@ func rewriteValueARM64_OpARM64BIC(v *Value) bool {
                }
                v.reset(OpARM64BICshiftRL)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (BIC x0 x1:(SRAconst [c] y))
@@ -2406,8 +2379,7 @@ func rewriteValueARM64_OpARM64BIC(v *Value) bool {
                }
                v.reset(OpARM64BICshiftRA)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        return false
@@ -2556,8 +2528,7 @@ func rewriteValueARM64_OpARM64CMN(v *Value) bool {
                        }
                        v.reset(OpARM64CMNshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -2579,8 +2550,7 @@ func rewriteValueARM64_OpARM64CMN(v *Value) bool {
                        }
                        v.reset(OpARM64CMNshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -2602,8 +2572,7 @@ func rewriteValueARM64_OpARM64CMN(v *Value) bool {
                        }
                        v.reset(OpARM64CMNshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -2943,8 +2912,7 @@ func rewriteValueARM64_OpARM64CMP(v *Value) bool {
                }
                v.reset(OpARM64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -2964,8 +2932,7 @@ func rewriteValueARM64_OpARM64CMP(v *Value) bool {
                }
                v.reset(OpARM64CMPshiftLL)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (CMP x0:(SLLconst [c] y) x1)
@@ -2985,8 +2952,7 @@ func rewriteValueARM64_OpARM64CMP(v *Value) bool {
                v.reset(OpARM64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpARM64CMPshiftLL, types.TypeFlags)
                v0.AuxInt = c
-               v0.AddArg(x1)
-               v0.AddArg(y)
+               v0.AddArg2(x1, y)
                v.AddArg(v0)
                return true
        }
@@ -3006,8 +2972,7 @@ func rewriteValueARM64_OpARM64CMP(v *Value) bool {
                }
                v.reset(OpARM64CMPshiftRL)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (CMP x0:(SRLconst [c] y) x1)
@@ -3027,8 +2992,7 @@ func rewriteValueARM64_OpARM64CMP(v *Value) bool {
                v.reset(OpARM64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpARM64CMPshiftRL, types.TypeFlags)
                v0.AuxInt = c
-               v0.AddArg(x1)
-               v0.AddArg(y)
+               v0.AddArg2(x1, y)
                v.AddArg(v0)
                return true
        }
@@ -3048,8 +3012,7 @@ func rewriteValueARM64_OpARM64CMP(v *Value) bool {
                }
                v.reset(OpARM64CMPshiftRA)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (CMP x0:(SRAconst [c] y) x1)
@@ -3069,8 +3032,7 @@ func rewriteValueARM64_OpARM64CMP(v *Value) bool {
                v.reset(OpARM64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpARM64CMPshiftRA, types.TypeFlags)
                v0.AuxInt = c
-               v0.AddArg(x1)
-               v0.AddArg(y)
+               v0.AddArg2(x1, y)
                v.AddArg(v0)
                return true
        }
@@ -3119,8 +3081,7 @@ func rewriteValueARM64_OpARM64CMPW(v *Value) bool {
                }
                v.reset(OpARM64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -3501,8 +3462,7 @@ func rewriteValueARM64_OpARM64CSEL(v *Value) bool {
                flag := v_2
                v.reset(OpARM64CSEL0)
                v.Aux = cc
-               v.AddArg(x)
-               v.AddArg(flag)
+               v.AddArg2(x, flag)
                return true
        }
        // match: (CSEL {cc} (MOVDconst [0]) y flag)
@@ -3516,8 +3476,7 @@ func rewriteValueARM64_OpARM64CSEL(v *Value) bool {
                flag := v_2
                v.reset(OpARM64CSEL0)
                v.Aux = arm64Negate(cc.(Op))
-               v.AddArg(y)
-               v.AddArg(flag)
+               v.AddArg2(y, flag)
                return true
        }
        // match: (CSEL {cc} x y (InvertFlags cmp))
@@ -3532,9 +3491,7 @@ func rewriteValueARM64_OpARM64CSEL(v *Value) bool {
                cmp := v_2.Args[0]
                v.reset(OpARM64CSEL)
                v.Aux = arm64Invert(cc.(Op))
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cmp)
+               v.AddArg3(x, y, cmp)
                return true
        }
        // match: (CSEL {cc} x _ flag)
@@ -3583,9 +3540,7 @@ func rewriteValueARM64_OpARM64CSEL(v *Value) bool {
                }
                v.reset(OpARM64CSEL)
                v.Aux = boolval.Op
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flagArg(boolval))
+               v.AddArg3(x, y, flagArg(boolval))
                return true
        }
        // match: (CSEL {cc} x y (CMPWconst [0] boolval))
@@ -3604,9 +3559,7 @@ func rewriteValueARM64_OpARM64CSEL(v *Value) bool {
                }
                v.reset(OpARM64CSEL)
                v.Aux = arm64Negate(boolval.Op)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flagArg(boolval))
+               v.AddArg3(x, y, flagArg(boolval))
                return true
        }
        return false
@@ -3625,8 +3578,7 @@ func rewriteValueARM64_OpARM64CSEL0(v *Value) bool {
                cmp := v_1.Args[0]
                v.reset(OpARM64CSEL0)
                v.Aux = arm64Invert(cc.(Op))
-               v.AddArg(x)
-               v.AddArg(cmp)
+               v.AddArg2(x, cmp)
                return true
        }
        // match: (CSEL0 {cc} x flag)
@@ -3672,8 +3624,7 @@ func rewriteValueARM64_OpARM64CSEL0(v *Value) bool {
                }
                v.reset(OpARM64CSEL0)
                v.Aux = boolval.Op
-               v.AddArg(x)
-               v.AddArg(flagArg(boolval))
+               v.AddArg2(x, flagArg(boolval))
                return true
        }
        // match: (CSEL0 {cc} x (CMPWconst [0] boolval))
@@ -3691,8 +3642,7 @@ func rewriteValueARM64_OpARM64CSEL0(v *Value) bool {
                }
                v.reset(OpARM64CSEL0)
                v.Aux = arm64Negate(boolval.Op)
-               v.AddArg(x)
-               v.AddArg(flagArg(boolval))
+               v.AddArg2(x, flagArg(boolval))
                return true
        }
        return false
@@ -3780,8 +3730,7 @@ func rewriteValueARM64_OpARM64EON(v *Value) bool {
                }
                v.reset(OpARM64EONshiftLL)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (EON x0 x1:(SRLconst [c] y))
@@ -3800,8 +3749,7 @@ func rewriteValueARM64_OpARM64EON(v *Value) bool {
                }
                v.reset(OpARM64EONshiftRL)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (EON x0 x1:(SRAconst [c] y))
@@ -3820,8 +3768,7 @@ func rewriteValueARM64_OpARM64EON(v *Value) bool {
                }
                v.reset(OpARM64EONshiftRA)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        return false
@@ -4013,9 +3960,7 @@ func rewriteValueARM64_OpARM64FADDD(v *Value) bool {
                        y := v_1.Args[1]
                        x := v_1.Args[0]
                        v.reset(OpARM64FMADDD)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -4031,9 +3976,7 @@ func rewriteValueARM64_OpARM64FADDD(v *Value) bool {
                        y := v_1.Args[1]
                        x := v_1.Args[0]
                        v.reset(OpARM64FMSUBD)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -4054,9 +3997,7 @@ func rewriteValueARM64_OpARM64FADDS(v *Value) bool {
                        y := v_1.Args[1]
                        x := v_1.Args[0]
                        v.reset(OpARM64FMADDS)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -4072,9 +4013,7 @@ func rewriteValueARM64_OpARM64FADDS(v *Value) bool {
                        y := v_1.Args[1]
                        x := v_1.Args[0]
                        v.reset(OpARM64FMSUBS)
-                       v.AddArg(a)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg3(a, x, y)
                        return true
                }
                break
@@ -4226,8 +4165,7 @@ func rewriteValueARM64_OpARM64FMOVDload(v *Value) bool {
                v.reset(OpARM64FMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (FMOVDload [off] {sym} (ADD ptr idx) mem)
@@ -4246,9 +4184,7 @@ func rewriteValueARM64_OpARM64FMOVDload(v *Value) bool {
                        break
                }
                v.reset(OpARM64FMOVDloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (FMOVDload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -4270,8 +4206,7 @@ func rewriteValueARM64_OpARM64FMOVDload(v *Value) bool {
                v.reset(OpARM64FMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -4291,8 +4226,7 @@ func rewriteValueARM64_OpARM64FMOVDloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64FMOVDload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (FMOVDloadidx (MOVDconst [c]) ptr mem)
@@ -4306,8 +4240,7 @@ func rewriteValueARM64_OpARM64FMOVDloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64FMOVDload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -4332,9 +4265,7 @@ func rewriteValueARM64_OpARM64FMOVDstore(v *Value) bool {
                v.reset(OpARM64MOVDstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (FMOVDstore [off1] {sym} (ADDconst [off2] ptr) val mem)
@@ -4356,9 +4287,7 @@ func rewriteValueARM64_OpARM64FMOVDstore(v *Value) bool {
                v.reset(OpARM64FMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (FMOVDstore [off] {sym} (ADD ptr idx) val mem)
@@ -4378,10 +4307,7 @@ func rewriteValueARM64_OpARM64FMOVDstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64FMOVDstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (FMOVDstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
@@ -4404,9 +4330,7 @@ func rewriteValueARM64_OpARM64FMOVDstore(v *Value) bool {
                v.reset(OpARM64FMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -4428,9 +4352,7 @@ func rewriteValueARM64_OpARM64FMOVDstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64FMOVDstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (FMOVDstoreidx (MOVDconst [c]) idx val mem)
@@ -4445,9 +4367,7 @@ func rewriteValueARM64_OpARM64FMOVDstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64FMOVDstore)
                v.AuxInt = c
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(idx, val, mem)
                return true
        }
        return false
@@ -4493,8 +4413,7 @@ func rewriteValueARM64_OpARM64FMOVSload(v *Value) bool {
                v.reset(OpARM64FMOVSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (FMOVSload [off] {sym} (ADD ptr idx) mem)
@@ -4513,9 +4432,7 @@ func rewriteValueARM64_OpARM64FMOVSload(v *Value) bool {
                        break
                }
                v.reset(OpARM64FMOVSloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (FMOVSload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -4537,8 +4454,7 @@ func rewriteValueARM64_OpARM64FMOVSload(v *Value) bool {
                v.reset(OpARM64FMOVSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -4558,8 +4474,7 @@ func rewriteValueARM64_OpARM64FMOVSloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64FMOVSload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (FMOVSloadidx (MOVDconst [c]) ptr mem)
@@ -4573,8 +4488,7 @@ func rewriteValueARM64_OpARM64FMOVSloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64FMOVSload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -4599,9 +4513,7 @@ func rewriteValueARM64_OpARM64FMOVSstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (FMOVSstore [off1] {sym} (ADDconst [off2] ptr) val mem)
@@ -4623,9 +4535,7 @@ func rewriteValueARM64_OpARM64FMOVSstore(v *Value) bool {
                v.reset(OpARM64FMOVSstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (FMOVSstore [off] {sym} (ADD ptr idx) val mem)
@@ -4645,10 +4555,7 @@ func rewriteValueARM64_OpARM64FMOVSstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64FMOVSstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (FMOVSstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
@@ -4671,9 +4578,7 @@ func rewriteValueARM64_OpARM64FMOVSstore(v *Value) bool {
                v.reset(OpARM64FMOVSstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -4695,9 +4600,7 @@ func rewriteValueARM64_OpARM64FMOVSstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64FMOVSstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (FMOVSstoreidx (MOVDconst [c]) idx val mem)
@@ -4712,9 +4615,7 @@ func rewriteValueARM64_OpARM64FMOVSstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64FMOVSstore)
                v.AuxInt = c
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(idx, val, mem)
                return true
        }
        return false
@@ -4732,8 +4633,7 @@ func rewriteValueARM64_OpARM64FMULD(v *Value) bool {
                        x := v_0.Args[0]
                        y := v_1
                        v.reset(OpARM64FNMULD)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -4753,8 +4653,7 @@ func rewriteValueARM64_OpARM64FMULS(v *Value) bool {
                        x := v_0.Args[0]
                        y := v_1
                        v.reset(OpARM64FNMULS)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -4772,8 +4671,7 @@ func rewriteValueARM64_OpARM64FNEGD(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpARM64FNMULD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (FNEGD (FNMULD x y))
@@ -4785,8 +4683,7 @@ func rewriteValueARM64_OpARM64FNEGD(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpARM64FMULD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -4802,8 +4699,7 @@ func rewriteValueARM64_OpARM64FNEGS(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpARM64FNMULS)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (FNEGS (FNMULS x y))
@@ -4815,8 +4711,7 @@ func rewriteValueARM64_OpARM64FNEGS(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpARM64FMULS)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -4834,8 +4729,7 @@ func rewriteValueARM64_OpARM64FNMULD(v *Value) bool {
                        x := v_0.Args[0]
                        y := v_1
                        v.reset(OpARM64FMULD)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -4855,8 +4749,7 @@ func rewriteValueARM64_OpARM64FNMULS(v *Value) bool {
                        x := v_0.Args[0]
                        y := v_1
                        v.reset(OpARM64FMULS)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -4876,9 +4769,7 @@ func rewriteValueARM64_OpARM64FSUBD(v *Value) bool {
                y := v_1.Args[1]
                x := v_1.Args[0]
                v.reset(OpARM64FMSUBD)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (FSUBD (FMULD x y) a)
@@ -4891,9 +4782,7 @@ func rewriteValueARM64_OpARM64FSUBD(v *Value) bool {
                x := v_0.Args[0]
                a := v_1
                v.reset(OpARM64FNMSUBD)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (FSUBD a (FNMULD x y))
@@ -4906,9 +4795,7 @@ func rewriteValueARM64_OpARM64FSUBD(v *Value) bool {
                y := v_1.Args[1]
                x := v_1.Args[0]
                v.reset(OpARM64FMADDD)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (FSUBD (FNMULD x y) a)
@@ -4921,9 +4808,7 @@ func rewriteValueARM64_OpARM64FSUBD(v *Value) bool {
                x := v_0.Args[0]
                a := v_1
                v.reset(OpARM64FNMADDD)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        return false
@@ -4941,9 +4826,7 @@ func rewriteValueARM64_OpARM64FSUBS(v *Value) bool {
                y := v_1.Args[1]
                x := v_1.Args[0]
                v.reset(OpARM64FMSUBS)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (FSUBS (FMULS x y) a)
@@ -4956,9 +4839,7 @@ func rewriteValueARM64_OpARM64FSUBS(v *Value) bool {
                x := v_0.Args[0]
                a := v_1
                v.reset(OpARM64FNMSUBS)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (FSUBS a (FNMULS x y))
@@ -4971,9 +4852,7 @@ func rewriteValueARM64_OpARM64FSUBS(v *Value) bool {
                y := v_1.Args[1]
                x := v_1.Args[0]
                v.reset(OpARM64FMADDS)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (FSUBS (FNMULS x y) a)
@@ -4986,9 +4865,7 @@ func rewriteValueARM64_OpARM64FSUBS(v *Value) bool {
                x := v_0.Args[0]
                a := v_1
                v.reset(OpARM64FNMADDS)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        return false
@@ -5587,8 +5464,7 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADD a _ (MOVDconst [0]))
@@ -5612,8 +5488,7 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADD a x (MOVDconst [c]))
@@ -5631,8 +5506,7 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADD a x (MOVDconst [c]))
@@ -5649,12 +5523,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a x (MOVDconst [c]))
@@ -5671,12 +5543,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a x (MOVDconst [c]))
@@ -5694,12 +5564,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 3)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a x (MOVDconst [c]))
@@ -5717,12 +5585,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 5)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a x (MOVDconst [c]))
@@ -5740,12 +5606,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 7)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a x (MOVDconst [c]))
@@ -5763,12 +5627,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 9)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a (MOVDconst [-1]) x)
@@ -5780,8 +5642,7 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                x := v_2
                v.reset(OpARM64SUB)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADD a (MOVDconst [0]) _)
@@ -5805,8 +5666,7 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                x := v_2
                v.reset(OpARM64ADD)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADD a (MOVDconst [c]) x)
@@ -5824,8 +5684,7 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADD a (MOVDconst [c]) x)
@@ -5842,12 +5701,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a (MOVDconst [c]) x)
@@ -5864,12 +5721,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a (MOVDconst [c]) x)
@@ -5887,12 +5742,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 3)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a (MOVDconst [c]) x)
@@ -5910,12 +5763,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 5)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a (MOVDconst [c]) x)
@@ -5933,12 +5784,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 7)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD a (MOVDconst [c]) x)
@@ -5956,12 +5805,10 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 9)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADD (MOVDconst [c]) x y)
@@ -5976,8 +5823,7 @@ func rewriteValueARM64_OpARM64MADD(v *Value) bool {
                v.reset(OpARM64ADDconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARM64MUL, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -6019,8 +5865,7 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADDW a _ (MOVDconst [c]))
@@ -6054,8 +5899,7 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADDW a x (MOVDconst [c]))
@@ -6073,8 +5917,7 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADDW a x (MOVDconst [c]))
@@ -6091,12 +5934,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a x (MOVDconst [c]))
@@ -6113,12 +5954,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a x (MOVDconst [c]))
@@ -6136,12 +5975,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 3)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a x (MOVDconst [c]))
@@ -6159,12 +5996,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 5)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a x (MOVDconst [c]))
@@ -6182,12 +6017,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 7)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a x (MOVDconst [c]))
@@ -6205,12 +6038,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 9)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a (MOVDconst [c]) x)
@@ -6227,8 +6058,7 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADDW a (MOVDconst [c]) _)
@@ -6262,8 +6092,7 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADDW a (MOVDconst [c]) x)
@@ -6281,8 +6110,7 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MADDW a (MOVDconst [c]) x)
@@ -6299,12 +6127,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a (MOVDconst [c]) x)
@@ -6321,12 +6147,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a (MOVDconst [c]) x)
@@ -6344,12 +6168,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 3)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a (MOVDconst [c]) x)
@@ -6367,12 +6189,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 5)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a (MOVDconst [c]) x)
@@ -6390,12 +6210,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 7)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW a (MOVDconst [c]) x)
@@ -6413,12 +6231,10 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 9)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MADDW (MOVDconst [c]) x y)
@@ -6433,8 +6249,7 @@ func rewriteValueARM64_OpARM64MADDW(v *Value) bool {
                v.reset(OpARM64ADDconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARM64MULW, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -6541,8 +6356,7 @@ func rewriteValueARM64_OpARM64MNEG(v *Value) bool {
                        v.reset(OpARM64NEG)
                        v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v0.AuxInt = log2(c - 1)
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -6566,8 +6380,7 @@ func rewriteValueARM64_OpARM64MNEG(v *Value) bool {
                        v0.AuxInt = log2(c + 1)
                        v1 := b.NewValue0(v.Pos, OpARM64NEG, x.Type)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
-                       v0.AddArg(x)
+                       v0.AddArg2(v1, x)
                        v.AddArg(v0)
                        return true
                }
@@ -6591,8 +6404,7 @@ func rewriteValueARM64_OpARM64MNEG(v *Value) bool {
                        v.AuxInt = log2(c / 3)
                        v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                        v0.AuxInt = 2
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -6616,8 +6428,7 @@ func rewriteValueARM64_OpARM64MNEG(v *Value) bool {
                        v0.AuxInt = log2(c / 5)
                        v1 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v1.AuxInt = 2
-                       v1.AddArg(x)
-                       v1.AddArg(x)
+                       v1.AddArg2(x, x)
                        v0.AddArg(v1)
                        v.AddArg(v0)
                        return true
@@ -6642,8 +6453,7 @@ func rewriteValueARM64_OpARM64MNEG(v *Value) bool {
                        v.AuxInt = log2(c / 7)
                        v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                        v0.AuxInt = 3
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -6667,8 +6477,7 @@ func rewriteValueARM64_OpARM64MNEG(v *Value) bool {
                        v0.AuxInt = log2(c / 9)
                        v1 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v1.AuxInt = 3
-                       v1.AddArg(x)
-                       v1.AddArg(x)
+                       v1.AddArg2(x, x)
                        v0.AddArg(v1)
                        v.AddArg(v0)
                        return true
@@ -6794,8 +6603,7 @@ func rewriteValueARM64_OpARM64MNEGW(v *Value) bool {
                        v.reset(OpARM64NEG)
                        v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v0.AuxInt = log2(c - 1)
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -6819,8 +6627,7 @@ func rewriteValueARM64_OpARM64MNEGW(v *Value) bool {
                        v0.AuxInt = log2(c + 1)
                        v1 := b.NewValue0(v.Pos, OpARM64NEG, x.Type)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
-                       v0.AddArg(x)
+                       v0.AddArg2(v1, x)
                        v.AddArg(v0)
                        return true
                }
@@ -6844,8 +6651,7 @@ func rewriteValueARM64_OpARM64MNEGW(v *Value) bool {
                        v.AuxInt = log2(c / 3)
                        v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                        v0.AuxInt = 2
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -6869,8 +6675,7 @@ func rewriteValueARM64_OpARM64MNEGW(v *Value) bool {
                        v0.AuxInt = log2(c / 5)
                        v1 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v1.AuxInt = 2
-                       v1.AddArg(x)
-                       v1.AddArg(x)
+                       v1.AddArg2(x, x)
                        v0.AddArg(v1)
                        v.AddArg(v0)
                        return true
@@ -6895,8 +6700,7 @@ func rewriteValueARM64_OpARM64MNEGW(v *Value) bool {
                        v.AuxInt = log2(c / 7)
                        v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                        v0.AuxInt = 3
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -6920,8 +6724,7 @@ func rewriteValueARM64_OpARM64MNEGW(v *Value) bool {
                        v0.AuxInt = log2(c / 9)
                        v1 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v1.AuxInt = 3
-                       v1.AddArg(x)
-                       v1.AddArg(x)
+                       v1.AddArg2(x, x)
                        v0.AddArg(v1)
                        v.AddArg(v0)
                        return true
@@ -7011,8 +6814,7 @@ func rewriteValueARM64_OpARM64MOVBUload(v *Value) bool {
                v.reset(OpARM64MOVBUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUload [off] {sym} (ADD ptr idx) mem)
@@ -7031,9 +6833,7 @@ func rewriteValueARM64_OpARM64MOVBUload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVBUloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBUload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -7055,8 +6855,7 @@ func rewriteValueARM64_OpARM64MOVBUload(v *Value) bool {
                v.reset(OpARM64MOVBUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUload [off] {sym} ptr (MOVBstorezero [off2] {sym2} ptr2 _))
@@ -7110,8 +6909,7 @@ func rewriteValueARM64_OpARM64MOVBUloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVBUload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUloadidx (MOVDconst [c]) ptr mem)
@@ -7125,8 +6923,7 @@ func rewriteValueARM64_OpARM64MOVBUloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVBUload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUloadidx ptr idx (MOVBstorezeroidx ptr2 idx2 _))
@@ -7282,8 +7079,7 @@ func rewriteValueARM64_OpARM64MOVBload(v *Value) bool {
                v.reset(OpARM64MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off] {sym} (ADD ptr idx) mem)
@@ -7302,9 +7098,7 @@ func rewriteValueARM64_OpARM64MOVBload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVBloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -7326,8 +7120,7 @@ func rewriteValueARM64_OpARM64MOVBload(v *Value) bool {
                v.reset(OpARM64MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off] {sym} ptr (MOVBstorezero [off2] {sym2} ptr2 _))
@@ -7368,8 +7161,7 @@ func rewriteValueARM64_OpARM64MOVBloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVBload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBloadidx (MOVDconst [c]) ptr mem)
@@ -7383,8 +7175,7 @@ func rewriteValueARM64_OpARM64MOVBloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVBload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBloadidx ptr idx (MOVBstorezeroidx ptr2 idx2 _))
@@ -7500,9 +7291,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} (ADD ptr idx) val mem)
@@ -7522,10 +7311,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVBstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
@@ -7548,9 +7334,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVDconst [0]) mem)
@@ -7566,8 +7350,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVBstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
@@ -7584,9 +7367,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBUreg x) mem)
@@ -7603,9 +7384,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
@@ -7622,9 +7401,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVHUreg x) mem)
@@ -7641,9 +7418,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVWreg x) mem)
@@ -7660,9 +7435,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVWUreg x) mem)
@@ -7679,9 +7452,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [i] {s} ptr0 (SRLconst [8] w) x:(MOVBstore [i-1] {s} ptr1 w mem))
@@ -7707,9 +7478,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr0 idx0) (SRLconst [8] w) x:(MOVBstoreidx ptr1 idx1 w mem))
@@ -7744,10 +7513,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w, mem)
                        return true
                }
                break
@@ -7775,9 +7541,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr0 idx0) (UBFX [armBFAuxInt(8, 8)] w) x:(MOVBstoreidx ptr1 idx1 w mem))
@@ -7812,10 +7576,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w, mem)
                        return true
                }
                break
@@ -7843,9 +7604,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr0 idx0) (UBFX [armBFAuxInt(8, 24)] w) x:(MOVBstoreidx ptr1 idx1 w mem))
@@ -7880,10 +7639,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w, mem)
                        return true
                }
                break
@@ -7915,9 +7671,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr0 idx0) (SRLconst [8] (MOVDreg w)) x:(MOVBstoreidx ptr1 idx1 w mem))
@@ -7956,10 +7710,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w, mem)
                        return true
                }
                break
@@ -7989,9 +7740,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w0, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr0 idx0) (SRLconst [j] w) x:(MOVBstoreidx ptr1 idx1 w0:(SRLconst [j-8] w) mem))
@@ -8028,10 +7777,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w0, mem)
                        return true
                }
                break
@@ -8065,9 +7811,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w0, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr0 idx0) (UBFX [bfc] w) x:(MOVBstoreidx ptr1 idx1 w0:(UBFX [bfc2] w) mem))
@@ -8108,10 +7852,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w0, mem)
                        return true
                }
                break
@@ -8149,9 +7890,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w0, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr0 idx0) (SRLconst [j] (MOVDreg w)) x:(MOVBstoreidx ptr1 idx1 w0:(SRLconst [j-8] (MOVDreg w)) mem))
@@ -8196,10 +7935,7 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w0, mem)
                        return true
                }
                break
@@ -8299,11 +8035,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVDstore)
                v.AuxInt = i - 7
                v.Aux = s
-               v.AddArg(ptr)
                v0 := b.NewValue0(x6.Pos, OpARM64REV, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [7] {s} p w x0:(MOVBstore [6] {s} p (SRLconst [8] w) x1:(MOVBstore [5] {s} p (SRLconst [16] w) x2:(MOVBstore [4] {s} p (SRLconst [24] w) x3:(MOVBstore [3] {s} p (SRLconst [32] w) x4:(MOVBstore [2] {s} p (SRLconst [40] w) x5:(MOVBstore [1] {s} p1:(ADD ptr1 idx1) (SRLconst [48] w) x6:(MOVBstoreidx ptr0 idx0 (SRLconst [56] w) mem))))))))
@@ -8407,12 +8141,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVDstoreidx)
-                       v.AddArg(ptr0)
-                       v.AddArg(idx0)
                        v0 := b.NewValue0(x5.Pos, OpARM64REV, w.Type)
                        v0.AddArg(w)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr0, idx0, v0, mem)
                        return true
                }
                break
@@ -8464,11 +8195,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = i - 3
                v.Aux = s
-               v.AddArg(ptr)
                v0 := b.NewValue0(x2.Pos, OpARM64REVW, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [3] {s} p w x0:(MOVBstore [2] {s} p (UBFX [armBFAuxInt(8, 24)] w) x1:(MOVBstore [1] {s} p1:(ADD ptr1 idx1) (UBFX [armBFAuxInt(16, 16)] w) x2:(MOVBstoreidx ptr0 idx0 (UBFX [armBFAuxInt(24, 8)] w) mem))))
@@ -8524,12 +8253,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVWstoreidx)
-                       v.AddArg(ptr0)
-                       v.AddArg(idx0)
                        v0 := b.NewValue0(x1.Pos, OpARM64REVW, w.Type)
                        v0.AddArg(w)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr0, idx0, v0, mem)
                        return true
                }
                break
@@ -8593,11 +8319,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = i - 3
                v.Aux = s
-               v.AddArg(ptr)
                v0 := b.NewValue0(x2.Pos, OpARM64REVW, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [3] {s} p w x0:(MOVBstore [2] {s} p (SRLconst [8] (MOVDreg w)) x1:(MOVBstore [1] {s} p1:(ADD ptr1 idx1) (SRLconst [16] (MOVDreg w)) x2:(MOVBstoreidx ptr0 idx0 (SRLconst [24] (MOVDreg w)) mem))))
@@ -8665,12 +8389,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVWstoreidx)
-                       v.AddArg(ptr0)
-                       v.AddArg(idx0)
                        v0 := b.NewValue0(x1.Pos, OpARM64REVW, w.Type)
                        v0.AddArg(w)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr0, idx0, v0, mem)
                        return true
                }
                break
@@ -8722,11 +8443,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = i - 3
                v.Aux = s
-               v.AddArg(ptr)
                v0 := b.NewValue0(x2.Pos, OpARM64REVW, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [3] {s} p w x0:(MOVBstore [2] {s} p (SRLconst [8] w) x1:(MOVBstore [1] {s} p1:(ADD ptr1 idx1) (SRLconst [16] w) x2:(MOVBstoreidx ptr0 idx0 (SRLconst [24] w) mem))))
@@ -8782,12 +8501,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVWstoreidx)
-                       v.AddArg(ptr0)
-                       v.AddArg(idx0)
                        v0 := b.NewValue0(x1.Pos, OpARM64REVW, w.Type)
                        v0.AddArg(w)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr0, idx0, v0, mem)
                        return true
                }
                break
@@ -8815,11 +8531,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr)
                v0 := b.NewValue0(x.Pos, OpARM64REV16W, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr1 idx1) w x:(MOVBstoreidx ptr0 idx0 (SRLconst [8] w) mem))
@@ -8852,12 +8566,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr0)
-                       v.AddArg(idx0)
                        v0 := b.NewValue0(v.Pos, OpARM64REV16W, w.Type)
                        v0.AddArg(w)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr0, idx0, v0, mem)
                        return true
                }
                break
@@ -8885,11 +8596,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr)
                v0 := b.NewValue0(x.Pos, OpARM64REV16W, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr1 idx1) w x:(MOVBstoreidx ptr0 idx0 (UBFX [armBFAuxInt(8, 8)] w) mem))
@@ -8922,12 +8631,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr0)
-                       v.AddArg(idx0)
                        v0 := b.NewValue0(v.Pos, OpARM64REV16W, w.Type)
                        v0.AddArg(w)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr0, idx0, v0, mem)
                        return true
                }
                break
@@ -8959,11 +8665,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr)
                v0 := b.NewValue0(x.Pos, OpARM64REV16W, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr1 idx1) w x:(MOVBstoreidx ptr0 idx0 (SRLconst [8] (MOVDreg w)) mem))
@@ -9000,12 +8704,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr0)
-                       v.AddArg(idx0)
                        v0 := b.NewValue0(v.Pos, OpARM64REV16W, w.Type)
                        v0.AddArg(w)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr0, idx0, v0, mem)
                        return true
                }
                break
@@ -9033,11 +8734,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(ptr)
                v0 := b.NewValue0(x.Pos, OpARM64REV16W, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [1] {s} (ADD ptr1 idx1) w x:(MOVBstoreidx ptr0 idx0 (UBFX [armBFAuxInt(8, 24)] w) mem))
@@ -9070,12 +8769,9 @@ func rewriteValueARM64_OpARM64MOVBstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstoreidx)
-                       v.AddArg(ptr0)
-                       v.AddArg(idx0)
                        v0 := b.NewValue0(v.Pos, OpARM64REV16W, w.Type)
                        v0.AddArg(w)
-                       v.AddArg(v0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr0, idx0, v0, mem)
                        return true
                }
                break
@@ -9100,9 +8796,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVBstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstoreidx (MOVDconst [c]) idx val mem)
@@ -9117,9 +8811,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVBstore)
                v.AuxInt = c
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(idx, val, mem)
                return true
        }
        // match: (MOVBstoreidx ptr idx (MOVDconst [0]) mem)
@@ -9132,9 +8824,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                }
                mem := v_3
                v.reset(OpARM64MOVBstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBstoreidx ptr idx (MOVBreg x) mem)
@@ -9148,10 +8838,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVBstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx ptr idx (MOVBUreg x) mem)
@@ -9165,10 +8852,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVBstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx ptr idx (MOVHreg x) mem)
@@ -9182,10 +8866,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVBstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx ptr idx (MOVHUreg x) mem)
@@ -9199,10 +8880,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVBstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx ptr idx (MOVWreg x) mem)
@@ -9216,10 +8894,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVBstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx ptr idx (MOVWUreg x) mem)
@@ -9233,10 +8908,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVBstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx ptr (ADDconst [1] idx) (SRLconst [8] w) x:(MOVBstoreidx ptr idx w mem))
@@ -9261,10 +8933,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, w, mem)
                return true
        }
        // match: (MOVBstoreidx ptr (ADDconst [3] idx) w x0:(MOVBstoreidx ptr (ADDconst [2] idx) (UBFX [armBFAuxInt(8, 24)] w) x1:(MOVBstoreidx ptr (ADDconst [1] idx) (UBFX [armBFAuxInt(16, 16)] w) x2:(MOVBstoreidx ptr idx (UBFX [armBFAuxInt(24, 8)] w) mem))))
@@ -9322,12 +8991,9 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
                v0 := b.NewValue0(v.Pos, OpARM64REVW, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, v0, mem)
                return true
        }
        // match: (MOVBstoreidx ptr idx w x0:(MOVBstoreidx ptr (ADDconst [1] idx) (UBFX [armBFAuxInt(8, 24)] w) x1:(MOVBstoreidx ptr (ADDconst [2] idx) (UBFX [armBFAuxInt(16, 16)] w) x2:(MOVBstoreidx ptr (ADDconst [3] idx) (UBFX [armBFAuxInt(24, 8)] w) mem))))
@@ -9386,10 +9052,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, w, mem)
                return true
        }
        // match: (MOVBstoreidx ptr (ADDconst [1] idx) w x:(MOVBstoreidx ptr idx (UBFX [armBFAuxInt(8, 8)] w) mem))
@@ -9415,12 +9078,9 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
                v0 := b.NewValue0(v.Pos, OpARM64REV16W, w.Type)
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, v0, mem)
                return true
        }
        // match: (MOVBstoreidx ptr idx w x:(MOVBstoreidx ptr (ADDconst [1] idx) (UBFX [armBFAuxInt(8, 8)] w) mem))
@@ -9447,10 +9107,7 @@ func rewriteValueARM64_OpARM64MOVBstoreidx(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, w, mem)
                return true
        }
        return false
@@ -9478,8 +9135,7 @@ func rewriteValueARM64_OpARM64MOVBstorezero(v *Value) bool {
                v.reset(OpARM64MOVBstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstorezero [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -9501,8 +9157,7 @@ func rewriteValueARM64_OpARM64MOVBstorezero(v *Value) bool {
                v.reset(OpARM64MOVBstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstorezero [off] {sym} (ADD ptr idx) mem)
@@ -9521,9 +9176,7 @@ func rewriteValueARM64_OpARM64MOVBstorezero(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVBstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBstorezero [i] {s} ptr0 x:(MOVBstorezero [j] {s} ptr1 mem))
@@ -9549,8 +9202,7 @@ func rewriteValueARM64_OpARM64MOVBstorezero(v *Value) bool {
                v.reset(OpARM64MOVHstorezero)
                v.AuxInt = min(i, j)
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(mem)
+               v.AddArg2(ptr0, mem)
                return true
        }
        // match: (MOVBstorezero [1] {s} (ADD ptr0 idx0) x:(MOVBstorezeroidx ptr1 idx1 mem))
@@ -9581,9 +9233,7 @@ func rewriteValueARM64_OpARM64MOVBstorezero(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVHstorezeroidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr1, idx1, mem)
                        return true
                }
                break
@@ -9605,8 +9255,7 @@ func rewriteValueARM64_OpARM64MOVBstorezeroidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVBstorezero)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstorezeroidx (MOVDconst [c]) idx mem)
@@ -9620,8 +9269,7 @@ func rewriteValueARM64_OpARM64MOVBstorezeroidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVBstorezero)
                v.AuxInt = c
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg2(idx, mem)
                return true
        }
        // match: (MOVBstorezeroidx ptr (ADDconst [1] idx) x:(MOVBstorezeroidx ptr idx mem))
@@ -9642,9 +9290,7 @@ func rewriteValueARM64_OpARM64MOVBstorezeroidx(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -9690,8 +9336,7 @@ func rewriteValueARM64_OpARM64MOVDload(v *Value) bool {
                v.reset(OpARM64MOVDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDload [off] {sym} (ADD ptr idx) mem)
@@ -9710,9 +9355,7 @@ func rewriteValueARM64_OpARM64MOVDload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVDload [off] {sym} (ADDshiftLL [3] ptr idx) mem)
@@ -9731,9 +9374,7 @@ func rewriteValueARM64_OpARM64MOVDload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDloadidx8)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVDload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -9755,8 +9396,7 @@ func rewriteValueARM64_OpARM64MOVDload(v *Value) bool {
                v.reset(OpARM64MOVDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDload [off] {sym} ptr (MOVDstorezero [off2] {sym2} ptr2 _))
@@ -9810,8 +9450,7 @@ func rewriteValueARM64_OpARM64MOVDloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVDload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDloadidx (MOVDconst [c]) ptr mem)
@@ -9825,8 +9464,7 @@ func rewriteValueARM64_OpARM64MOVDloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVDload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDloadidx ptr (SLLconst [3] idx) mem)
@@ -9839,9 +9477,7 @@ func rewriteValueARM64_OpARM64MOVDloadidx(v *Value) bool {
                idx := v_1.Args[0]
                mem := v_2
                v.reset(OpARM64MOVDloadidx8)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVDloadidx (SLLconst [3] idx) ptr mem)
@@ -9854,9 +9490,7 @@ func rewriteValueARM64_OpARM64MOVDloadidx(v *Value) bool {
                ptr := v_1
                mem := v_2
                v.reset(OpARM64MOVDloadidx8)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVDloadidx ptr idx (MOVDstorezeroidx ptr2 idx2 _))
@@ -9895,8 +9529,7 @@ func rewriteValueARM64_OpARM64MOVDloadidx8(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVDload)
                v.AuxInt = c << 3
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDloadidx8 ptr idx (MOVDstorezeroidx8 ptr2 idx2 _))
@@ -9967,9 +9600,7 @@ func rewriteValueARM64_OpARM64MOVDstore(v *Value) bool {
                v.reset(OpARM64FMOVDstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym} (ADDconst [off2] ptr) val mem)
@@ -9991,9 +9622,7 @@ func rewriteValueARM64_OpARM64MOVDstore(v *Value) bool {
                v.reset(OpARM64MOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstore [off] {sym} (ADD ptr idx) val mem)
@@ -10013,10 +9642,7 @@ func rewriteValueARM64_OpARM64MOVDstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVDstore [off] {sym} (ADDshiftLL [3] ptr idx) val mem)
@@ -10036,10 +9662,7 @@ func rewriteValueARM64_OpARM64MOVDstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDstoreidx8)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
@@ -10062,9 +9685,7 @@ func rewriteValueARM64_OpARM64MOVDstore(v *Value) bool {
                v.reset(OpARM64MOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstore [off] {sym} ptr (MOVDconst [0]) mem)
@@ -10080,8 +9701,7 @@ func rewriteValueARM64_OpARM64MOVDstore(v *Value) bool {
                v.reset(OpARM64MOVDstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -10103,9 +9723,7 @@ func rewriteValueARM64_OpARM64MOVDstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVDstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstoreidx (MOVDconst [c]) idx val mem)
@@ -10120,9 +9738,7 @@ func rewriteValueARM64_OpARM64MOVDstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVDstore)
                v.AuxInt = c
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(idx, val, mem)
                return true
        }
        // match: (MOVDstoreidx ptr (SLLconst [3] idx) val mem)
@@ -10136,10 +9752,7 @@ func rewriteValueARM64_OpARM64MOVDstoreidx(v *Value) bool {
                val := v_2
                mem := v_3
                v.reset(OpARM64MOVDstoreidx8)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVDstoreidx (SLLconst [3] idx) ptr val mem)
@@ -10153,10 +9766,7 @@ func rewriteValueARM64_OpARM64MOVDstoreidx(v *Value) bool {
                val := v_2
                mem := v_3
                v.reset(OpARM64MOVDstoreidx8)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVDstoreidx ptr idx (MOVDconst [0]) mem)
@@ -10169,9 +9779,7 @@ func rewriteValueARM64_OpARM64MOVDstoreidx(v *Value) bool {
                }
                mem := v_3
                v.reset(OpARM64MOVDstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -10193,9 +9801,7 @@ func rewriteValueARM64_OpARM64MOVDstoreidx8(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVDstore)
                v.AuxInt = c << 3
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstoreidx8 ptr idx (MOVDconst [0]) mem)
@@ -10208,9 +9814,7 @@ func rewriteValueARM64_OpARM64MOVDstoreidx8(v *Value) bool {
                }
                mem := v_3
                v.reset(OpARM64MOVDstorezeroidx8)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -10238,8 +9842,7 @@ func rewriteValueARM64_OpARM64MOVDstorezero(v *Value) bool {
                v.reset(OpARM64MOVDstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDstorezero [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -10261,8 +9864,7 @@ func rewriteValueARM64_OpARM64MOVDstorezero(v *Value) bool {
                v.reset(OpARM64MOVDstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDstorezero [off] {sym} (ADD ptr idx) mem)
@@ -10281,9 +9883,7 @@ func rewriteValueARM64_OpARM64MOVDstorezero(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVDstorezero [off] {sym} (ADDshiftLL [3] ptr idx) mem)
@@ -10302,9 +9902,7 @@ func rewriteValueARM64_OpARM64MOVDstorezero(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDstorezeroidx8)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVDstorezero [i] {s} ptr0 x:(MOVDstorezero [j] {s} ptr1 mem))
@@ -10330,8 +9928,7 @@ func rewriteValueARM64_OpARM64MOVDstorezero(v *Value) bool {
                v.reset(OpARM64MOVQstorezero)
                v.AuxInt = min(i, j)
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(mem)
+               v.AddArg2(ptr0, mem)
                return true
        }
        // match: (MOVDstorezero [8] {s} p0:(ADD ptr0 idx0) x:(MOVDstorezeroidx ptr1 idx1 mem))
@@ -10365,8 +9962,7 @@ func rewriteValueARM64_OpARM64MOVDstorezero(v *Value) bool {
                        v.reset(OpARM64MOVQstorezero)
                        v.AuxInt = 0
                        v.Aux = s
-                       v.AddArg(p0)
-                       v.AddArg(mem)
+                       v.AddArg2(p0, mem)
                        return true
                }
                break
@@ -10398,8 +9994,7 @@ func rewriteValueARM64_OpARM64MOVDstorezero(v *Value) bool {
                v.reset(OpARM64MOVQstorezero)
                v.AuxInt = 0
                v.Aux = s
-               v.AddArg(p0)
-               v.AddArg(mem)
+               v.AddArg2(p0, mem)
                return true
        }
        return false
@@ -10419,8 +10014,7 @@ func rewriteValueARM64_OpARM64MOVDstorezeroidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVDstorezero)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDstorezeroidx (MOVDconst [c]) idx mem)
@@ -10434,8 +10028,7 @@ func rewriteValueARM64_OpARM64MOVDstorezeroidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVDstorezero)
                v.AuxInt = c
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg2(idx, mem)
                return true
        }
        // match: (MOVDstorezeroidx ptr (SLLconst [3] idx) mem)
@@ -10448,9 +10041,7 @@ func rewriteValueARM64_OpARM64MOVDstorezeroidx(v *Value) bool {
                idx := v_1.Args[0]
                mem := v_2
                v.reset(OpARM64MOVDstorezeroidx8)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVDstorezeroidx (SLLconst [3] idx) ptr mem)
@@ -10463,9 +10054,7 @@ func rewriteValueARM64_OpARM64MOVDstorezeroidx(v *Value) bool {
                ptr := v_1
                mem := v_2
                v.reset(OpARM64MOVDstorezeroidx8)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -10485,8 +10074,7 @@ func rewriteValueARM64_OpARM64MOVDstorezeroidx8(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVDstorezero)
                v.AuxInt = c << 3
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -10514,8 +10102,7 @@ func rewriteValueARM64_OpARM64MOVHUload(v *Value) bool {
                v.reset(OpARM64MOVHUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUload [off] {sym} (ADD ptr idx) mem)
@@ -10534,9 +10121,7 @@ func rewriteValueARM64_OpARM64MOVHUload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHUloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHUload [off] {sym} (ADDshiftLL [1] ptr idx) mem)
@@ -10555,9 +10140,7 @@ func rewriteValueARM64_OpARM64MOVHUload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHUloadidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHUload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -10579,8 +10162,7 @@ func rewriteValueARM64_OpARM64MOVHUload(v *Value) bool {
                v.reset(OpARM64MOVHUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUload [off] {sym} ptr (MOVHstorezero [off2] {sym2} ptr2 _))
@@ -10634,8 +10216,7 @@ func rewriteValueARM64_OpARM64MOVHUloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVHUload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUloadidx (MOVDconst [c]) ptr mem)
@@ -10649,8 +10230,7 @@ func rewriteValueARM64_OpARM64MOVHUloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVHUload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUloadidx ptr (SLLconst [1] idx) mem)
@@ -10663,9 +10243,7 @@ func rewriteValueARM64_OpARM64MOVHUloadidx(v *Value) bool {
                idx := v_1.Args[0]
                mem := v_2
                v.reset(OpARM64MOVHUloadidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHUloadidx ptr (ADD idx idx) mem)
@@ -10681,9 +10259,7 @@ func rewriteValueARM64_OpARM64MOVHUloadidx(v *Value) bool {
                }
                mem := v_2
                v.reset(OpARM64MOVHUloadidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHUloadidx (ADD idx idx) ptr mem)
@@ -10699,9 +10275,7 @@ func rewriteValueARM64_OpARM64MOVHUloadidx(v *Value) bool {
                ptr := v_1
                mem := v_2
                v.reset(OpARM64MOVHUloadidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHUloadidx ptr idx (MOVHstorezeroidx ptr2 idx2 _))
@@ -10740,8 +10314,7 @@ func rewriteValueARM64_OpARM64MOVHUloadidx2(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVHUload)
                v.AuxInt = c << 1
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUloadidx2 ptr idx (MOVHstorezeroidx2 ptr2 idx2 _))
@@ -10932,8 +10505,7 @@ func rewriteValueARM64_OpARM64MOVHload(v *Value) bool {
                v.reset(OpARM64MOVHload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHload [off] {sym} (ADD ptr idx) mem)
@@ -10952,9 +10524,7 @@ func rewriteValueARM64_OpARM64MOVHload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHload [off] {sym} (ADDshiftLL [1] ptr idx) mem)
@@ -10973,9 +10543,7 @@ func rewriteValueARM64_OpARM64MOVHload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHloadidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -10997,8 +10565,7 @@ func rewriteValueARM64_OpARM64MOVHload(v *Value) bool {
                v.reset(OpARM64MOVHload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHload [off] {sym} ptr (MOVHstorezero [off2] {sym2} ptr2 _))
@@ -11039,8 +10606,7 @@ func rewriteValueARM64_OpARM64MOVHloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVHload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHloadidx (MOVDconst [c]) ptr mem)
@@ -11054,8 +10620,7 @@ func rewriteValueARM64_OpARM64MOVHloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVHload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHloadidx ptr (SLLconst [1] idx) mem)
@@ -11068,9 +10633,7 @@ func rewriteValueARM64_OpARM64MOVHloadidx(v *Value) bool {
                idx := v_1.Args[0]
                mem := v_2
                v.reset(OpARM64MOVHloadidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHloadidx ptr (ADD idx idx) mem)
@@ -11086,9 +10649,7 @@ func rewriteValueARM64_OpARM64MOVHloadidx(v *Value) bool {
                }
                mem := v_2
                v.reset(OpARM64MOVHloadidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHloadidx (ADD idx idx) ptr mem)
@@ -11104,9 +10665,7 @@ func rewriteValueARM64_OpARM64MOVHloadidx(v *Value) bool {
                ptr := v_1
                mem := v_2
                v.reset(OpARM64MOVHloadidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHloadidx ptr idx (MOVHstorezeroidx ptr2 idx2 _))
@@ -11145,8 +10704,7 @@ func rewriteValueARM64_OpARM64MOVHloadidx2(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVHload)
                v.AuxInt = c << 1
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHloadidx2 ptr idx (MOVHstorezeroidx2 ptr2 idx2 _))
@@ -11344,9 +10902,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} (ADD ptr idx) val mem)
@@ -11366,10 +10922,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} (ADDshiftLL [1] ptr idx) val mem)
@@ -11389,10 +10942,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHstoreidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVHstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
@@ -11415,9 +10965,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVDconst [0]) mem)
@@ -11433,8 +10981,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVHstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
@@ -11451,9 +10998,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHUreg x) mem)
@@ -11470,9 +11015,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVWreg x) mem)
@@ -11489,9 +11032,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVWUreg x) mem)
@@ -11508,9 +11049,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [i] {s} ptr0 (SRLconst [16] w) x:(MOVHstore [i-2] {s} ptr1 w mem))
@@ -11536,9 +11075,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w, mem)
                return true
        }
        // match: (MOVHstore [2] {s} (ADD ptr0 idx0) (SRLconst [16] w) x:(MOVHstoreidx ptr1 idx1 w mem))
@@ -11573,10 +11110,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVWstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w, mem)
                        return true
                }
                break
@@ -11609,13 +11143,10 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstoreidx)
-               v.AddArg(ptr1)
                v0 := b.NewValue0(v.Pos, OpARM64SLLconst, idx1.Type)
                v0.AuxInt = 1
                v0.AddArg(idx1)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(ptr1, v0, w, mem)
                return true
        }
        // match: (MOVHstore [i] {s} ptr0 (UBFX [armBFAuxInt(16, 16)] w) x:(MOVHstore [i-2] {s} ptr1 w mem))
@@ -11641,9 +11172,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w, mem)
                return true
        }
        // match: (MOVHstore [2] {s} (ADD ptr0 idx0) (UBFX [armBFAuxInt(16, 16)] w) x:(MOVHstoreidx ptr1 idx1 w mem))
@@ -11678,10 +11207,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVWstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w, mem)
                        return true
                }
                break
@@ -11714,13 +11240,10 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstoreidx)
-               v.AddArg(ptr1)
                v0 := b.NewValue0(v.Pos, OpARM64SLLconst, idx1.Type)
                v0.AuxInt = 1
                v0.AddArg(idx1)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(ptr1, v0, w, mem)
                return true
        }
        // match: (MOVHstore [i] {s} ptr0 (SRLconst [16] (MOVDreg w)) x:(MOVHstore [i-2] {s} ptr1 w mem))
@@ -11750,9 +11273,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w, mem)
                return true
        }
        // match: (MOVHstore [2] {s} (ADD ptr0 idx0) (SRLconst [16] (MOVDreg w)) x:(MOVHstoreidx ptr1 idx1 w mem))
@@ -11791,10 +11312,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVWstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w, mem)
                        return true
                }
                break
@@ -11831,13 +11349,10 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstoreidx)
-               v.AddArg(ptr1)
                v0 := b.NewValue0(v.Pos, OpARM64SLLconst, idx1.Type)
                v0.AuxInt = 1
                v0.AddArg(idx1)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(ptr1, v0, w, mem)
                return true
        }
        // match: (MOVHstore [i] {s} ptr0 (SRLconst [j] w) x:(MOVHstore [i-2] {s} ptr1 w0:(SRLconst [j-16] w) mem))
@@ -11865,9 +11380,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w0, mem)
                return true
        }
        // match: (MOVHstore [2] {s} (ADD ptr0 idx0) (SRLconst [j] w) x:(MOVHstoreidx ptr1 idx1 w0:(SRLconst [j-16] w) mem))
@@ -11904,10 +11417,7 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVWstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w0, mem)
                        return true
                }
                break
@@ -11942,13 +11452,10 @@ func rewriteValueARM64_OpARM64MOVHstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstoreidx)
-               v.AddArg(ptr1)
                v0 := b.NewValue0(v.Pos, OpARM64SLLconst, idx1.Type)
                v0.AuxInt = 1
                v0.AddArg(idx1)
-               v.AddArg(v0)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg4(ptr1, v0, w0, mem)
                return true
        }
        return false
@@ -11970,9 +11477,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVHstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstoreidx (MOVDconst [c]) idx val mem)
@@ -11987,9 +11492,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVHstore)
                v.AuxInt = c
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(idx, val, mem)
                return true
        }
        // match: (MOVHstoreidx ptr (SLLconst [1] idx) val mem)
@@ -12003,10 +11506,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                val := v_2
                mem := v_3
                v.reset(OpARM64MOVHstoreidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVHstoreidx ptr (ADD idx idx) val mem)
@@ -12023,10 +11523,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                val := v_2
                mem := v_3
                v.reset(OpARM64MOVHstoreidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVHstoreidx (SLLconst [1] idx) ptr val mem)
@@ -12040,10 +11537,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                val := v_2
                mem := v_3
                v.reset(OpARM64MOVHstoreidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVHstoreidx (ADD idx idx) ptr val mem)
@@ -12060,10 +11554,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                val := v_2
                mem := v_3
                v.reset(OpARM64MOVHstoreidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVHstoreidx ptr idx (MOVDconst [0]) mem)
@@ -12076,9 +11567,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                }
                mem := v_3
                v.reset(OpARM64MOVHstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHstoreidx ptr idx (MOVHreg x) mem)
@@ -12092,10 +11581,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVHstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVHstoreidx ptr idx (MOVHUreg x) mem)
@@ -12109,10 +11595,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVHstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVHstoreidx ptr idx (MOVWreg x) mem)
@@ -12126,10 +11609,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVHstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVHstoreidx ptr idx (MOVWUreg x) mem)
@@ -12143,10 +11623,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVHstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVHstoreidx ptr (ADDconst [2] idx) (SRLconst [16] w) x:(MOVHstoreidx ptr idx w mem))
@@ -12171,10 +11648,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, w, mem)
                return true
        }
        return false
@@ -12196,9 +11670,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx2(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVHstore)
                v.AuxInt = c << 1
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstoreidx2 ptr idx (MOVDconst [0]) mem)
@@ -12211,9 +11683,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx2(v *Value) bool {
                }
                mem := v_3
                v.reset(OpARM64MOVHstorezeroidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHstoreidx2 ptr idx (MOVHreg x) mem)
@@ -12227,10 +11697,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx2(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVHstoreidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVHstoreidx2 ptr idx (MOVHUreg x) mem)
@@ -12244,10 +11711,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx2(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVHstoreidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVHstoreidx2 ptr idx (MOVWreg x) mem)
@@ -12261,10 +11725,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx2(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVHstoreidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVHstoreidx2 ptr idx (MOVWUreg x) mem)
@@ -12278,10 +11739,7 @@ func rewriteValueARM64_OpARM64MOVHstoreidx2(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVHstoreidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        return false
@@ -12309,8 +11767,7 @@ func rewriteValueARM64_OpARM64MOVHstorezero(v *Value) bool {
                v.reset(OpARM64MOVHstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstorezero [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -12332,8 +11789,7 @@ func rewriteValueARM64_OpARM64MOVHstorezero(v *Value) bool {
                v.reset(OpARM64MOVHstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstorezero [off] {sym} (ADD ptr idx) mem)
@@ -12352,9 +11808,7 @@ func rewriteValueARM64_OpARM64MOVHstorezero(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHstorezero [off] {sym} (ADDshiftLL [1] ptr idx) mem)
@@ -12373,9 +11827,7 @@ func rewriteValueARM64_OpARM64MOVHstorezero(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHstorezeroidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHstorezero [i] {s} ptr0 x:(MOVHstorezero [j] {s} ptr1 mem))
@@ -12401,8 +11853,7 @@ func rewriteValueARM64_OpARM64MOVHstorezero(v *Value) bool {
                v.reset(OpARM64MOVWstorezero)
                v.AuxInt = min(i, j)
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(mem)
+               v.AddArg2(ptr0, mem)
                return true
        }
        // match: (MOVHstorezero [2] {s} (ADD ptr0 idx0) x:(MOVHstorezeroidx ptr1 idx1 mem))
@@ -12433,9 +11884,7 @@ func rewriteValueARM64_OpARM64MOVHstorezero(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVWstorezeroidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr1, idx1, mem)
                        return true
                }
                break
@@ -12464,12 +11913,10 @@ func rewriteValueARM64_OpARM64MOVHstorezero(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstorezeroidx)
-               v.AddArg(ptr1)
                v0 := b.NewValue0(v.Pos, OpARM64SLLconst, idx1.Type)
                v0.AuxInt = 1
                v0.AddArg(idx1)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr1, v0, mem)
                return true
        }
        return false
@@ -12489,8 +11936,7 @@ func rewriteValueARM64_OpARM64MOVHstorezeroidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVHstorezero)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstorezeroidx (MOVDconst [c]) idx mem)
@@ -12504,8 +11950,7 @@ func rewriteValueARM64_OpARM64MOVHstorezeroidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVHstorezero)
                v.AuxInt = c
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg2(idx, mem)
                return true
        }
        // match: (MOVHstorezeroidx ptr (SLLconst [1] idx) mem)
@@ -12518,9 +11963,7 @@ func rewriteValueARM64_OpARM64MOVHstorezeroidx(v *Value) bool {
                idx := v_1.Args[0]
                mem := v_2
                v.reset(OpARM64MOVHstorezeroidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHstorezeroidx ptr (ADD idx idx) mem)
@@ -12536,9 +11979,7 @@ func rewriteValueARM64_OpARM64MOVHstorezeroidx(v *Value) bool {
                }
                mem := v_2
                v.reset(OpARM64MOVHstorezeroidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHstorezeroidx (SLLconst [1] idx) ptr mem)
@@ -12551,9 +11992,7 @@ func rewriteValueARM64_OpARM64MOVHstorezeroidx(v *Value) bool {
                ptr := v_1
                mem := v_2
                v.reset(OpARM64MOVHstorezeroidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHstorezeroidx (ADD idx idx) ptr mem)
@@ -12569,9 +12008,7 @@ func rewriteValueARM64_OpARM64MOVHstorezeroidx(v *Value) bool {
                ptr := v_1
                mem := v_2
                v.reset(OpARM64MOVHstorezeroidx2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHstorezeroidx ptr (ADDconst [2] idx) x:(MOVHstorezeroidx ptr idx mem))
@@ -12592,9 +12029,7 @@ func rewriteValueARM64_OpARM64MOVHstorezeroidx(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -12614,8 +12049,7 @@ func rewriteValueARM64_OpARM64MOVHstorezeroidx2(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVHstorezero)
                v.AuxInt = c << 1
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -12643,8 +12077,7 @@ func rewriteValueARM64_OpARM64MOVQstorezero(v *Value) bool {
                v.reset(OpARM64MOVQstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVQstorezero [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -12666,8 +12099,7 @@ func rewriteValueARM64_OpARM64MOVQstorezero(v *Value) bool {
                v.reset(OpARM64MOVQstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -12713,8 +12145,7 @@ func rewriteValueARM64_OpARM64MOVWUload(v *Value) bool {
                v.reset(OpARM64MOVWUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWUload [off] {sym} (ADD ptr idx) mem)
@@ -12733,9 +12164,7 @@ func rewriteValueARM64_OpARM64MOVWUload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWUloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWUload [off] {sym} (ADDshiftLL [2] ptr idx) mem)
@@ -12754,9 +12183,7 @@ func rewriteValueARM64_OpARM64MOVWUload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWUloadidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWUload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -12778,8 +12205,7 @@ func rewriteValueARM64_OpARM64MOVWUload(v *Value) bool {
                v.reset(OpARM64MOVWUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWUload [off] {sym} ptr (MOVWstorezero [off2] {sym2} ptr2 _))
@@ -12833,8 +12259,7 @@ func rewriteValueARM64_OpARM64MOVWUloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVWUload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWUloadidx (MOVDconst [c]) ptr mem)
@@ -12848,8 +12273,7 @@ func rewriteValueARM64_OpARM64MOVWUloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVWUload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWUloadidx ptr (SLLconst [2] idx) mem)
@@ -12862,9 +12286,7 @@ func rewriteValueARM64_OpARM64MOVWUloadidx(v *Value) bool {
                idx := v_1.Args[0]
                mem := v_2
                v.reset(OpARM64MOVWUloadidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWUloadidx (SLLconst [2] idx) ptr mem)
@@ -12877,9 +12299,7 @@ func rewriteValueARM64_OpARM64MOVWUloadidx(v *Value) bool {
                ptr := v_1
                mem := v_2
                v.reset(OpARM64MOVWUloadidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWUloadidx ptr idx (MOVWstorezeroidx ptr2 idx2 _))
@@ -12918,8 +12338,7 @@ func rewriteValueARM64_OpARM64MOVWUloadidx4(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVWUload)
                v.AuxInt = c << 2
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWUloadidx4 ptr idx (MOVWstorezeroidx4 ptr2 idx2 _))
@@ -13157,8 +12576,7 @@ func rewriteValueARM64_OpARM64MOVWload(v *Value) bool {
                v.reset(OpARM64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off] {sym} (ADD ptr idx) mem)
@@ -13177,9 +12595,7 @@ func rewriteValueARM64_OpARM64MOVWload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [off] {sym} (ADDshiftLL [2] ptr idx) mem)
@@ -13198,9 +12614,7 @@ func rewriteValueARM64_OpARM64MOVWload(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWloadidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -13222,8 +12636,7 @@ func rewriteValueARM64_OpARM64MOVWload(v *Value) bool {
                v.reset(OpARM64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off] {sym} ptr (MOVWstorezero [off2] {sym2} ptr2 _))
@@ -13264,8 +12677,7 @@ func rewriteValueARM64_OpARM64MOVWloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVWload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWloadidx (MOVDconst [c]) ptr mem)
@@ -13279,8 +12691,7 @@ func rewriteValueARM64_OpARM64MOVWloadidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVWload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWloadidx ptr (SLLconst [2] idx) mem)
@@ -13293,9 +12704,7 @@ func rewriteValueARM64_OpARM64MOVWloadidx(v *Value) bool {
                idx := v_1.Args[0]
                mem := v_2
                v.reset(OpARM64MOVWloadidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWloadidx (SLLconst [2] idx) ptr mem)
@@ -13308,9 +12717,7 @@ func rewriteValueARM64_OpARM64MOVWloadidx(v *Value) bool {
                ptr := v_1
                mem := v_2
                v.reset(OpARM64MOVWloadidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWloadidx ptr idx (MOVWstorezeroidx ptr2 idx2 _))
@@ -13349,8 +12756,7 @@ func rewriteValueARM64_OpARM64MOVWloadidx4(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVWload)
                v.AuxInt = c << 2
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWloadidx4 ptr idx (MOVWstorezeroidx4 ptr2 idx2 _))
@@ -13626,9 +13032,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                v.reset(OpARM64FMOVSstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym} (ADDconst [off2] ptr) val mem)
@@ -13650,9 +13054,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} (ADD ptr idx) val mem)
@@ -13672,10 +13074,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} (ADDshiftLL [2] ptr idx) val mem)
@@ -13695,10 +13094,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstoreidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
@@ -13721,9 +13117,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVDconst [0]) mem)
@@ -13739,8 +13133,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                v.reset(OpARM64MOVWstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWreg x) mem)
@@ -13757,9 +13150,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWUreg x) mem)
@@ -13776,9 +13167,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                v.reset(OpARM64MOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWstore [i] {s} ptr0 (SRLconst [32] w) x:(MOVWstore [i-4] {s} ptr1 w mem))
@@ -13804,9 +13193,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                v.reset(OpARM64MOVDstore)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w, mem)
                return true
        }
        // match: (MOVWstore [4] {s} (ADD ptr0 idx0) (SRLconst [32] w) x:(MOVWstoreidx ptr1 idx1 w mem))
@@ -13841,10 +13228,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVDstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w, mem)
                        return true
                }
                break
@@ -13877,13 +13261,10 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDstoreidx)
-               v.AddArg(ptr1)
                v0 := b.NewValue0(v.Pos, OpARM64SLLconst, idx1.Type)
                v0.AuxInt = 2
                v0.AddArg(idx1)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(ptr1, v0, w, mem)
                return true
        }
        // match: (MOVWstore [i] {s} ptr0 (SRLconst [j] w) x:(MOVWstore [i-4] {s} ptr1 w0:(SRLconst [j-32] w) mem))
@@ -13911,9 +13292,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                v.reset(OpARM64MOVDstore)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(ptr0, w0, mem)
                return true
        }
        // match: (MOVWstore [4] {s} (ADD ptr0 idx0) (SRLconst [j] w) x:(MOVWstoreidx ptr1 idx1 w0:(SRLconst [j-32] w) mem))
@@ -13950,10 +13329,7 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVDstoreidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(w0)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr1, idx1, w0, mem)
                        return true
                }
                break
@@ -13988,13 +13364,10 @@ func rewriteValueARM64_OpARM64MOVWstore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDstoreidx)
-               v.AddArg(ptr1)
                v0 := b.NewValue0(v.Pos, OpARM64SLLconst, idx1.Type)
                v0.AuxInt = 2
                v0.AddArg(idx1)
-               v.AddArg(v0)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg4(ptr1, v0, w0, mem)
                return true
        }
        return false
@@ -14016,9 +13389,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVWstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstoreidx (MOVDconst [c]) idx val mem)
@@ -14033,9 +13404,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVWstore)
                v.AuxInt = c
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx ptr (SLLconst [2] idx) val mem)
@@ -14049,10 +13418,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx(v *Value) bool {
                val := v_2
                mem := v_3
                v.reset(OpARM64MOVWstoreidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx (SLLconst [2] idx) ptr val mem)
@@ -14066,10 +13432,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx(v *Value) bool {
                val := v_2
                mem := v_3
                v.reset(OpARM64MOVWstoreidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstoreidx ptr idx (MOVDconst [0]) mem)
@@ -14082,9 +13445,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx(v *Value) bool {
                }
                mem := v_3
                v.reset(OpARM64MOVWstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreidx ptr idx (MOVWreg x) mem)
@@ -14098,10 +13459,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVWstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVWstoreidx ptr idx (MOVWUreg x) mem)
@@ -14115,10 +13473,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVWstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVWstoreidx ptr (ADDconst [4] idx) (SRLconst [32] w) x:(MOVWstoreidx ptr idx w mem))
@@ -14143,10 +13498,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, w, mem)
                return true
        }
        return false
@@ -14168,9 +13520,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx4(v *Value) bool {
                mem := v_3
                v.reset(OpARM64MOVWstore)
                v.AuxInt = c << 2
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstoreidx4 ptr idx (MOVDconst [0]) mem)
@@ -14183,9 +13533,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx4(v *Value) bool {
                }
                mem := v_3
                v.reset(OpARM64MOVWstorezeroidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstoreidx4 ptr idx (MOVWreg x) mem)
@@ -14199,10 +13547,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx4(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVWstoreidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVWstoreidx4 ptr idx (MOVWUreg x) mem)
@@ -14216,10 +13561,7 @@ func rewriteValueARM64_OpARM64MOVWstoreidx4(v *Value) bool {
                x := v_2.Args[0]
                mem := v_3
                v.reset(OpARM64MOVWstoreidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        return false
@@ -14247,8 +13589,7 @@ func rewriteValueARM64_OpARM64MOVWstorezero(v *Value) bool {
                v.reset(OpARM64MOVWstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstorezero [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
@@ -14270,8 +13611,7 @@ func rewriteValueARM64_OpARM64MOVWstorezero(v *Value) bool {
                v.reset(OpARM64MOVWstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstorezero [off] {sym} (ADD ptr idx) mem)
@@ -14290,9 +13630,7 @@ func rewriteValueARM64_OpARM64MOVWstorezero(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstorezero [off] {sym} (ADDshiftLL [2] ptr idx) mem)
@@ -14311,9 +13649,7 @@ func rewriteValueARM64_OpARM64MOVWstorezero(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstorezeroidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstorezero [i] {s} ptr0 x:(MOVWstorezero [j] {s} ptr1 mem))
@@ -14339,8 +13675,7 @@ func rewriteValueARM64_OpARM64MOVWstorezero(v *Value) bool {
                v.reset(OpARM64MOVDstorezero)
                v.AuxInt = min(i, j)
                v.Aux = s
-               v.AddArg(ptr0)
-               v.AddArg(mem)
+               v.AddArg2(ptr0, mem)
                return true
        }
        // match: (MOVWstorezero [4] {s} (ADD ptr0 idx0) x:(MOVWstorezeroidx ptr1 idx1 mem))
@@ -14371,9 +13706,7 @@ func rewriteValueARM64_OpARM64MOVWstorezero(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64MOVDstorezeroidx)
-                       v.AddArg(ptr1)
-                       v.AddArg(idx1)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr1, idx1, mem)
                        return true
                }
                break
@@ -14402,12 +13735,10 @@ func rewriteValueARM64_OpARM64MOVWstorezero(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDstorezeroidx)
-               v.AddArg(ptr1)
                v0 := b.NewValue0(v.Pos, OpARM64SLLconst, idx1.Type)
                v0.AuxInt = 2
                v0.AddArg(idx1)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr1, v0, mem)
                return true
        }
        return false
@@ -14427,8 +13758,7 @@ func rewriteValueARM64_OpARM64MOVWstorezeroidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVWstorezero)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstorezeroidx (MOVDconst [c]) idx mem)
@@ -14442,8 +13772,7 @@ func rewriteValueARM64_OpARM64MOVWstorezeroidx(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVWstorezero)
                v.AuxInt = c
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg2(idx, mem)
                return true
        }
        // match: (MOVWstorezeroidx ptr (SLLconst [2] idx) mem)
@@ -14456,9 +13785,7 @@ func rewriteValueARM64_OpARM64MOVWstorezeroidx(v *Value) bool {
                idx := v_1.Args[0]
                mem := v_2
                v.reset(OpARM64MOVWstorezeroidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstorezeroidx (SLLconst [2] idx) ptr mem)
@@ -14471,9 +13798,7 @@ func rewriteValueARM64_OpARM64MOVWstorezeroidx(v *Value) bool {
                ptr := v_1
                mem := v_2
                v.reset(OpARM64MOVWstorezeroidx4)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWstorezeroidx ptr (ADDconst [4] idx) x:(MOVWstorezeroidx ptr idx mem))
@@ -14494,9 +13819,7 @@ func rewriteValueARM64_OpARM64MOVWstorezeroidx(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDstorezeroidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -14516,8 +13839,7 @@ func rewriteValueARM64_OpARM64MOVWstorezeroidx4(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVWstorezero)
                v.AuxInt = c << 2
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -14536,8 +13858,7 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUB a _ (MOVDconst [0]))
@@ -14561,8 +13882,7 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUB a x (MOVDconst [c]))
@@ -14580,8 +13900,7 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUB a x (MOVDconst [c]))
@@ -14598,12 +13917,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a x (MOVDconst [c]))
@@ -14620,12 +13937,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a x (MOVDconst [c]))
@@ -14643,12 +13958,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 3)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a x (MOVDconst [c]))
@@ -14666,12 +13979,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 5)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a x (MOVDconst [c]))
@@ -14689,12 +14000,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 7)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a x (MOVDconst [c]))
@@ -14712,12 +14021,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 9)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a (MOVDconst [-1]) x)
@@ -14729,8 +14036,7 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                x := v_2
                v.reset(OpARM64ADD)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUB a (MOVDconst [0]) _)
@@ -14754,8 +14060,7 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                x := v_2
                v.reset(OpARM64SUB)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUB a (MOVDconst [c]) x)
@@ -14773,8 +14078,7 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUB a (MOVDconst [c]) x)
@@ -14791,12 +14095,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a (MOVDconst [c]) x)
@@ -14813,12 +14115,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a (MOVDconst [c]) x)
@@ -14836,12 +14136,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 3)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a (MOVDconst [c]) x)
@@ -14859,12 +14157,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 5)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a (MOVDconst [c]) x)
@@ -14882,12 +14178,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 7)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB a (MOVDconst [c]) x)
@@ -14905,12 +14199,10 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 9)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUB (MOVDconst [c]) x y)
@@ -14925,8 +14217,7 @@ func rewriteValueARM64_OpARM64MSUB(v *Value) bool {
                v.reset(OpARM64ADDconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARM64MNEG, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -14968,8 +14259,7 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUBW a _ (MOVDconst [c]))
@@ -15003,8 +14293,7 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUBW a x (MOVDconst [c]))
@@ -15022,8 +14311,7 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUBW a x (MOVDconst [c]))
@@ -15040,12 +14328,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a x (MOVDconst [c]))
@@ -15062,12 +14348,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a x (MOVDconst [c]))
@@ -15085,12 +14369,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 3)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a x (MOVDconst [c]))
@@ -15108,12 +14390,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 5)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a x (MOVDconst [c]))
@@ -15131,12 +14411,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 7)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a x (MOVDconst [c]))
@@ -15154,12 +14432,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 9)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a (MOVDconst [c]) x)
@@ -15176,8 +14452,7 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUBW a (MOVDconst [c]) _)
@@ -15211,8 +14486,7 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUBW a (MOVDconst [c]) x)
@@ -15230,8 +14504,7 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c)
-               v.AddArg(a)
-               v.AddArg(x)
+               v.AddArg2(a, x)
                return true
        }
        // match: (MSUBW a (MOVDconst [c]) x)
@@ -15248,12 +14521,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUB)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = log2(c - 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a (MOVDconst [c]) x)
@@ -15270,12 +14541,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                        break
                }
                v.reset(OpARM64ADD)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = log2(c + 1)
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a (MOVDconst [c]) x)
@@ -15293,12 +14562,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 3)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a (MOVDconst [c]) x)
@@ -15316,12 +14583,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 5)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 2
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a (MOVDconst [c]) x)
@@ -15339,12 +14604,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                }
                v.reset(OpARM64ADDshiftLL)
                v.AuxInt = log2(c / 7)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64SUBshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW a (MOVDconst [c]) x)
@@ -15362,12 +14625,10 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = log2(c / 9)
-               v.AddArg(a)
                v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                v0.AuxInt = 3
-               v0.AddArg(x)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(x, x)
+               v.AddArg2(a, v0)
                return true
        }
        // match: (MSUBW (MOVDconst [c]) x y)
@@ -15382,8 +14643,7 @@ func rewriteValueARM64_OpARM64MSUBW(v *Value) bool {
                v.reset(OpARM64ADDconst)
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpARM64MNEGW, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -15420,8 +14680,7 @@ func rewriteValueARM64_OpARM64MUL(v *Value) bool {
                        x := v_0.Args[0]
                        y := v_1
                        v.reset(OpARM64MNEG)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -15503,8 +14762,7 @@ func rewriteValueARM64_OpARM64MUL(v *Value) bool {
                        }
                        v.reset(OpARM64ADDshiftLL)
                        v.AuxInt = log2(c - 1)
-                       v.AddArg(x)
-                       v.AddArg(x)
+                       v.AddArg2(x, x)
                        return true
                }
                break
@@ -15526,8 +14784,7 @@ func rewriteValueARM64_OpARM64MUL(v *Value) bool {
                        v.AuxInt = log2(c + 1)
                        v0 := b.NewValue0(v.Pos, OpARM64NEG, x.Type)
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(x)
+                       v.AddArg2(v0, x)
                        return true
                }
                break
@@ -15549,8 +14806,7 @@ func rewriteValueARM64_OpARM64MUL(v *Value) bool {
                        v.AuxInt = log2(c / 3)
                        v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v0.AuxInt = 1
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -15573,8 +14829,7 @@ func rewriteValueARM64_OpARM64MUL(v *Value) bool {
                        v.AuxInt = log2(c / 5)
                        v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v0.AuxInt = 2
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -15599,8 +14854,7 @@ func rewriteValueARM64_OpARM64MUL(v *Value) bool {
                        v0.AuxInt = 3
                        v1 := b.NewValue0(v.Pos, OpARM64NEG, x.Type)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
-                       v0.AddArg(x)
+                       v0.AddArg2(v1, x)
                        v.AddArg(v0)
                        return true
                }
@@ -15623,8 +14877,7 @@ func rewriteValueARM64_OpARM64MUL(v *Value) bool {
                        v.AuxInt = log2(c / 9)
                        v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v0.AuxInt = 3
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -15664,8 +14917,7 @@ func rewriteValueARM64_OpARM64MULW(v *Value) bool {
                        x := v_0.Args[0]
                        y := v_1
                        v.reset(OpARM64MNEGW)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -15762,8 +15014,7 @@ func rewriteValueARM64_OpARM64MULW(v *Value) bool {
                        }
                        v.reset(OpARM64ADDshiftLL)
                        v.AuxInt = log2(c - 1)
-                       v.AddArg(x)
-                       v.AddArg(x)
+                       v.AddArg2(x, x)
                        return true
                }
                break
@@ -15785,8 +15036,7 @@ func rewriteValueARM64_OpARM64MULW(v *Value) bool {
                        v.AuxInt = log2(c + 1)
                        v0 := b.NewValue0(v.Pos, OpARM64NEG, x.Type)
                        v0.AddArg(x)
-                       v.AddArg(v0)
-                       v.AddArg(x)
+                       v.AddArg2(v0, x)
                        return true
                }
                break
@@ -15808,8 +15058,7 @@ func rewriteValueARM64_OpARM64MULW(v *Value) bool {
                        v.AuxInt = log2(c / 3)
                        v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v0.AuxInt = 1
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -15832,8 +15081,7 @@ func rewriteValueARM64_OpARM64MULW(v *Value) bool {
                        v.AuxInt = log2(c / 5)
                        v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v0.AuxInt = 2
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -15858,8 +15106,7 @@ func rewriteValueARM64_OpARM64MULW(v *Value) bool {
                        v0.AuxInt = 3
                        v1 := b.NewValue0(v.Pos, OpARM64NEG, x.Type)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
-                       v0.AddArg(x)
+                       v0.AddArg2(v1, x)
                        v.AddArg(v0)
                        return true
                }
@@ -15882,8 +15129,7 @@ func rewriteValueARM64_OpARM64MULW(v *Value) bool {
                        v.AuxInt = log2(c / 9)
                        v0 := b.NewValue0(v.Pos, OpARM64ADDshiftLL, x.Type)
                        v0.AuxInt = 3
-                       v0.AddArg(x)
-                       v0.AddArg(x)
+                       v0.AddArg2(x, x)
                        v.AddArg(v0)
                        return true
                }
@@ -16037,8 +15283,7 @@ func rewriteValueARM64_OpARM64NEG(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpARM64MNEG)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (NEG (MULW x y))
@@ -16050,8 +15295,7 @@ func rewriteValueARM64_OpARM64NEG(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpARM64MNEGW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (NEG (MOVDconst [c]))
@@ -16277,8 +15521,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpARM64ORN)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -16300,8 +15543,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        v.reset(OpARM64ORshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -16323,8 +15565,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        v.reset(OpARM64ORshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -16346,8 +15587,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        v.reset(OpARM64ORshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -16415,10 +15655,9 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64ROR)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpARM64NEG, t)
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -16486,8 +15725,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64ROR)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -16556,10 +15794,9 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64RORW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpARM64NEG, t)
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -16631,8 +15868,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64RORW)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -16657,8 +15893,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        v.reset(OpARM64BFI)
                        v.AuxInt = bfc
-                       v.AddArg(y)
-                       v.AddArg(x)
+                       v.AddArg2(y, x)
                        return true
                }
                break
@@ -16683,8 +15918,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        }
                        v.reset(OpARM64BFXIL)
                        v.AuxInt = bfc
-                       v.AddArg(y)
-                       v.AddArg(x)
+                       v.AddArg2(y, x)
                        return true
                }
                break
@@ -16777,8 +16011,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        v1 := b.NewValue0(x3.Pos, OpOffPtr, p.Type)
                        v1.AuxInt = i0
                        v1.AddArg(p)
-                       v0.AddArg(v1)
-                       v0.AddArg(mem)
+                       v0.AddArg2(v1, mem)
                        return true
                }
                break
@@ -16866,9 +16099,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                v0 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
                                v.reset(OpCopy)
                                v.AddArg(v0)
-                               v0.AddArg(ptr0)
-                               v0.AddArg(idx0)
-                               v0.AddArg(mem)
+                               v0.AddArg3(ptr0, idx0, mem)
                                return true
                        }
                }
@@ -16957,9 +16188,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
                        v.reset(OpCopy)
                        v.AddArg(v0)
-                       v0.AddArg(ptr)
-                       v0.AddArg(idx)
-                       v0.AddArg(mem)
+                       v0.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -17136,8 +16365,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        v1 := b.NewValue0(x7.Pos, OpOffPtr, p.Type)
                        v1.AuxInt = i0
                        v1.AddArg(p)
-                       v0.AddArg(v1)
-                       v0.AddArg(mem)
+                       v0.AddArg2(v1, mem)
                        return true
                }
                break
@@ -17293,9 +16521,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                v0 := b.NewValue0(x6.Pos, OpARM64MOVDloadidx, t)
                                v.reset(OpCopy)
                                v.AddArg(v0)
-                               v0.AddArg(ptr0)
-                               v0.AddArg(idx0)
-                               v0.AddArg(mem)
+                               v0.AddArg3(ptr0, idx0, mem)
                                return true
                        }
                }
@@ -17468,9 +16694,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
                        v.reset(OpCopy)
                        v.AddArg(v0)
-                       v0.AddArg(ptr)
-                       v0.AddArg(idx)
-                       v0.AddArg(mem)
+                       v0.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -17564,8 +16788,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        v2 := b.NewValue0(x3.Pos, OpOffPtr, p.Type)
                        v2.AuxInt = i0
                        v2.AddArg(p)
-                       v1.AddArg(v2)
-                       v1.AddArg(mem)
+                       v1.AddArg2(v2, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -17655,9 +16878,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                v.reset(OpCopy)
                                v.AddArg(v0)
                                v1 := b.NewValue0(x3.Pos, OpARM64MOVWUloadidx, t)
-                               v1.AddArg(ptr0)
-                               v1.AddArg(idx0)
-                               v1.AddArg(mem)
+                               v1.AddArg3(ptr0, idx0, mem)
                                v0.AddArg(v1)
                                return true
                        }
@@ -17748,9 +16969,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        v.reset(OpCopy)
                        v.AddArg(v0)
                        v1 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
-                       v1.AddArg(ptr)
-                       v1.AddArg(idx)
-                       v1.AddArg(mem)
+                       v1.AddArg3(ptr, idx, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -17929,8 +17148,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        v2 := b.NewValue0(x7.Pos, OpOffPtr, p.Type)
                        v2.AuxInt = i0
                        v2.AddArg(p)
-                       v1.AddArg(v2)
-                       v1.AddArg(mem)
+                       v1.AddArg2(v2, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -18088,9 +17306,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                                v.reset(OpCopy)
                                v.AddArg(v0)
                                v1 := b.NewValue0(x7.Pos, OpARM64MOVDloadidx, t)
-                               v1.AddArg(ptr0)
-                               v1.AddArg(idx0)
-                               v1.AddArg(mem)
+                               v1.AddArg3(ptr0, idx0, mem)
                                v0.AddArg(v1)
                                return true
                        }
@@ -18265,9 +17481,7 @@ func rewriteValueARM64_OpARM64OR(v *Value) bool {
                        v.reset(OpCopy)
                        v.AddArg(v0)
                        v1 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
-                       v1.AddArg(ptr)
-                       v1.AddArg(idx)
-                       v1.AddArg(mem)
+                       v1.AddArg3(ptr, idx, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -18318,8 +17532,7 @@ func rewriteValueARM64_OpARM64ORN(v *Value) bool {
                }
                v.reset(OpARM64ORNshiftLL)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (ORN x0 x1:(SRLconst [c] y))
@@ -18338,8 +17551,7 @@ func rewriteValueARM64_OpARM64ORN(v *Value) bool {
                }
                v.reset(OpARM64ORNshiftRL)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (ORN x0 x1:(SRAconst [c] y))
@@ -18358,8 +17570,7 @@ func rewriteValueARM64_OpARM64ORN(v *Value) bool {
                }
                v.reset(OpARM64ORNshiftRA)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        return false
@@ -18657,8 +17868,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                x2 := v_1
                v.reset(OpARM64EXTRconst)
                v.AuxInt = 64 - c
-               v.AddArg(x2)
-               v.AddArg(x)
+               v.AddArg2(x2, x)
                return true
        }
        // match: ( ORshiftLL <t> [c] (UBFX [bfc] x) x2)
@@ -18678,8 +17888,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                v.reset(OpARM64EXTRWconst)
                v.AuxInt = 32 - c
-               v.AddArg(x2)
-               v.AddArg(x)
+               v.AddArg2(x2, x)
                return true
        }
        // match: (ORshiftLL [sc] (UBFX [bfc] x) (SRLconst [sc] y))
@@ -18701,8 +17910,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                }
                v.reset(OpARM64BFXIL)
                v.AuxInt = bfc
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (ORshiftLL <t> [8] y0:(MOVDnop x0:(MOVBUload [i0] {s} p mem)) y1:(MOVDnop x1:(MOVBUload [i1] {s} p mem)))
@@ -18749,8 +17957,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v1 := b.NewValue0(x1.Pos, OpOffPtr, p.Type)
                v1.AuxInt = i0
                v1.AddArg(p)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg2(v1, mem)
                return true
        }
        // match: (ORshiftLL <t> [8] y0:(MOVDnop x0:(MOVBUloadidx ptr0 idx0 mem)) y1:(MOVDnop x1:(MOVBUload [1] {s} p1:(ADD ptr1 idx1) mem)))
@@ -18799,9 +18006,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        v0 := b.NewValue0(x1.Pos, OpARM64MOVHUloadidx, t)
                        v.reset(OpCopy)
                        v.AddArg(v0)
-                       v0.AddArg(ptr0)
-                       v0.AddArg(idx0)
-                       v0.AddArg(mem)
+                       v0.AddArg3(ptr0, idx0, mem)
                        return true
                }
                break
@@ -18845,9 +18050,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64MOVHUloadidx, t)
                v.reset(OpCopy)
                v.AddArg(v0)
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (ORshiftLL <t> [24] o0:(ORshiftLL [16] x0:(MOVHUload [i0] {s} p mem) y1:(MOVDnop x1:(MOVBUload [i2] {s} p mem))) y2:(MOVDnop x2:(MOVBUload [i3] {s} p mem)))
@@ -18911,8 +18114,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v1 := b.NewValue0(x2.Pos, OpOffPtr, p.Type)
                v1.AuxInt = i0
                v1.AddArg(p)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg2(v1, mem)
                return true
        }
        // match: (ORshiftLL <t> [24] o0:(ORshiftLL [16] x0:(MOVHUloadidx ptr0 idx0 mem) y1:(MOVDnop x1:(MOVBUload [2] {s} p1:(ADD ptr1 idx1) mem))) y2:(MOVDnop x2:(MOVBUload [3] {s} p mem)))
@@ -18975,9 +18177,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        v0 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
                        v.reset(OpCopy)
                        v.AddArg(v0)
-                       v0.AddArg(ptr0)
-                       v0.AddArg(idx0)
-                       v0.AddArg(mem)
+                       v0.AddArg3(ptr0, idx0, mem)
                        return true
                }
                break
@@ -19038,9 +18238,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
                v.reset(OpCopy)
                v.AddArg(v0)
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (ORshiftLL <t> [24] o0:(ORshiftLL [16] x0:(MOVHUloadidx2 ptr0 idx0 mem) y1:(MOVDnop x1:(MOVBUload [2] {s} p1:(ADDshiftLL [1] ptr1 idx1) mem))) y2:(MOVDnop x2:(MOVBUload [3] {s} p mem)))
@@ -19099,12 +18297,10 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v0 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
                v.reset(OpCopy)
                v.AddArg(v0)
-               v0.AddArg(ptr0)
                v1 := b.NewValue0(x2.Pos, OpARM64SLLconst, idx0.Type)
                v1.AuxInt = 1
                v1.AddArg(idx0)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr0, v1, mem)
                return true
        }
        // match: (ORshiftLL <t> [56] o0:(ORshiftLL [48] o1:(ORshiftLL [40] o2:(ORshiftLL [32] x0:(MOVWUload [i0] {s} p mem) y1:(MOVDnop x1:(MOVBUload [i4] {s} p mem))) y2:(MOVDnop x2:(MOVBUload [i5] {s} p mem))) y3:(MOVDnop x3:(MOVBUload [i6] {s} p mem))) y4:(MOVDnop x4:(MOVBUload [i7] {s} p mem)))
@@ -19210,8 +18406,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v1 := b.NewValue0(x4.Pos, OpOffPtr, p.Type)
                v1.AuxInt = i0
                v1.AddArg(p)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg2(v1, mem)
                return true
        }
        // match: (ORshiftLL <t> [56] o0:(ORshiftLL [48] o1:(ORshiftLL [40] o2:(ORshiftLL [32] x0:(MOVWUloadidx ptr0 idx0 mem) y1:(MOVDnop x1:(MOVBUload [4] {s} p1:(ADD ptr1 idx1) mem))) y2:(MOVDnop x2:(MOVBUload [5] {s} p mem))) y3:(MOVDnop x3:(MOVBUload [6] {s} p mem))) y4:(MOVDnop x4:(MOVBUload [7] {s} p mem)))
@@ -19308,9 +18503,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        v0 := b.NewValue0(x4.Pos, OpARM64MOVDloadidx, t)
                        v.reset(OpCopy)
                        v.AddArg(v0)
-                       v0.AddArg(ptr0)
-                       v0.AddArg(idx0)
-                       v0.AddArg(mem)
+                       v0.AddArg3(ptr0, idx0, mem)
                        return true
                }
                break
@@ -19405,12 +18598,10 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v0 := b.NewValue0(x4.Pos, OpARM64MOVDloadidx, t)
                v.reset(OpCopy)
                v.AddArg(v0)
-               v0.AddArg(ptr0)
                v1 := b.NewValue0(x4.Pos, OpARM64SLLconst, idx0.Type)
                v1.AuxInt = 2
                v1.AddArg(idx0)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr0, v1, mem)
                return true
        }
        // match: (ORshiftLL <t> [56] o0:(ORshiftLL [48] o1:(ORshiftLL [40] o2:(ORshiftLL [32] x0:(MOVWUloadidx ptr idx mem) y1:(MOVDnop x1:(MOVBUloadidx ptr (ADDconst [4] idx) mem))) y2:(MOVDnop x2:(MOVBUloadidx ptr (ADDconst [5] idx) mem))) y3:(MOVDnop x3:(MOVBUloadidx ptr (ADDconst [6] idx) mem))) y4:(MOVDnop x4:(MOVBUloadidx ptr (ADDconst [7] idx) mem)))
@@ -19511,9 +18702,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
                v.reset(OpCopy)
                v.AddArg(v0)
-               v0.AddArg(ptr)
-               v0.AddArg(idx)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (ORshiftLL <t> [8] y0:(MOVDnop x0:(MOVBUload [i1] {s} p mem)) y1:(MOVDnop x1:(MOVBUload [i0] {s} p mem)))
@@ -19559,8 +18748,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v1 := b.NewValue0(x1.Pos, OpARM64MOVHUload, t)
                v1.AuxInt = i0
                v1.Aux = s
-               v1.AddArg(p)
-               v1.AddArg(mem)
+               v1.AddArg2(p, mem)
                v0.AddArg(v1)
                return true
        }
@@ -19611,9 +18799,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        v.reset(OpCopy)
                        v.AddArg(v0)
                        v1 := b.NewValue0(x0.Pos, OpARM64MOVHUloadidx, t)
-                       v1.AddArg(ptr0)
-                       v1.AddArg(idx0)
-                       v1.AddArg(mem)
+                       v1.AddArg3(ptr0, idx0, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -19659,9 +18845,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v.reset(OpCopy)
                v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVHUloadidx, t)
-               v1.AddArg(ptr)
-               v1.AddArg(idx)
-               v1.AddArg(mem)
+               v1.AddArg3(ptr, idx, mem)
                v0.AddArg(v1)
                return true
        }
@@ -19731,8 +18915,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v2 := b.NewValue0(x2.Pos, OpOffPtr, p.Type)
                v2.AuxInt = i0
                v2.AddArg(p)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
+               v1.AddArg2(v2, mem)
                v0.AddArg(v1)
                return true
        }
@@ -19801,9 +18984,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        v.reset(OpCopy)
                        v.AddArg(v0)
                        v1 := b.NewValue0(x1.Pos, OpARM64MOVWUloadidx, t)
-                       v1.AddArg(ptr0)
-                       v1.AddArg(idx0)
-                       v1.AddArg(mem)
+                       v1.AddArg3(ptr0, idx0, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -19870,9 +19051,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v.reset(OpCopy)
                v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
-               v1.AddArg(ptr)
-               v1.AddArg(idx)
-               v1.AddArg(mem)
+               v1.AddArg3(ptr, idx, mem)
                v0.AddArg(v1)
                return true
        }
@@ -19984,8 +19163,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v2 := b.NewValue0(x4.Pos, OpOffPtr, p.Type)
                v2.AuxInt = i0
                v2.AddArg(p)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
+               v1.AddArg2(v2, mem)
                v0.AddArg(v1)
                return true
        }
@@ -20088,9 +19266,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                        v.reset(OpCopy)
                        v.AddArg(v0)
                        v1 := b.NewValue0(x3.Pos, OpARM64MOVDloadidx, t)
-                       v1.AddArg(ptr0)
-                       v1.AddArg(idx0)
-                       v1.AddArg(mem)
+                       v1.AddArg3(ptr0, idx0, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -20199,9 +19375,7 @@ func rewriteValueARM64_OpARM64ORshiftLL(v *Value) bool {
                v.reset(OpCopy)
                v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
-               v1.AddArg(ptr)
-               v1.AddArg(idx)
-               v1.AddArg(mem)
+               v1.AddArg3(ptr, idx, mem)
                v0.AddArg(v1)
                return true
        }
@@ -20371,8 +19545,7 @@ func rewriteValueARM64_OpARM64ORshiftRL(v *Value) bool {
                }
                v.reset(OpARM64BFI)
                v.AuxInt = armBFAuxInt(lc-rc, 64-lc)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ORshiftRL [rc] (ANDconst [ac] y) (SLLconst [lc] x))
@@ -20395,8 +19568,7 @@ func rewriteValueARM64_OpARM64ORshiftRL(v *Value) bool {
                }
                v.reset(OpARM64BFXIL)
                v.AuxInt = armBFAuxInt(rc-lc, 64-rc)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        return false
@@ -20465,9 +19637,7 @@ func rewriteValueARM64_OpARM64SBCSflags(v *Value) bool {
                }
                bo := v_2_0_0_0.Args[0]
                v.reset(OpARM64SBCSflags)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(bo)
+               v.AddArg3(x, y, bo)
                return true
        }
        // match: (SBCSflags x y (Select1 <types.TypeFlags> (NEGSflags (MOVDconst [0]))))
@@ -20487,8 +19657,7 @@ func rewriteValueARM64_OpARM64SBCSflags(v *Value) bool {
                        break
                }
                v.reset(OpARM64SUBSflags)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -21043,10 +20212,7 @@ func rewriteValueARM64_OpARM64STP(v *Value) bool {
                v.reset(OpARM64STP)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val1)
-               v.AddArg(val2)
-               v.AddArg(mem)
+               v.AddArg4(ptr, val1, val2, mem)
                return true
        }
        // match: (STP [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val1 val2 mem)
@@ -21070,10 +20236,7 @@ func rewriteValueARM64_OpARM64STP(v *Value) bool {
                v.reset(OpARM64STP)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val1)
-               v.AddArg(val2)
-               v.AddArg(mem)
+               v.AddArg4(ptr, val1, val2, mem)
                return true
        }
        // match: (STP [off] {sym} ptr (MOVDconst [0]) (MOVDconst [0]) mem)
@@ -21089,8 +20252,7 @@ func rewriteValueARM64_OpARM64STP(v *Value) bool {
                v.reset(OpARM64MOVQstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -21127,9 +20289,7 @@ func rewriteValueARM64_OpARM64SUB(v *Value) bool {
                        break
                }
                v.reset(OpARM64MSUB)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (SUB a l:(MNEG x y))
@@ -21147,9 +20307,7 @@ func rewriteValueARM64_OpARM64SUB(v *Value) bool {
                        break
                }
                v.reset(OpARM64MADD)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (SUB a l:(MULW x y))
@@ -21165,11 +20323,9 @@ func rewriteValueARM64_OpARM64SUB(v *Value) bool {
                x := l.Args[0]
                if !(a.Type.Size() != 8 && l.Uses == 1 && clobber(l)) {
                        break
-               }
-               v.reset(OpARM64MSUBW)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               }
+               v.reset(OpARM64MSUBW)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (SUB a l:(MNEGW x y))
@@ -21187,9 +20343,7 @@ func rewriteValueARM64_OpARM64SUB(v *Value) bool {
                        break
                }
                v.reset(OpARM64MADDW)
-               v.AddArg(a)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(a, x, y)
                return true
        }
        // match: (SUB x x)
@@ -21214,10 +20368,8 @@ func rewriteValueARM64_OpARM64SUB(v *Value) bool {
                y := v_1.Args[0]
                v.reset(OpARM64SUB)
                v0 := b.NewValue0(v.Pos, OpARM64ADD, v.Type)
-               v0.AddArg(x)
-               v0.AddArg(z)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v0.AddArg2(x, z)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (SUB (SUB x y) z)
@@ -21230,11 +20382,9 @@ func rewriteValueARM64_OpARM64SUB(v *Value) bool {
                x := v_0.Args[0]
                z := v_1
                v.reset(OpARM64SUB)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpARM64ADD, y.Type)
-               v0.AddArg(y)
-               v0.AddArg(z)
-               v.AddArg(v0)
+               v0.AddArg2(y, z)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SUB x0 x1:(SLLconst [c] y))
@@ -21253,8 +20403,7 @@ func rewriteValueARM64_OpARM64SUB(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftLL)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (SUB x0 x1:(SRLconst [c] y))
@@ -21273,8 +20422,7 @@ func rewriteValueARM64_OpARM64SUB(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftRL)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        // match: (SUB x0 x1:(SRAconst [c] y))
@@ -21293,8 +20441,7 @@ func rewriteValueARM64_OpARM64SUB(v *Value) bool {
                }
                v.reset(OpARM64SUBshiftRA)
                v.AuxInt = c
-               v.AddArg(x0)
-               v.AddArg(y)
+               v.AddArg2(x0, y)
                return true
        }
        return false
@@ -21499,8 +20646,7 @@ func rewriteValueARM64_OpARM64TST(v *Value) bool {
                        }
                        v.reset(OpARM64TSTshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -21522,8 +20668,7 @@ func rewriteValueARM64_OpARM64TST(v *Value) bool {
                        }
                        v.reset(OpARM64TSTshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -21545,8 +20690,7 @@ func rewriteValueARM64_OpARM64TST(v *Value) bool {
                        }
                        v.reset(OpARM64TSTshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -21999,12 +21143,9 @@ func rewriteValueARM64_OpARM64UMOD(v *Value) bool {
                y := v_1
                v.reset(OpARM64MSUB)
                v.Type = typ.UInt64
-               v.AddArg(x)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpARM64UDIV, typ.UInt64)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
+               v.AddArg3(x, y, v0)
                return true
        }
        // match: (UMOD _ (MOVDconst [1]))
@@ -22066,12 +21207,9 @@ func rewriteValueARM64_OpARM64UMODW(v *Value) bool {
                y := v_1
                v.reset(OpARM64MSUBW)
                v.Type = typ.UInt32
-               v.AddArg(x)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpARM64UDIVW, typ.UInt32)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
+               v.AddArg3(x, y, v0)
                return true
        }
        // match: (UMODW _ (MOVDconst [c]))
@@ -22165,8 +21303,7 @@ func rewriteValueARM64_OpARM64XOR(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpARM64EON)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -22188,8 +21325,7 @@ func rewriteValueARM64_OpARM64XOR(v *Value) bool {
                        }
                        v.reset(OpARM64XORshiftLL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -22211,8 +21347,7 @@ func rewriteValueARM64_OpARM64XOR(v *Value) bool {
                        }
                        v.reset(OpARM64XORshiftRL)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -22234,8 +21369,7 @@ func rewriteValueARM64_OpARM64XOR(v *Value) bool {
                        }
                        v.reset(OpARM64XORshiftRA)
                        v.AuxInt = c
-                       v.AddArg(x0)
-                       v.AddArg(y)
+                       v.AddArg2(x0, y)
                        return true
                }
                break
@@ -22303,10 +21437,9 @@ func rewriteValueARM64_OpARM64XOR(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64ROR)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpARM64NEG, t)
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -22374,8 +21507,7 @@ func rewriteValueARM64_OpARM64XOR(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64ROR)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -22444,10 +21576,9 @@ func rewriteValueARM64_OpARM64XOR(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64RORW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpARM64NEG, t)
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -22519,8 +21650,7 @@ func rewriteValueARM64_OpARM64XOR(v *Value) bool {
                                continue
                        }
                        v.reset(OpARM64RORW)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -22693,8 +21823,7 @@ func rewriteValueARM64_OpARM64XORshiftLL(v *Value) bool {
                x2 := v_1
                v.reset(OpARM64EXTRconst)
                v.AuxInt = 64 - c
-               v.AddArg(x2)
-               v.AddArg(x)
+               v.AddArg2(x2, x)
                return true
        }
        // match: (XORshiftLL <t> [c] (UBFX [bfc] x) x2)
@@ -22714,8 +21843,7 @@ func rewriteValueARM64_OpARM64XORshiftLL(v *Value) bool {
                }
                v.reset(OpARM64EXTRWconst)
                v.AuxInt = 32 - c
-               v.AddArg(x2)
-               v.AddArg(x)
+               v.AddArg2(x2, x)
                return true
        }
        return false
@@ -22876,9 +22004,7 @@ func rewriteValueARM64_OpAtomicAnd8(v *Value) bool {
                mem := v_2
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpARM64LoweredAtomicAnd8, types.NewTuple(typ.UInt8, types.TypeMem))
-               v0.AddArg(ptr)
-               v0.AddArg(val)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, val, mem)
                v.AddArg(v0)
                return true
        }
@@ -22897,9 +22023,7 @@ func rewriteValueARM64_OpAtomicOr8(v *Value) bool {
                mem := v_2
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpARM64LoweredAtomicOr8, types.NewTuple(typ.UInt8, types.TypeMem))
-               v0.AddArg(ptr)
-               v0.AddArg(val)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, val, mem)
                v.AddArg(v0)
                return true
        }
@@ -22918,11 +22042,9 @@ func rewriteValueARM64_OpAvg64u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRLconst, t)
                v0.AuxInt = 1
                v1 := b.NewValue0(v.Pos, OpARM64SUB, t)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -22937,10 +22059,9 @@ func rewriteValueARM64_OpBitLen32(v *Value) bool {
                v.reset(OpARM64SUB)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 32
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CLZW, typ.Int)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -22955,10 +22076,9 @@ func rewriteValueARM64_OpBitLen64(v *Value) bool {
                v.reset(OpARM64SUB)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 64
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CLZ, typ.Int)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -23011,9 +22131,7 @@ func rewriteValueARM64_OpCondSelect(v *Value) bool {
                }
                v.reset(OpARM64CSEL)
                v.Aux = boolval.Op
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(flagArg(boolval))
+               v.AddArg3(x, y, flagArg(boolval))
                return true
        }
        // match: (CondSelect x y boolval)
@@ -23028,12 +22146,10 @@ func rewriteValueARM64_OpCondSelect(v *Value) bool {
                }
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64NotEqual
-               v.AddArg(x)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpARM64CMPWconst, types.TypeFlags)
                v0.AuxInt = 0
                v0.AddArg(boolval)
-               v.AddArg(v0)
+               v.AddArg3(x, y, v0)
                return true
        }
        return false
@@ -23130,10 +22246,9 @@ func rewriteValueARM64_OpDiv16(v *Value) bool {
                v.reset(OpARM64DIVW)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -23150,10 +22265,9 @@ func rewriteValueARM64_OpDiv16u(v *Value) bool {
                v.reset(OpARM64UDIVW)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -23170,10 +22284,9 @@ func rewriteValueARM64_OpDiv8(v *Value) bool {
                v.reset(OpARM64DIVW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -23190,10 +22303,9 @@ func rewriteValueARM64_OpDiv8u(v *Value) bool {
                v.reset(OpARM64UDIVW)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -23211,10 +22323,9 @@ func rewriteValueARM64_OpEq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -23230,8 +22341,7 @@ func rewriteValueARM64_OpEq32(v *Value) bool {
                y := v_1
                v.reset(OpARM64Equal)
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23247,8 +22357,7 @@ func rewriteValueARM64_OpEq32F(v *Value) bool {
                y := v_1
                v.reset(OpARM64Equal)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23264,8 +22373,7 @@ func rewriteValueARM64_OpEq64(v *Value) bool {
                y := v_1
                v.reset(OpARM64Equal)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23281,8 +22389,7 @@ func rewriteValueARM64_OpEq64F(v *Value) bool {
                y := v_1
                v.reset(OpARM64Equal)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23301,10 +22408,9 @@ func rewriteValueARM64_OpEq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -23322,11 +22428,9 @@ func rewriteValueARM64_OpEqB(v *Value) bool {
                v.reset(OpARM64XOR)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64XOR, typ.Bool)
-               v1.AddArg(x)
-               v1.AddArg(y)
-               v.AddArg(v1)
+               v1.AddArg2(x, y)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -23341,8 +22445,7 @@ func rewriteValueARM64_OpEqPtr(v *Value) bool {
                y := v_1
                v.reset(OpARM64Equal)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23358,9 +22461,7 @@ func rewriteValueARM64_OpFMA(v *Value) bool {
                y := v_1
                z := v_2
                v.reset(OpARM64FMADDD)
-               v.AddArg(z)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(z, x, y)
                return true
        }
 }
@@ -23375,8 +22476,7 @@ func rewriteValueARM64_OpGeq32F(v *Value) bool {
                y := v_1
                v.reset(OpARM64GreaterEqualF)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23392,8 +22492,7 @@ func rewriteValueARM64_OpGeq64F(v *Value) bool {
                y := v_1
                v.reset(OpARM64GreaterEqualF)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23409,8 +22508,7 @@ func rewriteValueARM64_OpGreater32F(v *Value) bool {
                y := v_1
                v.reset(OpARM64GreaterThanF)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23426,8 +22524,7 @@ func rewriteValueARM64_OpGreater64F(v *Value) bool {
                y := v_1
                v.reset(OpARM64GreaterThanF)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23445,8 +22542,7 @@ func rewriteValueARM64_OpHmul32(v *Value) bool {
                v.reset(OpARM64SRAconst)
                v.AuxInt = 32
                v0 := b.NewValue0(v.Pos, OpARM64MULL, typ.Int64)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23464,8 +22560,7 @@ func rewriteValueARM64_OpHmul32u(v *Value) bool {
                v.reset(OpARM64SRAconst)
                v.AuxInt = 32
                v0 := b.NewValue0(v.Pos, OpARM64UMULL, typ.UInt64)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23481,8 +22576,7 @@ func rewriteValueARM64_OpIsInBounds(v *Value) bool {
                len := v_1
                v.reset(OpARM64LessThanU)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -23513,8 +22607,7 @@ func rewriteValueARM64_OpIsSliceInBounds(v *Value) bool {
                len := v_1
                v.reset(OpARM64LessEqualU)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -23533,10 +22626,9 @@ func rewriteValueARM64_OpLeq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -23555,10 +22647,9 @@ func rewriteValueARM64_OpLeq16U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -23574,8 +22665,7 @@ func rewriteValueARM64_OpLeq32(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessEqual)
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23591,8 +22681,7 @@ func rewriteValueARM64_OpLeq32F(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessEqualF)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23608,8 +22697,7 @@ func rewriteValueARM64_OpLeq32U(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessEqualU)
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23625,8 +22713,7 @@ func rewriteValueARM64_OpLeq64(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessEqual)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23642,8 +22729,7 @@ func rewriteValueARM64_OpLeq64F(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessEqualF)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23659,8 +22745,7 @@ func rewriteValueARM64_OpLeq64U(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessEqualU)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23679,10 +22764,9 @@ func rewriteValueARM64_OpLeq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -23701,10 +22785,9 @@ func rewriteValueARM64_OpLeq8U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -23723,10 +22806,9 @@ func rewriteValueARM64_OpLess16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -23745,10 +22827,9 @@ func rewriteValueARM64_OpLess16U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -23764,8 +22845,7 @@ func rewriteValueARM64_OpLess32(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessThan)
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23781,8 +22861,7 @@ func rewriteValueARM64_OpLess32F(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessThanF)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23798,8 +22877,7 @@ func rewriteValueARM64_OpLess32U(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessThanU)
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23815,8 +22893,7 @@ func rewriteValueARM64_OpLess64(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessThan)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23832,8 +22909,7 @@ func rewriteValueARM64_OpLess64F(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessThanF)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23849,8 +22925,7 @@ func rewriteValueARM64_OpLess64U(v *Value) bool {
                y := v_1
                v.reset(OpARM64LessThanU)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -23869,10 +22944,9 @@ func rewriteValueARM64_OpLess8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -23891,10 +22965,9 @@ func rewriteValueARM64_OpLess8U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -23913,8 +22986,7 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVBUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -23928,8 +23000,7 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVBload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -23943,8 +23014,7 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVBUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -23958,8 +23028,7 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -23973,8 +23042,7 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -23988,8 +23056,7 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -24003,8 +23070,7 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -24018,8 +23084,7 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -24033,8 +23098,7 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARM64FMOVSload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -24048,8 +23112,7 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpARM64FMOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -24081,20 +23144,17 @@ func rewriteValueARM64_OpLsh16x16(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24112,20 +23172,17 @@ func rewriteValueARM64_OpLsh16x32(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24142,16 +23199,13 @@ func rewriteValueARM64_OpLsh16x64(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpConst64, t)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -24169,20 +23223,17 @@ func rewriteValueARM64_OpLsh16x8(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24200,20 +23251,17 @@ func rewriteValueARM64_OpLsh32x16(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24231,20 +23279,17 @@ func rewriteValueARM64_OpLsh32x32(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24261,16 +23306,13 @@ func rewriteValueARM64_OpLsh32x64(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpConst64, t)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -24288,20 +23330,17 @@ func rewriteValueARM64_OpLsh32x8(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24319,20 +23358,17 @@ func rewriteValueARM64_OpLsh64x16(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24350,20 +23386,17 @@ func rewriteValueARM64_OpLsh64x32(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24380,16 +23413,13 @@ func rewriteValueARM64_OpLsh64x64(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpConst64, t)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -24407,20 +23437,17 @@ func rewriteValueARM64_OpLsh64x8(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24438,20 +23465,17 @@ func rewriteValueARM64_OpLsh8x16(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24469,20 +23493,17 @@ func rewriteValueARM64_OpLsh8x32(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24499,16 +23520,13 @@ func rewriteValueARM64_OpLsh8x64(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpConst64, t)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -24526,20 +23544,17 @@ func rewriteValueARM64_OpLsh8x8(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -24556,10 +23571,9 @@ func rewriteValueARM64_OpMod16(v *Value) bool {
                v.reset(OpARM64MODW)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -24576,10 +23590,9 @@ func rewriteValueARM64_OpMod16u(v *Value) bool {
                v.reset(OpARM64UMODW)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -24596,10 +23609,9 @@ func rewriteValueARM64_OpMod8(v *Value) bool {
                v.reset(OpARM64MODW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -24616,10 +23628,9 @@ func rewriteValueARM64_OpMod8u(v *Value) bool {
                v.reset(OpARM64UMODW)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -24652,12 +23663,9 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpARM64MOVBstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVBUload, typ.UInt8)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] dst src mem)
@@ -24670,12 +23678,9 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpARM64MOVHstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVHUload, typ.UInt16)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [4] dst src mem)
@@ -24688,12 +23693,9 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpARM64MOVWstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVWUload, typ.UInt32)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [8] dst src mem)
@@ -24706,12 +23708,9 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpARM64MOVDstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDload, typ.UInt64)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [3] dst src mem)
@@ -24725,20 +23724,14 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVBstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVBUload, typ.UInt8)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARM64MOVHstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARM64MOVHUload, typ.UInt16)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [5] dst src mem)
@@ -24752,20 +23745,14 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVBstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVBUload, typ.UInt8)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARM64MOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARM64MOVWUload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [6] dst src mem)
@@ -24779,20 +23766,14 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVHstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVHUload, typ.UInt16)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARM64MOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARM64MOVWUload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [7] dst src mem)
@@ -24806,29 +23787,20 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVBstore)
                v.AuxInt = 6
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVBUload, typ.UInt8)
                v0.AuxInt = 6
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARM64MOVHstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARM64MOVHUload, typ.UInt16)
                v2.AuxInt = 4
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpARM64MOVWstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpARM64MOVWUload, typ.UInt32)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [12] dst src mem)
@@ -24842,20 +23814,14 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVWstore)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVWUload, typ.UInt32)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDload, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [16] dst src mem)
@@ -24869,20 +23835,14 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVDstore)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDload, typ.UInt64)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDload, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [24] dst src mem)
@@ -24896,29 +23856,20 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpARM64MOVDstore)
                v.AuxInt = 16
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDload, typ.UInt64)
                v0.AuxInt = 16
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDload, typ.UInt64)
                v2.AuxInt = 8
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpARM64MOVDload, typ.UInt64)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -24937,17 +23888,13 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, dst.Type)
                v0.AuxInt = s - s%8
                v0.AddArg(dst)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, src.Type)
                v1.AuxInt = s - s%8
                v1.AddArg(src)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMove, types.TypeMem)
                v2.AuxInt = s - s%8
-               v2.AddArg(dst)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg3(dst, src, mem)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -24963,18 +23910,13 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                }
                v.reset(OpARM64MOVDstore)
                v.AuxInt = s - 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDload, typ.UInt64)
                v0.AuxInt = s - 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpARM64DUFFCOPY, types.TypeMem)
                v1.AuxInt = 8 * (64 - (s-8)/16)
-               v1.AddArg(dst)
-               v1.AddArg(src)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(dst, src, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -24990,9 +23932,7 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                }
                v.reset(OpARM64DUFFCOPY)
                v.AuxInt = 8 * (64 - s/16)
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -25007,13 +23947,10 @@ func rewriteValueARM64_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpARM64LoweredMove)
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpARM64ADDconst, src.Type)
                v0.AuxInt = s - 8
                v0.AddArg(src)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(dst, src, v0, mem)
                return true
        }
        return false
@@ -25032,10 +23969,9 @@ func rewriteValueARM64_OpNeq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -25051,8 +23987,7 @@ func rewriteValueARM64_OpNeq32(v *Value) bool {
                y := v_1
                v.reset(OpARM64NotEqual)
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -25068,8 +24003,7 @@ func rewriteValueARM64_OpNeq32F(v *Value) bool {
                y := v_1
                v.reset(OpARM64NotEqual)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPS, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -25085,8 +24019,7 @@ func rewriteValueARM64_OpNeq64(v *Value) bool {
                y := v_1
                v.reset(OpARM64NotEqual)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -25102,8 +24035,7 @@ func rewriteValueARM64_OpNeq64F(v *Value) bool {
                y := v_1
                v.reset(OpARM64NotEqual)
                v0 := b.NewValue0(v.Pos, OpARM64FCMPD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -25122,10 +24054,9 @@ func rewriteValueARM64_OpNeq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -25141,8 +24072,7 @@ func rewriteValueARM64_OpNeqPtr(v *Value) bool {
                y := v_1
                v.reset(OpARM64NotEqual)
                v0 := b.NewValue0(v.Pos, OpARM64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -25158,8 +24088,7 @@ func rewriteValueARM64_OpNot(v *Value) bool {
                v.reset(OpARM64XOR)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -25206,9 +24135,7 @@ func rewriteValueARM64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpARM64LoweredPanicBoundsA)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -25224,9 +24151,7 @@ func rewriteValueARM64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpARM64LoweredPanicBoundsB)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -25242,9 +24167,7 @@ func rewriteValueARM64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpARM64LoweredPanicBoundsC)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        return false
@@ -25332,17 +24255,14 @@ func rewriteValueARM64_OpRotateLeft16(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr16)
                v0 := b.NewValue0(v.Pos, OpLsh16x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v1.AuxInt = c & 15
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh16Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v3.AuxInt = -c & 15
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -25357,10 +24277,9 @@ func rewriteValueARM64_OpRotateLeft32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARM64RORW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpARM64NEG, y.Type)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -25374,10 +24293,9 @@ func rewriteValueARM64_OpRotateLeft64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARM64ROR)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpARM64NEG, y.Type)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -25397,17 +24315,14 @@ func rewriteValueARM64_OpRotateLeft8(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr8)
                v0 := b.NewValue0(v.Pos, OpLsh8x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v1.AuxInt = c & 7
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh8Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v3.AuxInt = -c & 7
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -25428,20 +24343,17 @@ func rewriteValueARM64_OpRsh16Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -25461,20 +24373,17 @@ func rewriteValueARM64_OpRsh16Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -25494,16 +24403,13 @@ func rewriteValueARM64_OpRsh16Ux64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -25523,20 +24429,17 @@ func rewriteValueARM64_OpRsh16Ux8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -25553,22 +24456,19 @@ func rewriteValueARM64_OpRsh16x16(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v3.AuxInt = 63
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -25585,22 +24485,19 @@ func rewriteValueARM64_OpRsh16x32(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v3.AuxInt = 63
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -25617,18 +24514,15 @@ func rewriteValueARM64_OpRsh16x64(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -25645,22 +24539,19 @@ func rewriteValueARM64_OpRsh16x8(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v3.AuxInt = 63
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -25680,20 +24571,17 @@ func rewriteValueARM64_OpRsh32Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -25713,20 +24601,17 @@ func rewriteValueARM64_OpRsh32Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -25746,16 +24631,13 @@ func rewriteValueARM64_OpRsh32Ux64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -25775,20 +24657,17 @@ func rewriteValueARM64_OpRsh32Ux8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -25805,22 +24684,19 @@ func rewriteValueARM64_OpRsh32x16(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v3.AuxInt = 63
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -25837,22 +24713,19 @@ func rewriteValueARM64_OpRsh32x32(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v3.AuxInt = 63
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -25869,18 +24742,15 @@ func rewriteValueARM64_OpRsh32x64(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -25897,22 +24767,19 @@ func rewriteValueARM64_OpRsh32x8(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v3.AuxInt = 63
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -25930,20 +24797,17 @@ func rewriteValueARM64_OpRsh64Ux16(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -25961,20 +24825,17 @@ func rewriteValueARM64_OpRsh64Ux32(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -25991,16 +24852,13 @@ func rewriteValueARM64_OpRsh64Ux64(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpConst64, t)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -26018,20 +24876,17 @@ func rewriteValueARM64_OpRsh64Ux8(v *Value) bool {
                v.reset(OpARM64CSEL)
                v.Aux = OpARM64LessThanU
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -26046,22 +24901,19 @@ func rewriteValueARM64_OpRsh64x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARM64SRA)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v0.Aux = OpARM64LessThanU
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v2.AuxInt = 63
-               v0.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg3(v1, v2, v3)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -26076,22 +24928,19 @@ func rewriteValueARM64_OpRsh64x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARM64SRA)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v0.Aux = OpARM64LessThanU
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v2.AuxInt = 63
-               v0.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg3(v1, v2, v3)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -26105,18 +24954,15 @@ func rewriteValueARM64_OpRsh64x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARM64SRA)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v0.Aux = OpARM64LessThanU
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v1.AuxInt = 63
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -26131,22 +24977,19 @@ func rewriteValueARM64_OpRsh64x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpARM64SRA)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v0.Aux = OpARM64LessThanU
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v2.AuxInt = 63
-               v0.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg3(v1, v2, v3)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -26166,20 +25009,17 @@ func rewriteValueARM64_OpRsh8Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -26199,20 +25039,17 @@ func rewriteValueARM64_OpRsh8Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -26232,16 +25069,13 @@ func rewriteValueARM64_OpRsh8Ux64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -26261,20 +25095,17 @@ func rewriteValueARM64_OpRsh8Ux8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -26291,22 +25122,19 @@ func rewriteValueARM64_OpRsh8x16(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v3.AuxInt = 63
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -26323,22 +25151,19 @@ func rewriteValueARM64_OpRsh8x32(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v3.AuxInt = 63
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -26355,18 +25180,15 @@ func rewriteValueARM64_OpRsh8x64(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -26383,22 +25205,19 @@ func rewriteValueARM64_OpRsh8x8(v *Value) bool {
                v.reset(OpARM64SRA)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64CSEL, y.Type)
                v1.Aux = OpARM64LessThanU
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpConst64, y.Type)
                v3.AuxInt = 63
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64CMPconst, types.TypeFlags)
                v4.AuxInt = 64
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -26418,14 +25237,12 @@ func rewriteValueARM64_OpSelect0(v *Value) bool {
                v.reset(OpSelect0)
                v.Type = typ.UInt64
                v0 := b.NewValue0(v.Pos, OpARM64ADCSflags, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v0.AddArg(x)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v2 := b.NewValue0(v.Pos, OpARM64ADDSconstflags, types.NewTuple(typ.UInt64, types.TypeFlags))
                v2.AuxInt = -1
                v2.AddArg(c)
                v1.AddArg(v2)
-               v0.AddArg(v1)
+               v0.AddArg3(x, y, v1)
                v.AddArg(v0)
                return true
        }
@@ -26441,13 +25258,11 @@ func rewriteValueARM64_OpSelect0(v *Value) bool {
                v.reset(OpSelect0)
                v.Type = typ.UInt64
                v0 := b.NewValue0(v.Pos, OpARM64SBCSflags, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v0.AddArg(x)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v2 := b.NewValue0(v.Pos, OpARM64NEGSflags, types.NewTuple(typ.UInt64, types.TypeFlags))
                v2.AddArg(bo)
                v1.AddArg(v2)
-               v0.AddArg(v1)
+               v0.AddArg3(x, y, v1)
                v.AddArg(v0)
                return true
        }
@@ -26470,14 +25285,12 @@ func rewriteValueARM64_OpSelect1(v *Value) bool {
                v.Type = typ.UInt64
                v0 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpARM64ADCSflags, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v1.AddArg(x)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpARM64ADDSconstflags, types.NewTuple(typ.UInt64, types.TypeFlags))
                v3.AuxInt = -1
                v3.AddArg(c)
                v2.AddArg(v3)
-               v1.AddArg(v2)
+               v1.AddArg3(x, y, v2)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -26496,13 +25309,11 @@ func rewriteValueARM64_OpSelect1(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpARM64NGCzerocarry, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v2 := b.NewValue0(v.Pos, OpARM64SBCSflags, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v2.AddArg(x)
-               v2.AddArg(y)
                v3 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v4 := b.NewValue0(v.Pos, OpARM64NEGSflags, types.NewTuple(typ.UInt64, types.TypeFlags))
                v4.AddArg(bo)
                v3.AddArg(v4)
-               v2.AddArg(v3)
+               v2.AddArg3(x, y, v3)
                v1.AddArg(v2)
                v0.AddArg(v1)
                v.AddArg(v0)
@@ -26542,9 +25353,7 @@ func rewriteValueARM64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVBstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -26559,9 +25368,7 @@ func rewriteValueARM64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVHstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -26576,9 +25383,7 @@ func rewriteValueARM64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVWstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -26593,9 +25398,7 @@ func rewriteValueARM64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARM64MOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -26610,9 +25413,7 @@ func rewriteValueARM64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARM64FMOVSstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -26627,9 +25428,7 @@ func rewriteValueARM64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpARM64FMOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -26661,11 +25460,9 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpARM64MOVBstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [2] ptr mem)
@@ -26677,11 +25474,9 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpARM64MOVHstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [4] ptr mem)
@@ -26693,11 +25488,9 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpARM64MOVWstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [8] ptr mem)
@@ -26709,11 +25502,9 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpARM64MOVDstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [3] ptr mem)
@@ -26726,17 +25517,13 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVBstore)
                v.AuxInt = 2
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVHstore, types.TypeMem)
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [5] ptr mem)
@@ -26749,17 +25536,13 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVBstore)
                v.AuxInt = 4
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVWstore, types.TypeMem)
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [6] ptr mem)
@@ -26772,17 +25555,13 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVHstore)
                v.AuxInt = 4
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVWstore, types.TypeMem)
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [7] ptr mem)
@@ -26795,24 +25574,18 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVBstore)
                v.AuxInt = 6
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVHstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64MOVWstore, types.TypeMem)
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [9] ptr mem)
@@ -26825,17 +25598,13 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVBstore)
                v.AuxInt = 8
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [10] ptr mem)
@@ -26848,17 +25617,13 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVHstore)
                v.AuxInt = 8
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [11] ptr mem)
@@ -26871,24 +25636,18 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVBstore)
                v.AuxInt = 10
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVHstore, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [12] ptr mem)
@@ -26901,17 +25660,13 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVWstore)
                v.AuxInt = 8
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [13] ptr mem)
@@ -26924,24 +25679,18 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVBstore)
                v.AuxInt = 12
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVWstore, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [14] ptr mem)
@@ -26954,24 +25703,18 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVHstore)
                v.AuxInt = 12
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVWstore, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [15] ptr mem)
@@ -26984,31 +25727,23 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64MOVBstore)
                v.AuxInt = 14
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVHstore, types.TypeMem)
                v1.AuxInt = 12
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpARM64MOVWstore, types.TypeMem)
                v3.AuxInt = 8
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpARM64MOVDstore, types.TypeMem)
-               v5.AddArg(ptr)
                v6 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v6.AuxInt = 0
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg3(ptr, v6, mem)
+               v3.AddArg3(ptr, v4, v5)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [16] ptr mem)
@@ -27021,14 +25756,11 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64STP)
                v.AuxInt = 0
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
-               v.AddArg(mem)
+               v.AddArg4(ptr, v0, v1, mem)
                return true
        }
        // match: (Zero [32] ptr mem)
@@ -27041,24 +25773,18 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64STP)
                v.AuxInt = 16
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARM64STP, types.TypeMem)
                v2.AuxInt = 0
-               v2.AddArg(ptr)
                v3 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v3.AuxInt = 0
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v4.AuxInt = 0
-               v2.AddArg(v4)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg4(ptr, v3, v4, mem)
+               v.AddArg4(ptr, v0, v1, v2)
                return true
        }
        // match: (Zero [48] ptr mem)
@@ -27071,34 +25797,25 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64STP)
                v.AuxInt = 32
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARM64STP, types.TypeMem)
                v2.AuxInt = 16
-               v2.AddArg(ptr)
                v3 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v3.AuxInt = 0
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v4.AuxInt = 0
-               v2.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpARM64STP, types.TypeMem)
                v5.AuxInt = 0
-               v5.AddArg(ptr)
                v6 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v6.AuxInt = 0
-               v5.AddArg(v6)
                v7 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v7.AuxInt = 0
-               v5.AddArg(v7)
-               v5.AddArg(mem)
-               v2.AddArg(v5)
-               v.AddArg(v2)
+               v5.AddArg4(ptr, v6, v7, mem)
+               v2.AddArg4(ptr, v3, v4, v5)
+               v.AddArg4(ptr, v0, v1, v2)
                return true
        }
        // match: (Zero [64] ptr mem)
@@ -27111,44 +25828,32 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpARM64STP)
                v.AuxInt = 48
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpARM64STP, types.TypeMem)
                v2.AuxInt = 32
-               v2.AddArg(ptr)
                v3 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v3.AuxInt = 0
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v4.AuxInt = 0
-               v2.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpARM64STP, types.TypeMem)
                v5.AuxInt = 16
-               v5.AddArg(ptr)
                v6 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v6.AuxInt = 0
-               v5.AddArg(v6)
                v7 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v7.AuxInt = 0
-               v5.AddArg(v7)
                v8 := b.NewValue0(v.Pos, OpARM64STP, types.TypeMem)
                v8.AuxInt = 0
-               v8.AddArg(ptr)
                v9 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v9.AuxInt = 0
-               v8.AddArg(v9)
                v10 := b.NewValue0(v.Pos, OpARM64MOVDconst, typ.UInt64)
                v10.AuxInt = 0
-               v8.AddArg(v10)
-               v8.AddArg(mem)
-               v5.AddArg(v8)
-               v2.AddArg(v5)
-               v.AddArg(v2)
+               v8.AddArg4(ptr, v9, v10, mem)
+               v5.AddArg4(ptr, v6, v7, v8)
+               v2.AddArg4(ptr, v3, v4, v5)
+               v.AddArg4(ptr, v0, v1, v2)
                return true
        }
        // match: (Zero [s] ptr mem)
@@ -27166,12 +25871,10 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, ptr.Type)
                v0.AuxInt = s - 8
                v0.AddArg(ptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZero, types.TypeMem)
                v1.AuxInt = s - s%16
-               v1.AddArg(ptr)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(ptr, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Zero [s] ptr mem)
@@ -27189,12 +25892,10 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, ptr.Type)
                v0.AuxInt = s - 16
                v0.AddArg(ptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZero, types.TypeMem)
                v1.AuxInt = s - s%16
-               v1.AddArg(ptr)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(ptr, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Zero [s] ptr mem)
@@ -27209,8 +25910,7 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                }
                v.reset(OpARM64DUFFZERO)
                v.AuxInt = 4 * (64 - s/16)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Zero [s] ptr mem)
@@ -27224,12 +25924,10 @@ func rewriteValueARM64_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpARM64LoweredZero)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpARM64ADDconst, ptr.Type)
                v0.AuxInt = s - 16
                v0.AddArg(ptr)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -27284,8 +25982,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64EQ)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -27314,8 +26011,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64EQ)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TSTW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -27416,8 +26112,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64EQ)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -27446,8 +26141,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64EQ)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -27470,8 +26164,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64EQ)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -27492,8 +26185,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64EQ)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -27541,11 +26233,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64EQ)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -27569,11 +26259,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64EQ)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -27597,11 +26285,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64EQ)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -27625,11 +26311,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64EQ)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMPW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -27794,8 +26478,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64GE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -27824,8 +26507,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64GE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TSTW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -27926,8 +26608,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64GE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -27956,8 +26637,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64GE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -27980,8 +26660,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -28002,8 +26681,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -28027,11 +26705,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -28055,11 +26731,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -28083,11 +26757,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -28111,11 +26783,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMPW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -28234,8 +26904,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64GT)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -28264,8 +26933,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64GT)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TSTW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -28366,8 +27034,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64GT)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -28396,8 +27063,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64GT)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -28420,8 +27086,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -28442,8 +27107,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -28467,11 +27131,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -28495,11 +27157,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -28523,11 +27183,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -28551,11 +27209,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64GT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMPW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -28784,8 +27440,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64LE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -28814,8 +27469,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64LE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TSTW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -28916,8 +27570,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64LE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -28946,8 +27599,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64LE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -28970,8 +27622,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -28992,8 +27643,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -29017,11 +27667,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29045,11 +27693,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29073,11 +27719,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29101,11 +27745,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMPW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29198,8 +27840,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64LT)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -29228,8 +27869,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64LT)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TSTW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -29330,8 +27970,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64LT)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -29360,8 +27999,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64LT)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -29384,8 +28022,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -29406,8 +28043,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -29431,11 +28067,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29459,11 +28093,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29487,11 +28119,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29515,11 +28145,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64LT)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMPW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29639,8 +28267,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64NE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TST, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -29669,8 +28296,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64NE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64TSTW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -29771,8 +28397,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64NE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -29801,8 +28426,7 @@ func rewriteBlockARM64(b *Block) bool {
                                }
                                b.Reset(BlockARM64NE)
                                v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -29825,8 +28449,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64NE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -29847,8 +28470,7 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64NE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        b.AddControl(v0)
                        return true
                }
@@ -29896,11 +28518,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64NE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMN, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29924,11 +28544,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64NE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMP, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MUL, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29952,11 +28570,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64NE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMNW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
@@ -29980,11 +28596,9 @@ func rewriteBlockARM64(b *Block) bool {
                        }
                        b.Reset(BlockARM64NE)
                        v0 := b.NewValue0(v_0.Pos, OpARM64CMPW, types.TypeFlags)
-                       v0.AddArg(a)
                        v1 := b.NewValue0(v_0.Pos, OpARM64MULW, x.Type)
-                       v1.AddArg(x)
-                       v1.AddArg(y)
-                       v0.AddArg(v1)
+                       v1.AddArg2(x, y)
+                       v0.AddArg2(a, v1)
                        b.AddControl(v0)
                        return true
                }
index b3226cddb546c73d0de186c3e6056fb67cc85405..58dc71bd040ba50e2adcb9040a812cd954bb0b5c 100644 (file)
@@ -596,11 +596,9 @@ func rewriteValueMIPS_OpAdd32withcarry(v *Value) bool {
                y := v_1
                c := v_2
                v.reset(OpMIPSADD)
-               v.AddArg(c)
                v0 := b.NewValue0(v.Pos, OpMIPSADD, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
+               v.AddArg2(c, v0)
                return true
        }
 }
@@ -625,39 +623,33 @@ func rewriteValueMIPS_OpAtomicAnd8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSAND, typ.UInt32Ptr)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = ^3
-               v0.AddArg(v1)
-               v0.AddArg(ptr)
-               v.AddArg(v0)
+               v0.AddArg2(v1, ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSOR, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpMIPSSLL, typ.UInt32)
                v4 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v4.AddArg(val)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPSSLLconst, typ.UInt32)
                v5.AuxInt = 3
                v6 := b.NewValue0(v.Pos, OpMIPSANDconst, typ.UInt32)
                v6.AuxInt = 3
                v6.AddArg(ptr)
                v5.AddArg(v6)
-               v3.AddArg(v5)
-               v2.AddArg(v3)
+               v3.AddArg2(v4, v5)
                v7 := b.NewValue0(v.Pos, OpMIPSNORconst, typ.UInt32)
                v7.AuxInt = 0
                v8 := b.NewValue0(v.Pos, OpMIPSSLL, typ.UInt32)
                v9 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v9.AuxInt = 0xff
-               v8.AddArg(v9)
                v10 := b.NewValue0(v.Pos, OpMIPSSLLconst, typ.UInt32)
                v10.AuxInt = 3
                v11 := b.NewValue0(v.Pos, OpMIPSANDconst, typ.UInt32)
                v11.AuxInt = 3
                v11.AddArg(ptr)
                v10.AddArg(v11)
-               v8.AddArg(v10)
+               v8.AddArg2(v9, v10)
                v7.AddArg(v8)
-               v2.AddArg(v7)
-               v.AddArg(v2)
-               v.AddArg(mem)
+               v2.AddArg2(v3, v7)
+               v.AddArg3(v0, v2, mem)
                return true
        }
        // match: (AtomicAnd8 ptr val mem)
@@ -674,14 +666,11 @@ func rewriteValueMIPS_OpAtomicAnd8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSAND, typ.UInt32Ptr)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = ^3
-               v0.AddArg(v1)
-               v0.AddArg(ptr)
-               v.AddArg(v0)
+               v0.AddArg2(v1, ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSOR, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpMIPSSLL, typ.UInt32)
                v4 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v4.AddArg(val)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPSSLLconst, typ.UInt32)
                v5.AuxInt = 3
                v6 := b.NewValue0(v.Pos, OpMIPSANDconst, typ.UInt32)
@@ -691,14 +680,12 @@ func rewriteValueMIPS_OpAtomicAnd8(v *Value) bool {
                v7.AddArg(ptr)
                v6.AddArg(v7)
                v5.AddArg(v6)
-               v3.AddArg(v5)
-               v2.AddArg(v3)
+               v3.AddArg2(v4, v5)
                v8 := b.NewValue0(v.Pos, OpMIPSNORconst, typ.UInt32)
                v8.AuxInt = 0
                v9 := b.NewValue0(v.Pos, OpMIPSSLL, typ.UInt32)
                v10 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v10.AuxInt = 0xff
-               v9.AddArg(v10)
                v11 := b.NewValue0(v.Pos, OpMIPSSLLconst, typ.UInt32)
                v11.AuxInt = 3
                v12 := b.NewValue0(v.Pos, OpMIPSANDconst, typ.UInt32)
@@ -708,11 +695,10 @@ func rewriteValueMIPS_OpAtomicAnd8(v *Value) bool {
                v13.AddArg(ptr)
                v12.AddArg(v13)
                v11.AddArg(v12)
-               v9.AddArg(v11)
+               v9.AddArg2(v10, v11)
                v8.AddArg(v9)
-               v2.AddArg(v8)
-               v.AddArg(v2)
-               v.AddArg(mem)
+               v2.AddArg2(v3, v8)
+               v.AddArg3(v0, v2, mem)
                return true
        }
        return false
@@ -738,22 +724,18 @@ func rewriteValueMIPS_OpAtomicOr8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSAND, typ.UInt32Ptr)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = ^3
-               v0.AddArg(v1)
-               v0.AddArg(ptr)
-               v.AddArg(v0)
+               v0.AddArg2(v1, ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSSLL, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v3.AddArg(val)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPSSLLconst, typ.UInt32)
                v4.AuxInt = 3
                v5 := b.NewValue0(v.Pos, OpMIPSANDconst, typ.UInt32)
                v5.AuxInt = 3
                v5.AddArg(ptr)
                v4.AddArg(v5)
-               v2.AddArg(v4)
-               v.AddArg(v2)
-               v.AddArg(mem)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v2, mem)
                return true
        }
        // match: (AtomicOr8 ptr val mem)
@@ -770,13 +752,10 @@ func rewriteValueMIPS_OpAtomicOr8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSAND, typ.UInt32Ptr)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = ^3
-               v0.AddArg(v1)
-               v0.AddArg(ptr)
-               v.AddArg(v0)
+               v0.AddArg2(v1, ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSSLL, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v3.AddArg(val)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPSSLLconst, typ.UInt32)
                v4.AuxInt = 3
                v5 := b.NewValue0(v.Pos, OpMIPSANDconst, typ.UInt32)
@@ -786,9 +765,8 @@ func rewriteValueMIPS_OpAtomicOr8(v *Value) bool {
                v6.AddArg(ptr)
                v5.AddArg(v6)
                v4.AddArg(v5)
-               v2.AddArg(v4)
-               v.AddArg(v2)
-               v.AddArg(mem)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v2, mem)
                return true
        }
        return false
@@ -807,11 +785,9 @@ func rewriteValueMIPS_OpAvg32u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSRLconst, t)
                v0.AuxInt = 1
                v1 := b.NewValue0(v.Pos, OpMIPSSUB, t)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -827,10 +803,9 @@ func rewriteValueMIPS_OpBitLen32(v *Value) bool {
                v.reset(OpMIPSSUB)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 32
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSCLZ, t)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -891,18 +866,16 @@ func rewriteValueMIPS_OpCtz32(v *Value) bool {
                v.reset(OpMIPSSUB)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 32
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSCLZ, t)
                v2 := b.NewValue0(v.Pos, OpMIPSSUBconst, t)
                v2.AuxInt = 1
                v3 := b.NewValue0(v.Pos, OpMIPSAND, t)
-               v3.AddArg(x)
                v4 := b.NewValue0(v.Pos, OpMIPSNEG, t)
                v4.AddArg(x)
-               v3.AddArg(v4)
+               v3.AddArg2(x, v4)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -920,10 +893,9 @@ func rewriteValueMIPS_OpDiv16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSDIV, types.NewTuple(typ.Int32, typ.Int32))
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -942,10 +914,9 @@ func rewriteValueMIPS_OpDiv16u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSDIVU, types.NewTuple(typ.UInt32, typ.UInt32))
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -962,8 +933,7 @@ func rewriteValueMIPS_OpDiv32(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpMIPSDIV, types.NewTuple(typ.Int32, typ.Int32))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -980,8 +950,7 @@ func rewriteValueMIPS_OpDiv32u(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpMIPSDIVU, types.NewTuple(typ.UInt32, typ.UInt32))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1000,10 +969,9 @@ func rewriteValueMIPS_OpDiv8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSDIV, types.NewTuple(typ.Int32, typ.Int32))
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1022,10 +990,9 @@ func rewriteValueMIPS_OpDiv8u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSDIVU, types.NewTuple(typ.UInt32, typ.UInt32))
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1045,10 +1012,9 @@ func rewriteValueMIPS_OpEq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSXOR, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1066,8 +1032,7 @@ func rewriteValueMIPS_OpEq32(v *Value) bool {
                v.reset(OpMIPSSGTUconst)
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpMIPSXOR, typ.UInt32)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1083,8 +1048,7 @@ func rewriteValueMIPS_OpEq32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPEQF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1100,8 +1064,7 @@ func rewriteValueMIPS_OpEq64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPEQD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1121,10 +1084,9 @@ func rewriteValueMIPS_OpEq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSXOR, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1142,8 +1104,7 @@ func rewriteValueMIPS_OpEqB(v *Value) bool {
                v.reset(OpMIPSXORconst)
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpMIPSXOR, typ.Bool)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1161,8 +1122,7 @@ func rewriteValueMIPS_OpEqPtr(v *Value) bool {
                v.reset(OpMIPSSGTUconst)
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpMIPSXOR, typ.UInt32)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1178,8 +1138,7 @@ func rewriteValueMIPS_OpGeq32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPGEF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1195,8 +1154,7 @@ func rewriteValueMIPS_OpGeq64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPGED, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1212,8 +1170,7 @@ func rewriteValueMIPS_OpGreater32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPGTF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1229,8 +1186,7 @@ func rewriteValueMIPS_OpGreater64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPGTD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1247,8 +1203,7 @@ func rewriteValueMIPS_OpHmul32(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpMIPSMULT, types.NewTuple(typ.Int32, typ.Int32))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1265,8 +1220,7 @@ func rewriteValueMIPS_OpHmul32u(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpMIPSMULTU, types.NewTuple(typ.UInt32, typ.UInt32))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1280,8 +1234,7 @@ func rewriteValueMIPS_OpIsInBounds(v *Value) bool {
                idx := v_0
                len := v_1
                v.reset(OpMIPSSGTU)
-               v.AddArg(len)
-               v.AddArg(idx)
+               v.AddArg2(len, idx)
                return true
        }
 }
@@ -1294,10 +1247,9 @@ func rewriteValueMIPS_OpIsNonNil(v *Value) bool {
        for {
                ptr := v_0
                v.reset(OpMIPSSGTU)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
+               v.AddArg2(ptr, v0)
                return true
        }
 }
@@ -1314,8 +1266,7 @@ func rewriteValueMIPS_OpIsSliceInBounds(v *Value) bool {
                v.reset(OpMIPSXORconst)
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpMIPSSGTU, typ.Bool)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -1335,10 +1286,9 @@ func rewriteValueMIPS_OpLeq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSGT, typ.Bool)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1358,10 +1308,9 @@ func rewriteValueMIPS_OpLeq16U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSGTU, typ.Bool)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1379,8 +1328,7 @@ func rewriteValueMIPS_OpLeq32(v *Value) bool {
                v.reset(OpMIPSXORconst)
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpMIPSSGT, typ.Bool)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1396,8 +1344,7 @@ func rewriteValueMIPS_OpLeq32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPGEF, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1415,8 +1362,7 @@ func rewriteValueMIPS_OpLeq32U(v *Value) bool {
                v.reset(OpMIPSXORconst)
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpMIPSSGTU, typ.Bool)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1432,8 +1378,7 @@ func rewriteValueMIPS_OpLeq64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPGED, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1453,10 +1398,9 @@ func rewriteValueMIPS_OpLeq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSGT, typ.Bool)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1476,10 +1420,9 @@ func rewriteValueMIPS_OpLeq8U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSGTU, typ.Bool)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1497,10 +1440,9 @@ func rewriteValueMIPS_OpLess16(v *Value) bool {
                v.reset(OpMIPSSGT)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1517,10 +1459,9 @@ func rewriteValueMIPS_OpLess16U(v *Value) bool {
                v.reset(OpMIPSSGTU)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1533,8 +1474,7 @@ func rewriteValueMIPS_OpLess32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPSSGT)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
 }
@@ -1549,8 +1489,7 @@ func rewriteValueMIPS_OpLess32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPGTF, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1564,8 +1503,7 @@ func rewriteValueMIPS_OpLess32U(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPSSGTU)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
 }
@@ -1580,8 +1518,7 @@ func rewriteValueMIPS_OpLess64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPGTD, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1599,10 +1536,9 @@ func rewriteValueMIPS_OpLess8(v *Value) bool {
                v.reset(OpMIPSSGT)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1619,10 +1555,9 @@ func rewriteValueMIPS_OpLess8U(v *Value) bool {
                v.reset(OpMIPSSGTU)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1640,8 +1575,7 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVBUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1655,8 +1589,7 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVBload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1670,8 +1603,7 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVBUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1685,8 +1617,7 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVHload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1700,8 +1631,7 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVHUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1715,8 +1645,7 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVWload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1730,8 +1659,7 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVFload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1745,8 +1673,7 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -1777,20 +1704,17 @@ func rewriteValueMIPS_OpLsh16x16(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v4 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -1807,16 +1731,13 @@ func rewriteValueMIPS_OpLsh16x32(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v2.AuxInt = 32
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1870,20 +1791,17 @@ func rewriteValueMIPS_OpLsh16x8(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v4 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -1900,20 +1818,17 @@ func rewriteValueMIPS_OpLsh32x16(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v4 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -1930,16 +1845,13 @@ func rewriteValueMIPS_OpLsh32x32(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v2.AuxInt = 32
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1993,20 +1905,17 @@ func rewriteValueMIPS_OpLsh32x8(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v4 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -2023,20 +1932,17 @@ func rewriteValueMIPS_OpLsh8x16(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v4 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -2053,16 +1959,13 @@ func rewriteValueMIPS_OpLsh8x32(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v2.AuxInt = 32
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2116,20 +2019,17 @@ func rewriteValueMIPS_OpLsh8x8(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSLL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v4 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -2162,8 +2062,7 @@ func rewriteValueMIPS_OpMIPSADD(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpMIPSSUB)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2289,8 +2188,7 @@ func rewriteValueMIPS_OpMIPSAND(v *Value) bool {
                        v.reset(OpMIPSSGTUconst)
                        v.AuxInt = 1
                        v0 := b.NewValue0(v.Pos, OpMIPSOR, x.Type)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        v.AddArg(v0)
                        return true
                }
@@ -2392,8 +2290,7 @@ func rewriteValueMIPS_OpMIPSCMOVZ(v *Value) bool {
                }
                c := v_2
                v.reset(OpMIPSCMOVZzero)
-               v.AddArg(a)
-               v.AddArg(c)
+               v.AddArg2(a, c)
                return true
        }
        return false
@@ -2449,8 +2346,7 @@ func rewriteValueMIPS_OpMIPSLoweredAtomicAdd(v *Value) bool {
                }
                v.reset(OpMIPSLoweredAtomicAddconst)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2468,8 +2364,7 @@ func rewriteValueMIPS_OpMIPSLoweredAtomicStore32(v *Value) bool {
                }
                mem := v_2
                v.reset(OpMIPSLoweredAtomicStorezero)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2496,8 +2391,7 @@ func rewriteValueMIPS_OpMIPSMOVBUload(v *Value) bool {
                v.reset(OpMIPSMOVBUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -2519,8 +2413,7 @@ func rewriteValueMIPS_OpMIPSMOVBUload(v *Value) bool {
                v.reset(OpMIPSMOVBUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUload [off] {sym} ptr (MOVBstore [off2] {sym2} ptr2 x _))
@@ -2595,8 +2488,7 @@ func rewriteValueMIPS_OpMIPSMOVBUreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUreg (ANDconst [c] x))
@@ -2647,8 +2539,7 @@ func rewriteValueMIPS_OpMIPSMOVBload(v *Value) bool {
                v.reset(OpMIPSMOVBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -2670,8 +2561,7 @@ func rewriteValueMIPS_OpMIPSMOVBload(v *Value) bool {
                v.reset(OpMIPSMOVBload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off] {sym} ptr (MOVBstore [off2] {sym2} ptr2 x _))
@@ -2746,8 +2636,7 @@ func rewriteValueMIPS_OpMIPSMOVBreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBreg (ANDconst [c] x))
@@ -2804,9 +2693,7 @@ func rewriteValueMIPS_OpMIPSMOVBstore(v *Value) bool {
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) val mem)
@@ -2829,9 +2716,7 @@ func rewriteValueMIPS_OpMIPSMOVBstore(v *Value) bool {
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVWconst [0]) mem)
@@ -2847,8 +2732,7 @@ func rewriteValueMIPS_OpMIPSMOVBstore(v *Value) bool {
                v.reset(OpMIPSMOVBstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
@@ -2865,9 +2749,7 @@ func rewriteValueMIPS_OpMIPSMOVBstore(v *Value) bool {
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBUreg x) mem)
@@ -2884,9 +2766,7 @@ func rewriteValueMIPS_OpMIPSMOVBstore(v *Value) bool {
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
@@ -2903,9 +2783,7 @@ func rewriteValueMIPS_OpMIPSMOVBstore(v *Value) bool {
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVHUreg x) mem)
@@ -2922,9 +2800,7 @@ func rewriteValueMIPS_OpMIPSMOVBstore(v *Value) bool {
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVWreg x) mem)
@@ -2941,9 +2817,7 @@ func rewriteValueMIPS_OpMIPSMOVBstore(v *Value) bool {
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        return false
@@ -2970,8 +2844,7 @@ func rewriteValueMIPS_OpMIPSMOVBstorezero(v *Value) bool {
                v.reset(OpMIPSMOVBstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstorezero [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -2993,8 +2866,7 @@ func rewriteValueMIPS_OpMIPSMOVBstorezero(v *Value) bool {
                v.reset(OpMIPSMOVBstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3021,8 +2893,7 @@ func rewriteValueMIPS_OpMIPSMOVDload(v *Value) bool {
                v.reset(OpMIPSMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -3044,8 +2915,7 @@ func rewriteValueMIPS_OpMIPSMOVDload(v *Value) bool {
                v.reset(OpMIPSMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDload [off] {sym} ptr (MOVDstore [off2] {sym2} ptr2 x _))
@@ -3097,9 +2967,7 @@ func rewriteValueMIPS_OpMIPSMOVDstore(v *Value) bool {
                v.reset(OpMIPSMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) val mem)
@@ -3122,9 +2990,7 @@ func rewriteValueMIPS_OpMIPSMOVDstore(v *Value) bool {
                v.reset(OpMIPSMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -3151,8 +3017,7 @@ func rewriteValueMIPS_OpMIPSMOVFload(v *Value) bool {
                v.reset(OpMIPSMOVFload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVFload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -3174,8 +3039,7 @@ func rewriteValueMIPS_OpMIPSMOVFload(v *Value) bool {
                v.reset(OpMIPSMOVFload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVFload [off] {sym} ptr (MOVFstore [off2] {sym2} ptr2 x _))
@@ -3227,9 +3091,7 @@ func rewriteValueMIPS_OpMIPSMOVFstore(v *Value) bool {
                v.reset(OpMIPSMOVFstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVFstore [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) val mem)
@@ -3252,9 +3114,7 @@ func rewriteValueMIPS_OpMIPSMOVFstore(v *Value) bool {
                v.reset(OpMIPSMOVFstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -3281,8 +3141,7 @@ func rewriteValueMIPS_OpMIPSMOVHUload(v *Value) bool {
                v.reset(OpMIPSMOVHUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -3304,8 +3163,7 @@ func rewriteValueMIPS_OpMIPSMOVHUload(v *Value) bool {
                v.reset(OpMIPSMOVHUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUload [off] {sym} ptr (MOVHstore [off2] {sym2} ptr2 x _))
@@ -3403,8 +3261,7 @@ func rewriteValueMIPS_OpMIPSMOVHUreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUreg (ANDconst [c] x))
@@ -3455,8 +3312,7 @@ func rewriteValueMIPS_OpMIPSMOVHload(v *Value) bool {
                v.reset(OpMIPSMOVHload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -3478,8 +3334,7 @@ func rewriteValueMIPS_OpMIPSMOVHload(v *Value) bool {
                v.reset(OpMIPSMOVHload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHload [off] {sym} ptr (MOVHstore [off2] {sym2} ptr2 x _))
@@ -3600,8 +3455,7 @@ func rewriteValueMIPS_OpMIPSMOVHreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHreg (ANDconst [c] x))
@@ -3658,9 +3512,7 @@ func rewriteValueMIPS_OpMIPSMOVHstore(v *Value) bool {
                v.reset(OpMIPSMOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) val mem)
@@ -3683,9 +3535,7 @@ func rewriteValueMIPS_OpMIPSMOVHstore(v *Value) bool {
                v.reset(OpMIPSMOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVWconst [0]) mem)
@@ -3701,8 +3551,7 @@ func rewriteValueMIPS_OpMIPSMOVHstore(v *Value) bool {
                v.reset(OpMIPSMOVHstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
@@ -3719,9 +3568,7 @@ func rewriteValueMIPS_OpMIPSMOVHstore(v *Value) bool {
                v.reset(OpMIPSMOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHUreg x) mem)
@@ -3738,9 +3585,7 @@ func rewriteValueMIPS_OpMIPSMOVHstore(v *Value) bool {
                v.reset(OpMIPSMOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVWreg x) mem)
@@ -3757,9 +3602,7 @@ func rewriteValueMIPS_OpMIPSMOVHstore(v *Value) bool {
                v.reset(OpMIPSMOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        return false
@@ -3786,8 +3629,7 @@ func rewriteValueMIPS_OpMIPSMOVHstorezero(v *Value) bool {
                v.reset(OpMIPSMOVHstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstorezero [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -3809,8 +3651,7 @@ func rewriteValueMIPS_OpMIPSMOVHstorezero(v *Value) bool {
                v.reset(OpMIPSMOVHstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3837,8 +3678,7 @@ func rewriteValueMIPS_OpMIPSMOVWload(v *Value) bool {
                v.reset(OpMIPSMOVWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -3860,8 +3700,7 @@ func rewriteValueMIPS_OpMIPSMOVWload(v *Value) bool {
                v.reset(OpMIPSMOVWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off] {sym} ptr (MOVWstore [off2] {sym2} ptr2 x _))
@@ -3940,9 +3779,7 @@ func rewriteValueMIPS_OpMIPSMOVWstore(v *Value) bool {
                v.reset(OpMIPSMOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) val mem)
@@ -3965,9 +3802,7 @@ func rewriteValueMIPS_OpMIPSMOVWstore(v *Value) bool {
                v.reset(OpMIPSMOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWconst [0]) mem)
@@ -3983,8 +3818,7 @@ func rewriteValueMIPS_OpMIPSMOVWstore(v *Value) bool {
                v.reset(OpMIPSMOVWstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWreg x) mem)
@@ -4001,9 +3835,7 @@ func rewriteValueMIPS_OpMIPSMOVWstore(v *Value) bool {
                v.reset(OpMIPSMOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        return false
@@ -4030,8 +3862,7 @@ func rewriteValueMIPS_OpMIPSMOVWstorezero(v *Value) bool {
                v.reset(OpMIPSMOVWstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstorezero [off1] {sym1} (MOVWaddr [off2] {sym2} ptr) mem)
@@ -4053,8 +3884,7 @@ func rewriteValueMIPS_OpMIPSMOVWstorezero(v *Value) bool {
                v.reset(OpMIPSMOVWstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -4242,8 +4072,7 @@ func rewriteValueMIPS_OpMIPSOR(v *Value) bool {
                        y := v_1.Args[0]
                        v.reset(OpMIPSSGTUzero)
                        v0 := b.NewValue0(v.Pos, OpMIPSOR, x.Type)
-                       v0.AddArg(x)
-                       v0.AddArg(y)
+                       v0.AddArg2(x, y)
                        v.AddArg(v0)
                        return true
                }
@@ -5030,10 +4859,9 @@ func rewriteValueMIPS_OpMod16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSDIV, types.NewTuple(typ.Int32, typ.Int32))
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -5052,10 +4880,9 @@ func rewriteValueMIPS_OpMod16u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSDIVU, types.NewTuple(typ.UInt32, typ.UInt32))
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -5072,8 +4899,7 @@ func rewriteValueMIPS_OpMod32(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpMIPSDIV, types.NewTuple(typ.Int32, typ.Int32))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -5090,8 +4916,7 @@ func rewriteValueMIPS_OpMod32u(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpMIPSDIVU, types.NewTuple(typ.UInt32, typ.UInt32))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -5110,10 +4935,9 @@ func rewriteValueMIPS_OpMod8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSDIV, types.NewTuple(typ.Int32, typ.Int32))
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -5132,10 +4956,9 @@ func rewriteValueMIPS_OpMod8u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSDIVU, types.NewTuple(typ.UInt32, typ.UInt32))
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -5169,12 +4992,9 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpMIPSMOVBstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVBUload, typ.UInt8)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] {t} dst src mem)
@@ -5192,12 +5012,9 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVHstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVHUload, typ.UInt16)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] dst src mem)
@@ -5211,20 +5028,14 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = 1
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVBUload, typ.UInt8)
                v0.AuxInt = 1
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVBUload, typ.UInt8)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [4] {t} dst src mem)
@@ -5242,12 +5053,9 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVWstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWload, typ.UInt32)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [4] {t} dst src mem)
@@ -5266,20 +5074,14 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                }
                v.reset(OpMIPSMOVHstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVHUload, typ.UInt16)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVHstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVHUload, typ.UInt16)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [4] dst src mem)
@@ -5293,38 +5095,26 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = 3
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVBUload, typ.UInt8)
                v0.AuxInt = 3
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
                v1.AuxInt = 2
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVBUload, typ.UInt8)
                v2.AuxInt = 2
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
                v3.AuxInt = 1
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVBUload, typ.UInt8)
                v4.AuxInt = 1
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
+               v4.AddArg2(src, mem)
                v5 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
-               v5.AddArg(dst)
                v6 := b.NewValue0(v.Pos, OpMIPSMOVBUload, typ.UInt8)
-               v6.AddArg(src)
-               v6.AddArg(mem)
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v6.AddArg2(src, mem)
+               v5.AddArg3(dst, v6, mem)
+               v3.AddArg3(dst, v4, v5)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [3] dst src mem)
@@ -5338,29 +5128,20 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVBUload, typ.UInt8)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
                v1.AuxInt = 1
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVBUload, typ.UInt8)
                v2.AuxInt = 1
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVBUload, typ.UInt8)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [8] {t} dst src mem)
@@ -5379,20 +5160,14 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                }
                v.reset(OpMIPSMOVWstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWload, typ.UInt32)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [8] {t} dst src mem)
@@ -5411,38 +5186,26 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                }
                v.reset(OpMIPSMOVHstore)
                v.AuxInt = 6
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVHload, typ.Int16)
                v0.AuxInt = 6
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVHstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVHload, typ.Int16)
                v2.AuxInt = 4
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVHstore, types.TypeMem)
                v3.AuxInt = 2
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVHload, typ.Int16)
                v4.AuxInt = 2
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
+               v4.AddArg2(src, mem)
                v5 := b.NewValue0(v.Pos, OpMIPSMOVHstore, types.TypeMem)
-               v5.AddArg(dst)
                v6 := b.NewValue0(v.Pos, OpMIPSMOVHload, typ.Int16)
-               v6.AddArg(src)
-               v6.AddArg(mem)
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v6.AddArg2(src, mem)
+               v5.AddArg3(dst, v6, mem)
+               v3.AddArg3(dst, v4, v5)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [6] {t} dst src mem)
@@ -5461,29 +5224,20 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                }
                v.reset(OpMIPSMOVHstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVHload, typ.Int16)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVHstore, types.TypeMem)
                v1.AuxInt = 2
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVHload, typ.Int16)
                v2.AuxInt = 2
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVHstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVHload, typ.Int16)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [12] {t} dst src mem)
@@ -5502,29 +5256,20 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                }
                v.reset(OpMIPSMOVWstore)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWload, typ.UInt32)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWload, typ.UInt32)
                v2.AuxInt = 4
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVWload, typ.UInt32)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [16] {t} dst src mem)
@@ -5543,38 +5288,26 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                }
                v.reset(OpMIPSMOVWstore)
                v.AuxInt = 12
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWload, typ.UInt32)
                v0.AuxInt = 12
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWload, typ.UInt32)
                v2.AuxInt = 8
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
                v3.AuxInt = 4
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVWload, typ.UInt32)
                v4.AuxInt = 4
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
+               v4.AddArg2(src, mem)
                v5 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
-               v5.AddArg(dst)
                v6 := b.NewValue0(v.Pos, OpMIPSMOVWload, typ.UInt32)
-               v6.AddArg(src)
-               v6.AddArg(mem)
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v6.AddArg2(src, mem)
+               v5.AddArg3(dst, v6, mem)
+               v3.AddArg3(dst, v4, v5)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] {t} dst src mem)
@@ -5591,13 +5324,10 @@ func rewriteValueMIPS_OpMove(v *Value) bool {
                }
                v.reset(OpMIPSLoweredMove)
                v.AuxInt = t.(*types.Type).Alignment()
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpMIPSADDconst, src.Type)
                v0.AuxInt = s - moveSize(t.(*types.Type).Alignment(), config)
                v0.AddArg(src)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(dst, src, v0, mem)
                return true
        }
        return false
@@ -5616,14 +5346,12 @@ func rewriteValueMIPS_OpNeq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSXOR, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = 0
-               v.AddArg(v3)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -5639,12 +5367,10 @@ func rewriteValueMIPS_OpNeq32(v *Value) bool {
                y := v_1
                v.reset(OpMIPSSGTU)
                v0 := b.NewValue0(v.Pos, OpMIPSXOR, typ.UInt32)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = 0
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -5659,8 +5385,7 @@ func rewriteValueMIPS_OpNeq32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagFalse)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPEQF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -5676,8 +5401,7 @@ func rewriteValueMIPS_OpNeq64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPSFPFlagFalse)
                v0 := b.NewValue0(v.Pos, OpMIPSCMPEQD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -5696,14 +5420,12 @@ func rewriteValueMIPS_OpNeq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSXOR, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = 0
-               v.AddArg(v3)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -5719,12 +5441,10 @@ func rewriteValueMIPS_OpNeqPtr(v *Value) bool {
                y := v_1
                v.reset(OpMIPSSGTU)
                v0 := b.NewValue0(v.Pos, OpMIPSXOR, typ.UInt32)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = 0
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -5783,9 +5503,7 @@ func rewriteValueMIPS_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpMIPSLoweredPanicBoundsA)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -5801,9 +5519,7 @@ func rewriteValueMIPS_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpMIPSLoweredPanicBoundsB)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -5819,9 +5535,7 @@ func rewriteValueMIPS_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpMIPSLoweredPanicBoundsC)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        return false
@@ -5845,10 +5559,7 @@ func rewriteValueMIPS_OpPanicExtend(v *Value) bool {
                }
                v.reset(OpMIPSLoweredPanicExtendA)
                v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg4(hi, lo, y, mem)
                return true
        }
        // match: (PanicExtend [kind] hi lo y mem)
@@ -5865,10 +5576,7 @@ func rewriteValueMIPS_OpPanicExtend(v *Value) bool {
                }
                v.reset(OpMIPSLoweredPanicExtendB)
                v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg4(hi, lo, y, mem)
                return true
        }
        // match: (PanicExtend [kind] hi lo y mem)
@@ -5885,10 +5593,7 @@ func rewriteValueMIPS_OpPanicExtend(v *Value) bool {
                }
                v.reset(OpMIPSLoweredPanicExtendC)
                v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg4(hi, lo, y, mem)
                return true
        }
        return false
@@ -5909,17 +5614,14 @@ func rewriteValueMIPS_OpRotateLeft16(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr16)
                v0 := b.NewValue0(v.Pos, OpLsh16x32, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = c & 15
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh16Ux32, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = -c & 15
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -5940,17 +5642,14 @@ func rewriteValueMIPS_OpRotateLeft32(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr32)
                v0 := b.NewValue0(v.Pos, OpLsh32x32, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = c & 31
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh32Ux32, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = -c & 31
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -5971,17 +5670,14 @@ func rewriteValueMIPS_OpRotateLeft64(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr64)
                v0 := b.NewValue0(v.Pos, OpLsh64x32, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = c & 63
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh64Ux32, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = -c & 63
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -6002,17 +5698,14 @@ func rewriteValueMIPS_OpRotateLeft8(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr8)
                v0 := b.NewValue0(v.Pos, OpLsh8x32, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = c & 7
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh8Ux32, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = -c & 7
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -6032,20 +5725,17 @@ func rewriteValueMIPS_OpRsh16Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v4.AuxInt = 32
                v5 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -6064,16 +5754,13 @@ func rewriteValueMIPS_OpRsh16Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v3.AddArg(y)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -6134,20 +5821,17 @@ func rewriteValueMIPS_OpRsh16Ux8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v4.AuxInt = 32
                v5 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -6164,21 +5848,18 @@ func rewriteValueMIPS_OpRsh16x16(v *Value) bool {
                v.reset(OpMIPSSRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSCMOVZ, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = -1
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v4.AuxInt = 32
                v5 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6195,17 +5876,14 @@ func rewriteValueMIPS_OpRsh16x32(v *Value) bool {
                v.reset(OpMIPSSRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSCMOVZ, typ.UInt32)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = -1
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6269,21 +5947,18 @@ func rewriteValueMIPS_OpRsh16x8(v *Value) bool {
                v.reset(OpMIPSSRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSCMOVZ, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = -1
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v4.AuxInt = 32
                v5 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6300,20 +5975,17 @@ func rewriteValueMIPS_OpRsh32Ux16(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSRL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v4 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -6330,16 +6002,13 @@ func rewriteValueMIPS_OpRsh32Ux32(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v2.AuxInt = 32
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -6393,20 +6062,17 @@ func rewriteValueMIPS_OpRsh32Ux8(v *Value) bool {
                y := v_1
                v.reset(OpMIPSCMOVZ)
                v0 := b.NewValue0(v.Pos, OpMIPSSRL, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v4 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -6421,21 +6087,18 @@ func rewriteValueMIPS_OpRsh32x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPSSRA)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMIPSCMOVZ, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = -1
-               v0.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v4 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg3(v1, v2, v3)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -6450,17 +6113,14 @@ func rewriteValueMIPS_OpRsh32x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPSSRA)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMIPSCMOVZ, typ.UInt32)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = -1
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v2.AuxInt = 32
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -6514,21 +6174,18 @@ func rewriteValueMIPS_OpRsh32x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPSSRA)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMIPSCMOVZ, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = -1
-               v0.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v4 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg3(v1, v2, v3)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -6547,20 +6204,17 @@ func rewriteValueMIPS_OpRsh8Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v4.AuxInt = 32
                v5 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -6579,16 +6233,13 @@ func rewriteValueMIPS_OpRsh8Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v3.AddArg(y)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -6649,20 +6300,17 @@ func rewriteValueMIPS_OpRsh8Ux8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPSSRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = 0
-               v.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v4.AuxInt = 32
                v5 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v.AddArg(v4)
+               v.AddArg3(v0, v3, v4)
                return true
        }
 }
@@ -6679,21 +6327,18 @@ func rewriteValueMIPS_OpRsh8x16(v *Value) bool {
                v.reset(OpMIPSSRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSCMOVZ, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = -1
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v4.AuxInt = 32
                v5 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6710,17 +6355,14 @@ func rewriteValueMIPS_OpRsh8x32(v *Value) bool {
                v.reset(OpMIPSSRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSCMOVZ, typ.UInt32)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = -1
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v3.AuxInt = 32
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6784,21 +6426,18 @@ func rewriteValueMIPS_OpRsh8x8(v *Value) bool {
                v.reset(OpMIPSSRA)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSCMOVZ, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v3.AuxInt = -1
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPSSGTUconst, typ.Bool)
                v4.AuxInt = 32
                v5 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v5.AddArg(y)
                v4.AddArg(v5)
-               v1.AddArg(v4)
-               v.AddArg(v1)
+               v1.AddArg3(v2, v3, v4)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6817,8 +6456,7 @@ func rewriteValueMIPS_OpSelect0(v *Value) bool {
                x := v_0.Args[0]
                v.reset(OpMIPSADD)
                v.Type = t.FieldType(0)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Select0 (Sub32carry <t> x y))
@@ -6832,8 +6470,7 @@ func rewriteValueMIPS_OpSelect0(v *Value) bool {
                x := v_0.Args[0]
                v.reset(OpMIPSSUB)
                v.Type = t.FieldType(0)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Select0 (MULTU (MOVWconst [0]) _ ))
@@ -6892,11 +6529,9 @@ func rewriteValueMIPS_OpSelect0(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpMIPSADDconst, x.Type)
                        v0.AuxInt = -1
                        v0.AddArg(x)
-                       v.AddArg(v0)
                        v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                        v1.AuxInt = 0
-                       v.AddArg(v1)
-                       v.AddArg(x)
+                       v.AddArg3(v0, v1, x)
                        return true
                }
                break
@@ -7010,11 +6645,9 @@ func rewriteValueMIPS_OpSelect1(v *Value) bool {
                x := v_0.Args[0]
                v.reset(OpMIPSSGTU)
                v.Type = typ.Bool
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMIPSADD, t.FieldType(0))
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Select1 (Sub32carry <t> x y))
@@ -7029,10 +6662,8 @@ func rewriteValueMIPS_OpSelect1(v *Value) bool {
                v.reset(OpMIPSSGTU)
                v.Type = typ.Bool
                v0 := b.NewValue0(v.Pos, OpMIPSSUB, t.FieldType(0))
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (Select1 (MULTU (MOVWconst [0]) _ ))
@@ -7234,9 +6865,7 @@ func rewriteValueMIPS_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVBstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -7251,9 +6880,7 @@ func rewriteValueMIPS_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVHstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -7268,9 +6895,7 @@ func rewriteValueMIPS_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVWstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -7285,9 +6910,7 @@ func rewriteValueMIPS_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVFstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -7302,9 +6925,7 @@ func rewriteValueMIPS_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -7323,10 +6944,8 @@ func rewriteValueMIPS_OpSub32withcarry(v *Value) bool {
                c := v_2
                v.reset(OpMIPSSUB)
                v0 := b.NewValue0(v.Pos, OpMIPSSUB, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
-               v.AddArg(c)
+               v0.AddArg2(x, y)
+               v.AddArg2(v0, c)
                return true
        }
 }
@@ -7357,11 +6976,9 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpMIPSMOVBstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [2] {t} ptr mem)
@@ -7378,11 +6995,9 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVHstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [2] ptr mem)
@@ -7395,18 +7010,14 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = 1
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [4] {t} ptr mem)
@@ -7423,11 +7034,9 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpMIPSMOVWstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [4] {t} ptr mem)
@@ -7445,18 +7054,14 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                }
                v.reset(OpMIPSMOVHstore)
                v.AuxInt = 2
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVHstore, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [4] ptr mem)
@@ -7469,32 +7074,24 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = 3
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
                v1.AuxInt = 2
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
                v3.AuxInt = 1
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v4.AuxInt = 0
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
                v5.AuxInt = 0
-               v5.AddArg(ptr)
                v6 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v6.AuxInt = 0
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg3(ptr, v6, mem)
+               v3.AddArg3(ptr, v4, v5)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [3] ptr mem)
@@ -7507,25 +7104,19 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpMIPSMOVBstore)
                v.AuxInt = 2
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
                v1.AuxInt = 1
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVBstore, types.TypeMem)
                v3.AuxInt = 0
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [6] {t} ptr mem)
@@ -7543,25 +7134,19 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                }
                v.reset(OpMIPSMOVHstore)
                v.AuxInt = 4
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVHstore, types.TypeMem)
                v1.AuxInt = 2
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVHstore, types.TypeMem)
                v3.AuxInt = 0
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [8] {t} ptr mem)
@@ -7579,18 +7164,14 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                }
                v.reset(OpMIPSMOVWstore)
                v.AuxInt = 4
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [12] {t} ptr mem)
@@ -7608,25 +7189,19 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                }
                v.reset(OpMIPSMOVWstore)
                v.AuxInt = 8
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
                v3.AuxInt = 0
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [16] {t} ptr mem)
@@ -7644,32 +7219,24 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                }
                v.reset(OpMIPSMOVWstore)
                v.AuxInt = 12
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
                v3.AuxInt = 4
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v4.AuxInt = 0
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPSMOVWstore, types.TypeMem)
                v5.AuxInt = 0
-               v5.AddArg(ptr)
                v6 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v6.AuxInt = 0
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg3(ptr, v6, mem)
+               v3.AddArg3(ptr, v4, v5)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [s] {t} ptr mem)
@@ -7685,12 +7252,10 @@ func rewriteValueMIPS_OpZero(v *Value) bool {
                }
                v.reset(OpMIPSLoweredZero)
                v.AuxInt = t.(*types.Type).Alignment()
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPSADDconst, ptr.Type)
                v0.AuxInt = s - moveSize(t.(*types.Type).Alignment(), config)
                v0.AddArg(ptr)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
@@ -7705,10 +7270,9 @@ func rewriteValueMIPS_OpZeromask(v *Value) bool {
                x := v_0
                v.reset(OpMIPSNEG)
                v0 := b.NewValue0(v.Pos, OpMIPSSGTU, typ.Bool)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpMIPSMOVWconst, typ.UInt32)
                v1.AuxInt = 0
-               v0.AddArg(v1)
+               v0.AddArg2(x, v1)
                v.AddArg(v0)
                return true
        }
index 315270b16a16a65199e1f836f4faa962ae137db6..6736fcd5602ecba02340b217820766e4986ea2f7 100644 (file)
@@ -706,11 +706,9 @@ func rewriteValueMIPS64_OpAvg64u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64SRLVconst, t)
                v0.AuxInt = 1
                v1 := b.NewValue0(v.Pos, OpMIPS64SUBV, t)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -725,8 +723,7 @@ func rewriteValueMIPS64_OpCom16(v *Value) bool {
                v.reset(OpMIPS64NOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -741,8 +738,7 @@ func rewriteValueMIPS64_OpCom32(v *Value) bool {
                v.reset(OpMIPS64NOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -757,8 +753,7 @@ func rewriteValueMIPS64_OpCom64(v *Value) bool {
                v.reset(OpMIPS64NOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -773,8 +768,7 @@ func rewriteValueMIPS64_OpCom8(v *Value) bool {
                v.reset(OpMIPS64NOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -801,10 +795,9 @@ func rewriteValueMIPS64_OpDiv16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVV, types.NewTuple(typ.Int64, typ.Int64))
                v1 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -823,10 +816,9 @@ func rewriteValueMIPS64_OpDiv16u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVVU, types.NewTuple(typ.UInt64, typ.UInt64))
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -845,10 +837,9 @@ func rewriteValueMIPS64_OpDiv32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVV, types.NewTuple(typ.Int64, typ.Int64))
                v1 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -867,10 +858,9 @@ func rewriteValueMIPS64_OpDiv32u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVVU, types.NewTuple(typ.UInt64, typ.UInt64))
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -887,8 +877,7 @@ func rewriteValueMIPS64_OpDiv64(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVV, types.NewTuple(typ.Int64, typ.Int64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -905,8 +894,7 @@ func rewriteValueMIPS64_OpDiv64u(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVVU, types.NewTuple(typ.UInt64, typ.UInt64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -925,10 +913,9 @@ func rewriteValueMIPS64_OpDiv8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVV, types.NewTuple(typ.Int64, typ.Int64))
                v1 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -947,10 +934,9 @@ func rewriteValueMIPS64_OpDiv8u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVVU, types.NewTuple(typ.UInt64, typ.UInt64))
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -968,15 +954,13 @@ func rewriteValueMIPS64_OpEq16(v *Value) bool {
                v.reset(OpMIPS64SGTU)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.UInt64)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -993,15 +977,13 @@ func rewriteValueMIPS64_OpEq32(v *Value) bool {
                v.reset(OpMIPS64SGTU)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.UInt64)
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1016,8 +998,7 @@ func rewriteValueMIPS64_OpEq32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPEQF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1035,11 +1016,9 @@ func rewriteValueMIPS64_OpEq64(v *Value) bool {
                v.reset(OpMIPS64SGTU)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.UInt64)
-               v1.AddArg(x)
-               v1.AddArg(y)
-               v.AddArg(v1)
+               v1.AddArg2(x, y)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1054,8 +1033,7 @@ func rewriteValueMIPS64_OpEq64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPEQD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1073,15 +1051,13 @@ func rewriteValueMIPS64_OpEq8(v *Value) bool {
                v.reset(OpMIPS64SGTU)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.UInt64)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1098,11 +1074,9 @@ func rewriteValueMIPS64_OpEqB(v *Value) bool {
                v.reset(OpMIPS64XOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.Bool)
-               v1.AddArg(x)
-               v1.AddArg(y)
-               v.AddArg(v1)
+               v1.AddArg2(x, y)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1119,11 +1093,9 @@ func rewriteValueMIPS64_OpEqPtr(v *Value) bool {
                v.reset(OpMIPS64SGTU)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.UInt64)
-               v1.AddArg(x)
-               v1.AddArg(y)
-               v.AddArg(v1)
+               v1.AddArg2(x, y)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1138,8 +1110,7 @@ func rewriteValueMIPS64_OpGeq32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPGEF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1155,8 +1126,7 @@ func rewriteValueMIPS64_OpGeq64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPGED, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1172,8 +1142,7 @@ func rewriteValueMIPS64_OpGreater32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPGTF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1189,8 +1158,7 @@ func rewriteValueMIPS64_OpGreater64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPGTD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1211,10 +1179,9 @@ func rewriteValueMIPS64_OpHmul32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64MULV, types.NewTuple(typ.Int64, typ.Int64))
                v2 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -1236,10 +1203,9 @@ func rewriteValueMIPS64_OpHmul32u(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64MULVU, types.NewTuple(typ.UInt64, typ.UInt64))
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -1257,8 +1223,7 @@ func rewriteValueMIPS64_OpHmul64(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpMIPS64MULV, types.NewTuple(typ.Int64, typ.Int64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1275,8 +1240,7 @@ func rewriteValueMIPS64_OpHmul64u(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpMIPS64MULVU, types.NewTuple(typ.UInt64, typ.UInt64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1290,8 +1254,7 @@ func rewriteValueMIPS64_OpIsInBounds(v *Value) bool {
                idx := v_0
                len := v_1
                v.reset(OpMIPS64SGTU)
-               v.AddArg(len)
-               v.AddArg(idx)
+               v.AddArg2(len, idx)
                return true
        }
 }
@@ -1304,10 +1267,9 @@ func rewriteValueMIPS64_OpIsNonNil(v *Value) bool {
        for {
                ptr := v_0
                v.reset(OpMIPS64SGTU)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
+               v.AddArg2(ptr, v0)
                return true
        }
 }
@@ -1324,11 +1286,9 @@ func rewriteValueMIPS64_OpIsSliceInBounds(v *Value) bool {
                v.reset(OpMIPS64XOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
-               v1.AddArg(idx)
-               v1.AddArg(len)
-               v.AddArg(v1)
+               v1.AddArg2(idx, len)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1345,15 +1305,13 @@ func rewriteValueMIPS64_OpLeq16(v *Value) bool {
                v.reset(OpMIPS64XOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64SGT, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1370,15 +1328,13 @@ func rewriteValueMIPS64_OpLeq16U(v *Value) bool {
                v.reset(OpMIPS64XOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1395,15 +1351,13 @@ func rewriteValueMIPS64_OpLeq32(v *Value) bool {
                v.reset(OpMIPS64XOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64SGT, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1418,8 +1372,7 @@ func rewriteValueMIPS64_OpLeq32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPGEF, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1437,15 +1390,13 @@ func rewriteValueMIPS64_OpLeq32U(v *Value) bool {
                v.reset(OpMIPS64XOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1462,11 +1413,9 @@ func rewriteValueMIPS64_OpLeq64(v *Value) bool {
                v.reset(OpMIPS64XOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64SGT, typ.Bool)
-               v1.AddArg(x)
-               v1.AddArg(y)
-               v.AddArg(v1)
+               v1.AddArg2(x, y)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1481,8 +1430,7 @@ func rewriteValueMIPS64_OpLeq64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPGED, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1500,11 +1448,9 @@ func rewriteValueMIPS64_OpLeq64U(v *Value) bool {
                v.reset(OpMIPS64XOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
-               v1.AddArg(x)
-               v1.AddArg(y)
-               v.AddArg(v1)
+               v1.AddArg2(x, y)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1521,15 +1467,13 @@ func rewriteValueMIPS64_OpLeq8(v *Value) bool {
                v.reset(OpMIPS64XOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64SGT, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1546,15 +1490,13 @@ func rewriteValueMIPS64_OpLeq8U(v *Value) bool {
                v.reset(OpMIPS64XOR)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1571,10 +1513,9 @@ func rewriteValueMIPS64_OpLess16(v *Value) bool {
                v.reset(OpMIPS64SGT)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1591,10 +1532,9 @@ func rewriteValueMIPS64_OpLess16U(v *Value) bool {
                v.reset(OpMIPS64SGTU)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1611,10 +1551,9 @@ func rewriteValueMIPS64_OpLess32(v *Value) bool {
                v.reset(OpMIPS64SGT)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1629,8 +1568,7 @@ func rewriteValueMIPS64_OpLess32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPGTF, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1648,10 +1586,9 @@ func rewriteValueMIPS64_OpLess32U(v *Value) bool {
                v.reset(OpMIPS64SGTU)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1664,8 +1601,7 @@ func rewriteValueMIPS64_OpLess64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPS64SGT)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
 }
@@ -1680,8 +1616,7 @@ func rewriteValueMIPS64_OpLess64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagTrue)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPGTD, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1695,8 +1630,7 @@ func rewriteValueMIPS64_OpLess64U(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPS64SGTU)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
 }
@@ -1713,10 +1647,9 @@ func rewriteValueMIPS64_OpLess8(v *Value) bool {
                v.reset(OpMIPS64SGT)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1733,10 +1666,9 @@ func rewriteValueMIPS64_OpLess8U(v *Value) bool {
                v.reset(OpMIPS64SGTU)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1754,8 +1686,7 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVBUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1769,8 +1700,7 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVBload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1784,8 +1714,7 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVBUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1799,8 +1728,7 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVHload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1814,8 +1742,7 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVHUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1829,8 +1756,7 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVWload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1844,8 +1770,7 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVWUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1859,8 +1784,7 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVVload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1874,8 +1798,7 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVFload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1889,8 +1812,7 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -1924,18 +1846,15 @@ func rewriteValueMIPS64_OpLsh16x16(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -1955,18 +1874,15 @@ func rewriteValueMIPS64_OpLsh16x32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -1986,14 +1902,11 @@ func rewriteValueMIPS64_OpLsh16x64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
-               v1.AddArg(y)
+               v1.AddArg2(v2, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v3 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v3.AddArg(x)
-               v3.AddArg(y)
-               v.AddArg(v3)
+               v3.AddArg2(x, y)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -2013,18 +1926,15 @@ func rewriteValueMIPS64_OpLsh16x8(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -2044,18 +1954,15 @@ func rewriteValueMIPS64_OpLsh32x16(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -2075,18 +1982,15 @@ func rewriteValueMIPS64_OpLsh32x32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -2106,14 +2010,11 @@ func rewriteValueMIPS64_OpLsh32x64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
-               v1.AddArg(y)
+               v1.AddArg2(v2, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v3 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v3.AddArg(x)
-               v3.AddArg(y)
-               v.AddArg(v3)
+               v3.AddArg2(x, y)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -2133,18 +2034,15 @@ func rewriteValueMIPS64_OpLsh32x8(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -2164,18 +2062,15 @@ func rewriteValueMIPS64_OpLsh64x16(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -2195,18 +2090,15 @@ func rewriteValueMIPS64_OpLsh64x32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -2226,14 +2118,11 @@ func rewriteValueMIPS64_OpLsh64x64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
-               v1.AddArg(y)
+               v1.AddArg2(v2, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v3 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v3.AddArg(x)
-               v3.AddArg(y)
-               v.AddArg(v3)
+               v3.AddArg2(x, y)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -2253,18 +2142,15 @@ func rewriteValueMIPS64_OpLsh64x8(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -2284,18 +2170,15 @@ func rewriteValueMIPS64_OpLsh8x16(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -2315,18 +2198,15 @@ func rewriteValueMIPS64_OpLsh8x32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -2346,14 +2226,11 @@ func rewriteValueMIPS64_OpLsh8x64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
-               v1.AddArg(y)
+               v1.AddArg2(v2, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v3 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v3.AddArg(x)
-               v3.AddArg(y)
-               v.AddArg(v3)
+               v3.AddArg2(x, y)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -2373,18 +2250,15 @@ func rewriteValueMIPS64_OpLsh8x8(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SLLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -2421,8 +2295,7 @@ func rewriteValueMIPS64_OpMIPS64ADDV(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpMIPS64SUBV)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -2617,8 +2490,7 @@ func rewriteValueMIPS64_OpMIPS64LoweredAtomicAdd32(v *Value) bool {
                }
                v.reset(OpMIPS64LoweredAtomicAddconst32)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2642,8 +2514,7 @@ func rewriteValueMIPS64_OpMIPS64LoweredAtomicAdd64(v *Value) bool {
                }
                v.reset(OpMIPS64LoweredAtomicAddconst64)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2661,8 +2532,7 @@ func rewriteValueMIPS64_OpMIPS64LoweredAtomicStore32(v *Value) bool {
                }
                mem := v_2
                v.reset(OpMIPS64LoweredAtomicStorezero32)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2680,8 +2550,7 @@ func rewriteValueMIPS64_OpMIPS64LoweredAtomicStore64(v *Value) bool {
                }
                mem := v_2
                v.reset(OpMIPS64LoweredAtomicStorezero64)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2707,8 +2576,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBUload(v *Value) bool {
                v.reset(OpMIPS64MOVBUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBUload [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -2730,8 +2598,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBUload(v *Value) bool {
                v.reset(OpMIPS64MOVBUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2795,8 +2662,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBload(v *Value) bool {
                v.reset(OpMIPS64MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -2818,8 +2684,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBload(v *Value) bool {
                v.reset(OpMIPS64MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2885,9 +2750,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstore(v *Value) bool {
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) val mem)
@@ -2910,9 +2773,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstore(v *Value) bool {
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVVconst [0]) mem)
@@ -2928,8 +2789,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstore(v *Value) bool {
                v.reset(OpMIPS64MOVBstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
@@ -2946,9 +2806,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstore(v *Value) bool {
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBUreg x) mem)
@@ -2965,9 +2823,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstore(v *Value) bool {
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
@@ -2984,9 +2840,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstore(v *Value) bool {
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVHUreg x) mem)
@@ -3003,9 +2857,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstore(v *Value) bool {
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVWreg x) mem)
@@ -3022,9 +2874,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstore(v *Value) bool {
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVWUreg x) mem)
@@ -3041,9 +2891,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstore(v *Value) bool {
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        return false
@@ -3069,8 +2917,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstorezero(v *Value) bool {
                v.reset(OpMIPS64MOVBstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstorezero [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -3092,8 +2939,7 @@ func rewriteValueMIPS64_OpMIPS64MOVBstorezero(v *Value) bool {
                v.reset(OpMIPS64MOVBstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3119,8 +2965,7 @@ func rewriteValueMIPS64_OpMIPS64MOVDload(v *Value) bool {
                v.reset(OpMIPS64MOVDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDload [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -3142,8 +2987,7 @@ func rewriteValueMIPS64_OpMIPS64MOVDload(v *Value) bool {
                v.reset(OpMIPS64MOVDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3171,9 +3015,7 @@ func rewriteValueMIPS64_OpMIPS64MOVDstore(v *Value) bool {
                v.reset(OpMIPS64MOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) val mem)
@@ -3196,9 +3038,7 @@ func rewriteValueMIPS64_OpMIPS64MOVDstore(v *Value) bool {
                v.reset(OpMIPS64MOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -3224,8 +3064,7 @@ func rewriteValueMIPS64_OpMIPS64MOVFload(v *Value) bool {
                v.reset(OpMIPS64MOVFload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVFload [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -3247,8 +3086,7 @@ func rewriteValueMIPS64_OpMIPS64MOVFload(v *Value) bool {
                v.reset(OpMIPS64MOVFload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3276,9 +3114,7 @@ func rewriteValueMIPS64_OpMIPS64MOVFstore(v *Value) bool {
                v.reset(OpMIPS64MOVFstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVFstore [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) val mem)
@@ -3301,9 +3137,7 @@ func rewriteValueMIPS64_OpMIPS64MOVFstore(v *Value) bool {
                v.reset(OpMIPS64MOVFstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -3329,8 +3163,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHUload(v *Value) bool {
                v.reset(OpMIPS64MOVHUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHUload [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -3352,8 +3185,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHUload(v *Value) bool {
                v.reset(OpMIPS64MOVHUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3440,8 +3272,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHload(v *Value) bool {
                v.reset(OpMIPS64MOVHload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHload [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -3463,8 +3294,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHload(v *Value) bool {
                v.reset(OpMIPS64MOVHload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3576,9 +3406,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHstore(v *Value) bool {
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) val mem)
@@ -3601,9 +3429,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHstore(v *Value) bool {
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVVconst [0]) mem)
@@ -3619,8 +3445,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHstore(v *Value) bool {
                v.reset(OpMIPS64MOVHstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
@@ -3637,9 +3462,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHstore(v *Value) bool {
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHUreg x) mem)
@@ -3656,9 +3479,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHstore(v *Value) bool {
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVWreg x) mem)
@@ -3675,9 +3496,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHstore(v *Value) bool {
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVWUreg x) mem)
@@ -3694,9 +3513,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHstore(v *Value) bool {
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        return false
@@ -3722,8 +3539,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHstorezero(v *Value) bool {
                v.reset(OpMIPS64MOVHstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstorezero [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -3745,8 +3561,7 @@ func rewriteValueMIPS64_OpMIPS64MOVHstorezero(v *Value) bool {
                v.reset(OpMIPS64MOVHstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3772,8 +3587,7 @@ func rewriteValueMIPS64_OpMIPS64MOVVload(v *Value) bool {
                v.reset(OpMIPS64MOVVload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVVload [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -3795,8 +3609,7 @@ func rewriteValueMIPS64_OpMIPS64MOVVload(v *Value) bool {
                v.reset(OpMIPS64MOVVload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3851,9 +3664,7 @@ func rewriteValueMIPS64_OpMIPS64MOVVstore(v *Value) bool {
                v.reset(OpMIPS64MOVVstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVVstore [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) val mem)
@@ -3876,9 +3687,7 @@ func rewriteValueMIPS64_OpMIPS64MOVVstore(v *Value) bool {
                v.reset(OpMIPS64MOVVstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVVstore [off] {sym} ptr (MOVVconst [0]) mem)
@@ -3894,8 +3703,7 @@ func rewriteValueMIPS64_OpMIPS64MOVVstore(v *Value) bool {
                v.reset(OpMIPS64MOVVstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3921,8 +3729,7 @@ func rewriteValueMIPS64_OpMIPS64MOVVstorezero(v *Value) bool {
                v.reset(OpMIPS64MOVVstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVVstorezero [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -3944,8 +3751,7 @@ func rewriteValueMIPS64_OpMIPS64MOVVstorezero(v *Value) bool {
                v.reset(OpMIPS64MOVVstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -3971,8 +3777,7 @@ func rewriteValueMIPS64_OpMIPS64MOVWUload(v *Value) bool {
                v.reset(OpMIPS64MOVWUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWUload [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -3994,8 +3799,7 @@ func rewriteValueMIPS64_OpMIPS64MOVWUload(v *Value) bool {
                v.reset(OpMIPS64MOVWUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -4105,8 +3909,7 @@ func rewriteValueMIPS64_OpMIPS64MOVWload(v *Value) bool {
                v.reset(OpMIPS64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -4128,8 +3931,7 @@ func rewriteValueMIPS64_OpMIPS64MOVWload(v *Value) bool {
                v.reset(OpMIPS64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -4276,9 +4078,7 @@ func rewriteValueMIPS64_OpMIPS64MOVWstore(v *Value) bool {
                v.reset(OpMIPS64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) val mem)
@@ -4301,9 +4101,7 @@ func rewriteValueMIPS64_OpMIPS64MOVWstore(v *Value) bool {
                v.reset(OpMIPS64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVVconst [0]) mem)
@@ -4319,8 +4117,7 @@ func rewriteValueMIPS64_OpMIPS64MOVWstore(v *Value) bool {
                v.reset(OpMIPS64MOVWstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWreg x) mem)
@@ -4336,10 +4133,8 @@ func rewriteValueMIPS64_OpMIPS64MOVWstore(v *Value) bool {
                mem := v_2
                v.reset(OpMIPS64MOVWstore)
                v.AuxInt = off
-               v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.Aux = sym
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWUreg x) mem)
@@ -4356,9 +4151,7 @@ func rewriteValueMIPS64_OpMIPS64MOVWstore(v *Value) bool {
                v.reset(OpMIPS64MOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        return false
@@ -4384,8 +4177,7 @@ func rewriteValueMIPS64_OpMIPS64MOVWstorezero(v *Value) bool {
                v.reset(OpMIPS64MOVWstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstorezero [off1] {sym1} (MOVVaddr [off2] {sym2} ptr) mem)
@@ -4407,8 +4199,7 @@ func rewriteValueMIPS64_OpMIPS64MOVWstorezero(v *Value) bool {
                v.reset(OpMIPS64MOVWstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -5239,10 +5030,9 @@ func rewriteValueMIPS64_OpMod16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVV, types.NewTuple(typ.Int64, typ.Int64))
                v1 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -5261,10 +5051,9 @@ func rewriteValueMIPS64_OpMod16u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVVU, types.NewTuple(typ.UInt64, typ.UInt64))
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -5283,10 +5072,9 @@ func rewriteValueMIPS64_OpMod32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVV, types.NewTuple(typ.Int64, typ.Int64))
                v1 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -5305,10 +5093,9 @@ func rewriteValueMIPS64_OpMod32u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVVU, types.NewTuple(typ.UInt64, typ.UInt64))
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -5325,8 +5112,7 @@ func rewriteValueMIPS64_OpMod64(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVV, types.NewTuple(typ.Int64, typ.Int64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -5343,8 +5129,7 @@ func rewriteValueMIPS64_OpMod64u(v *Value) bool {
                y := v_1
                v.reset(OpSelect0)
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVVU, types.NewTuple(typ.UInt64, typ.UInt64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -5363,10 +5148,9 @@ func rewriteValueMIPS64_OpMod8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVV, types.NewTuple(typ.Int64, typ.Int64))
                v1 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -5385,10 +5169,9 @@ func rewriteValueMIPS64_OpMod8u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64DIVVU, types.NewTuple(typ.UInt64, typ.UInt64))
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -5422,12 +5205,9 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpMIPS64MOVBstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVBload, typ.Int8)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] {t} dst src mem)
@@ -5445,12 +5225,9 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVHstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVHload, typ.Int16)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] dst src mem)
@@ -5464,20 +5241,14 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = 1
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVBload, typ.Int8)
                v0.AuxInt = 1
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVBload, typ.Int8)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [4] {t} dst src mem)
@@ -5495,12 +5266,9 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVWstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVWload, typ.Int32)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [4] {t} dst src mem)
@@ -5519,20 +5287,14 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                }
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVHload, typ.Int16)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVHload, typ.Int16)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [4] dst src mem)
@@ -5546,38 +5308,26 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = 3
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVBload, typ.Int8)
                v0.AuxInt = 3
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
                v1.AuxInt = 2
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVBload, typ.Int8)
                v2.AuxInt = 2
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
                v3.AuxInt = 1
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVBload, typ.Int8)
                v4.AuxInt = 1
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
+               v4.AddArg2(src, mem)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
-               v5.AddArg(dst)
                v6 := b.NewValue0(v.Pos, OpMIPS64MOVBload, typ.Int8)
-               v6.AddArg(src)
-               v6.AddArg(mem)
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v6.AddArg2(src, mem)
+               v5.AddArg3(dst, v6, mem)
+               v3.AddArg3(dst, v4, v5)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [8] {t} dst src mem)
@@ -5595,12 +5345,9 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVVstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVload, typ.UInt64)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [8] {t} dst src mem)
@@ -5619,20 +5366,14 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                }
                v.reset(OpMIPS64MOVWstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVWload, typ.Int32)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVWload, typ.Int32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [8] {t} dst src mem)
@@ -5651,38 +5392,26 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                }
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = 6
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVHload, typ.Int16)
                v0.AuxInt = 6
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVHload, typ.Int16)
                v2.AuxInt = 4
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
                v3.AuxInt = 2
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVHload, typ.Int16)
                v4.AuxInt = 2
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
+               v4.AddArg2(src, mem)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
-               v5.AddArg(dst)
                v6 := b.NewValue0(v.Pos, OpMIPS64MOVHload, typ.Int16)
-               v6.AddArg(src)
-               v6.AddArg(mem)
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v6.AddArg2(src, mem)
+               v5.AddArg3(dst, v6, mem)
+               v3.AddArg3(dst, v4, v5)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [3] dst src mem)
@@ -5696,29 +5425,20 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVBload, typ.Int8)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
                v1.AuxInt = 1
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVBload, typ.Int8)
                v2.AuxInt = 1
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVBload, typ.Int8)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [6] {t} dst src mem)
@@ -5737,29 +5457,20 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                }
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVHload, typ.Int16)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
                v1.AuxInt = 2
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVHload, typ.Int16)
                v2.AuxInt = 2
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVHload, typ.Int16)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [12] {t} dst src mem)
@@ -5778,29 +5489,20 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                }
                v.reset(OpMIPS64MOVWstore)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVWload, typ.Int32)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVWstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVWload, typ.Int32)
                v2.AuxInt = 4
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVWstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVWload, typ.Int32)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [16] {t} dst src mem)
@@ -5819,20 +5521,14 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                }
                v.reset(OpMIPS64MOVVstore)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVload, typ.UInt64)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVVstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVload, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [24] {t} dst src mem)
@@ -5851,29 +5547,20 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                }
                v.reset(OpMIPS64MOVVstore)
                v.AuxInt = 16
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVload, typ.UInt64)
                v0.AuxInt = 16
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVVstore, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVload, typ.UInt64)
                v2.AuxInt = 8
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVVstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVload, typ.UInt64)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] {t} dst src mem)
@@ -5890,9 +5577,7 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                }
                v.reset(OpMIPS64DUFFCOPY)
                v.AuxInt = 16 * (128 - s/8)
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        // match: (Move [s] {t} dst src mem)
@@ -5909,13 +5594,10 @@ func rewriteValueMIPS64_OpMove(v *Value) bool {
                }
                v.reset(OpMIPS64LoweredMove)
                v.AuxInt = t.(*types.Type).Alignment()
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpMIPS64ADDVconst, src.Type)
                v0.AuxInt = s - moveSize(t.(*types.Type).Alignment(), config)
                v0.AddArg(src)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(dst, src, v0, mem)
                return true
        }
        return false
@@ -5932,8 +5614,7 @@ func rewriteValueMIPS64_OpMul16(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpMIPS64MULVU, types.NewTuple(typ.UInt64, typ.UInt64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -5950,8 +5631,7 @@ func rewriteValueMIPS64_OpMul32(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpMIPS64MULVU, types.NewTuple(typ.UInt64, typ.UInt64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -5968,8 +5648,7 @@ func rewriteValueMIPS64_OpMul64(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpMIPS64MULVU, types.NewTuple(typ.UInt64, typ.UInt64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -5986,8 +5665,7 @@ func rewriteValueMIPS64_OpMul8(v *Value) bool {
                y := v_1
                v.reset(OpSelect1)
                v0 := b.NewValue0(v.Pos, OpMIPS64MULVU, types.NewTuple(typ.UInt64, typ.UInt64))
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -6006,14 +5684,12 @@ func rewriteValueMIPS64_OpNeq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v3.AuxInt = 0
-               v.AddArg(v3)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -6031,14 +5707,12 @@ func rewriteValueMIPS64_OpNeq32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v3.AuxInt = 0
-               v.AddArg(v3)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -6053,8 +5727,7 @@ func rewriteValueMIPS64_OpNeq32F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagFalse)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPEQF, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -6071,12 +5744,10 @@ func rewriteValueMIPS64_OpNeq64(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64SGTU)
                v0 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.UInt64)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6091,8 +5762,7 @@ func rewriteValueMIPS64_OpNeq64F(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64FPFlagFalse)
                v0 := b.NewValue0(v.Pos, OpMIPS64CMPEQD, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -6111,14 +5781,12 @@ func rewriteValueMIPS64_OpNeq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v3.AuxInt = 0
-               v.AddArg(v3)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -6134,12 +5802,10 @@ func rewriteValueMIPS64_OpNeqPtr(v *Value) bool {
                y := v_1
                v.reset(OpMIPS64SGTU)
                v0 := b.NewValue0(v.Pos, OpMIPS64XOR, typ.UInt64)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6198,9 +5864,7 @@ func rewriteValueMIPS64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpMIPS64LoweredPanicBoundsA)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -6216,9 +5880,7 @@ func rewriteValueMIPS64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpMIPS64LoweredPanicBoundsB)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -6234,9 +5896,7 @@ func rewriteValueMIPS64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpMIPS64LoweredPanicBoundsC)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        return false
@@ -6257,17 +5917,14 @@ func rewriteValueMIPS64_OpRotateLeft16(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr16)
                v0 := b.NewValue0(v.Pos, OpLsh16x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v1.AuxInt = c & 15
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh16Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v3.AuxInt = -c & 15
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -6288,17 +5945,14 @@ func rewriteValueMIPS64_OpRotateLeft32(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr32)
                v0 := b.NewValue0(v.Pos, OpLsh32x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v1.AuxInt = c & 31
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh32Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v3.AuxInt = -c & 31
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -6319,17 +5973,14 @@ func rewriteValueMIPS64_OpRotateLeft64(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr64)
                v0 := b.NewValue0(v.Pos, OpLsh64x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v1.AuxInt = c & 63
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh64Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v3.AuxInt = -c & 63
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -6350,17 +6001,14 @@ func rewriteValueMIPS64_OpRotateLeft8(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr8)
                v0 := b.NewValue0(v.Pos, OpLsh8x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v1.AuxInt = c & 7
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh8Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v3.AuxInt = -c & 7
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -6381,20 +6029,17 @@ func rewriteValueMIPS64_OpRsh16Ux16(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v.AddArg(v4)
+               v4.AddArg2(v5, v6)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -6414,20 +6059,17 @@ func rewriteValueMIPS64_OpRsh16Ux32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v.AddArg(v4)
+               v4.AddArg2(v5, v6)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -6447,16 +6089,13 @@ func rewriteValueMIPS64_OpRsh16Ux64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
-               v1.AddArg(y)
+               v1.AddArg2(v2, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v3 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v4.AddArg(x)
-               v3.AddArg(v4)
-               v3.AddArg(y)
-               v.AddArg(v3)
+               v3.AddArg2(v4, y)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -6476,20 +6115,17 @@ func rewriteValueMIPS64_OpRsh16Ux8(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v.AddArg(v4)
+               v4.AddArg2(v5, v6)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -6507,22 +6143,19 @@ func rewriteValueMIPS64_OpRsh16x16(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v4.AddArg(y)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v5.AuxInt = 63
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
-               v1.AddArg(v2)
                v6 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v6.AddArg(y)
-               v1.AddArg(v6)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v6)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6540,22 +6173,19 @@ func rewriteValueMIPS64_OpRsh16x32(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(y)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v5.AuxInt = 63
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
-               v1.AddArg(v2)
                v6 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v6.AddArg(y)
-               v1.AddArg(v6)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v6)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6573,18 +6203,15 @@ func rewriteValueMIPS64_OpRsh16x64(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
-               v3.AddArg(y)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 63
-               v3.AddArg(v4)
+               v3.AddArg2(y, v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v1.AddArg(y)
-               v.AddArg(v1)
+               v1.AddArg2(v2, y)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6602,22 +6229,19 @@ func rewriteValueMIPS64_OpRsh16x8(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v4.AddArg(y)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v5.AuxInt = 63
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
-               v1.AddArg(v2)
                v6 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v6.AddArg(y)
-               v1.AddArg(v6)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v6)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6637,20 +6261,17 @@ func rewriteValueMIPS64_OpRsh32Ux16(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v.AddArg(v4)
+               v4.AddArg2(v5, v6)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -6670,20 +6291,17 @@ func rewriteValueMIPS64_OpRsh32Ux32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v.AddArg(v4)
+               v4.AddArg2(v5, v6)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -6703,16 +6321,13 @@ func rewriteValueMIPS64_OpRsh32Ux64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
-               v1.AddArg(y)
+               v1.AddArg2(v2, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v3 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(x)
-               v3.AddArg(v4)
-               v3.AddArg(y)
-               v.AddArg(v3)
+               v3.AddArg2(v4, y)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -6732,20 +6347,17 @@ func rewriteValueMIPS64_OpRsh32Ux8(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v.AddArg(v4)
+               v4.AddArg2(v5, v6)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -6763,22 +6375,19 @@ func rewriteValueMIPS64_OpRsh32x16(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v4.AddArg(y)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v5.AuxInt = 63
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
-               v1.AddArg(v2)
                v6 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v6.AddArg(y)
-               v1.AddArg(v6)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v6)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6796,22 +6405,19 @@ func rewriteValueMIPS64_OpRsh32x32(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(y)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v5.AuxInt = 63
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
-               v1.AddArg(v2)
                v6 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v6.AddArg(y)
-               v1.AddArg(v6)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v6)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6829,18 +6435,15 @@ func rewriteValueMIPS64_OpRsh32x64(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
-               v3.AddArg(y)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 63
-               v3.AddArg(v4)
+               v3.AddArg2(y, v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v1.AddArg(y)
-               v.AddArg(v1)
+               v1.AddArg2(v2, y)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6858,22 +6461,19 @@ func rewriteValueMIPS64_OpRsh32x8(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v4.AddArg(y)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v5.AuxInt = 63
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
-               v1.AddArg(v2)
                v6 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v6.AddArg(y)
-               v1.AddArg(v6)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v6)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -6893,18 +6493,15 @@ func rewriteValueMIPS64_OpRsh64Ux16(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -6924,18 +6521,15 @@ func rewriteValueMIPS64_OpRsh64Ux32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -6955,14 +6549,11 @@ func rewriteValueMIPS64_OpRsh64Ux64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
-               v1.AddArg(y)
+               v1.AddArg2(v2, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v3 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
-               v3.AddArg(x)
-               v3.AddArg(y)
-               v.AddArg(v3)
+               v3.AddArg2(x, y)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -6982,18 +6573,15 @@ func rewriteValueMIPS64_OpRsh64Ux8(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -7009,22 +6597,19 @@ func rewriteValueMIPS64_OpRsh64x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPS64SRAV)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v1 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 63
-               v2.AddArg(v4)
+               v2.AddArg2(v3, v4)
                v1.AddArg(v2)
-               v0.AddArg(v1)
                v5 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v5.AddArg(y)
-               v0.AddArg(v5)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v5)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -7040,22 +6625,19 @@ func rewriteValueMIPS64_OpRsh64x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPS64SRAV)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v1 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 63
-               v2.AddArg(v4)
+               v2.AddArg2(v3, v4)
                v1.AddArg(v2)
-               v0.AddArg(v1)
                v5 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v5.AddArg(y)
-               v0.AddArg(v5)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v5)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -7071,18 +6653,15 @@ func rewriteValueMIPS64_OpRsh64x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPS64SRAV)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v1 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
-               v2.AddArg(y)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v3.AuxInt = 63
-               v2.AddArg(v3)
+               v2.AddArg2(y, v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -7098,22 +6677,19 @@ func rewriteValueMIPS64_OpRsh64x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpMIPS64SRAV)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v1 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 63
-               v2.AddArg(v4)
+               v2.AddArg2(v3, v4)
                v1.AddArg(v2)
-               v0.AddArg(v1)
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(y)
-               v0.AddArg(v5)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v5)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -7133,20 +6709,17 @@ func rewriteValueMIPS64_OpRsh8Ux16(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v.AddArg(v4)
+               v4.AddArg2(v5, v6)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -7166,20 +6739,17 @@ func rewriteValueMIPS64_OpRsh8Ux32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v.AddArg(v4)
+               v4.AddArg2(v5, v6)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -7199,16 +6769,13 @@ func rewriteValueMIPS64_OpRsh8Ux64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
-               v1.AddArg(y)
+               v1.AddArg2(v2, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v3 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v4.AddArg(x)
-               v3.AddArg(v4)
-               v3.AddArg(y)
-               v.AddArg(v3)
+               v3.AddArg2(v4, y)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -7228,20 +6795,17 @@ func rewriteValueMIPS64_OpRsh8Ux8(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 64
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v3.AddArg(y)
-               v1.AddArg(v3)
+               v1.AddArg2(v2, v3)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v4 := b.NewValue0(v.Pos, OpMIPS64SRLV, t)
                v5 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v.AddArg(v4)
+               v4.AddArg2(v5, v6)
+               v.AddArg2(v0, v4)
                return true
        }
 }
@@ -7259,22 +6823,19 @@ func rewriteValueMIPS64_OpRsh8x16(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v4.AddArg(y)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v5.AuxInt = 63
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
-               v1.AddArg(v2)
                v6 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v6.AddArg(y)
-               v1.AddArg(v6)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v6)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -7292,22 +6853,19 @@ func rewriteValueMIPS64_OpRsh8x32(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(y)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v5.AuxInt = 63
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
-               v1.AddArg(v2)
                v6 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v6.AddArg(y)
-               v1.AddArg(v6)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v6)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -7325,18 +6883,15 @@ func rewriteValueMIPS64_OpRsh8x64(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
-               v3.AddArg(y)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 63
-               v3.AddArg(v4)
+               v3.AddArg2(y, v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v1.AddArg(y)
-               v.AddArg(v1)
+               v1.AddArg2(v2, y)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -7354,22 +6909,19 @@ func rewriteValueMIPS64_OpRsh8x8(v *Value) bool {
                v.reset(OpMIPS64SRAV)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64OR, t)
                v2 := b.NewValue0(v.Pos, OpMIPS64NEGV, t)
                v3 := b.NewValue0(v.Pos, OpMIPS64SGTU, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v4.AddArg(y)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v5.AuxInt = 63
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
-               v1.AddArg(v2)
                v6 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v6.AddArg(y)
-               v1.AddArg(v6)
-               v.AddArg(v1)
+               v1.AddArg2(v2, v6)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -7683,9 +7235,7 @@ func rewriteValueMIPS64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVBstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -7700,9 +7250,7 @@ func rewriteValueMIPS64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVHstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -7717,9 +7265,7 @@ func rewriteValueMIPS64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVWstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -7734,9 +7280,7 @@ func rewriteValueMIPS64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVVstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -7751,9 +7295,7 @@ func rewriteValueMIPS64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVFstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -7768,9 +7310,7 @@ func rewriteValueMIPS64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -7802,11 +7342,9 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpMIPS64MOVBstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [2] {t} ptr mem)
@@ -7823,11 +7361,9 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVHstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [2] ptr mem)
@@ -7840,18 +7376,14 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = 1
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [4] {t} ptr mem)
@@ -7868,11 +7400,9 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVWstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [4] {t} ptr mem)
@@ -7890,18 +7420,14 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                }
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = 2
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [4] ptr mem)
@@ -7914,32 +7440,24 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = 3
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
                v1.AuxInt = 2
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
                v3.AuxInt = 1
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
                v5.AuxInt = 0
-               v5.AddArg(ptr)
                v6 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v6.AuxInt = 0
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg3(ptr, v6, mem)
+               v3.AddArg3(ptr, v4, v5)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [8] {t} ptr mem)
@@ -7956,11 +7474,9 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpMIPS64MOVVstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [8] {t} ptr mem)
@@ -7978,18 +7494,14 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                }
                v.reset(OpMIPS64MOVWstore)
                v.AuxInt = 4
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVWstore, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [8] {t} ptr mem)
@@ -8007,32 +7519,24 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                }
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = 6
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
                v3.AuxInt = 2
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
                v5.AuxInt = 0
-               v5.AddArg(ptr)
                v6 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v6.AuxInt = 0
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg3(ptr, v6, mem)
+               v3.AddArg3(ptr, v4, v5)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [3] ptr mem)
@@ -8045,25 +7549,19 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpMIPS64MOVBstore)
                v.AuxInt = 2
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
                v1.AuxInt = 1
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVBstore, types.TypeMem)
                v3.AuxInt = 0
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [6] {t} ptr mem)
@@ -8081,25 +7579,19 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                }
                v.reset(OpMIPS64MOVHstore)
                v.AuxInt = 4
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
                v1.AuxInt = 2
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVHstore, types.TypeMem)
                v3.AuxInt = 0
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [12] {t} ptr mem)
@@ -8117,25 +7609,19 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                }
                v.reset(OpMIPS64MOVWstore)
                v.AuxInt = 8
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVWstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVWstore, types.TypeMem)
                v3.AuxInt = 0
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [16] {t} ptr mem)
@@ -8153,18 +7639,14 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                }
                v.reset(OpMIPS64MOVVstore)
                v.AuxInt = 8
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVVstore, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(ptr, v2, mem)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [24] {t} ptr mem)
@@ -8182,25 +7664,19 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                }
                v.reset(OpMIPS64MOVVstore)
                v.AuxInt = 16
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpMIPS64MOVVstore, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(ptr)
                v2 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpMIPS64MOVVstore, types.TypeMem)
                v3.AuxInt = 0
-               v3.AddArg(ptr)
                v4 := b.NewValue0(v.Pos, OpMIPS64MOVVconst, typ.UInt64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(ptr, v4, mem)
+               v1.AddArg3(ptr, v2, v3)
+               v.AddArg3(ptr, v0, v1)
                return true
        }
        // match: (Zero [s] {t} ptr mem)
@@ -8216,8 +7692,7 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                }
                v.reset(OpMIPS64DUFFZERO)
                v.AuxInt = 8 * (128 - s/8)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Zero [s] {t} ptr mem)
@@ -8233,12 +7708,10 @@ func rewriteValueMIPS64_OpZero(v *Value) bool {
                }
                v.reset(OpMIPS64LoweredZero)
                v.AuxInt = t.(*types.Type).Alignment()
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMIPS64ADDVconst, ptr.Type)
                v0.AuxInt = s - moveSize(t.(*types.Type).Alignment(), config)
                v0.AddArg(ptr)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        return false
index 53549dda748633d789314033cc97625232368d43..c7b4f44920baa61ec4df8e5977cbb35174ef2813 100644 (file)
@@ -810,10 +810,7 @@ func rewriteValuePPC64_OpAtomicCompareAndSwap32(v *Value) bool {
                mem := v_3
                v.reset(OpPPC64LoweredAtomicCas32)
                v.AuxInt = 1
-               v.AddArg(ptr)
-               v.AddArg(old)
-               v.AddArg(new_)
-               v.AddArg(mem)
+               v.AddArg4(ptr, old, new_, mem)
                return true
        }
 }
@@ -831,10 +828,7 @@ func rewriteValuePPC64_OpAtomicCompareAndSwap64(v *Value) bool {
                mem := v_3
                v.reset(OpPPC64LoweredAtomicCas64)
                v.AuxInt = 1
-               v.AddArg(ptr)
-               v.AddArg(old)
-               v.AddArg(new_)
-               v.AddArg(mem)
+               v.AddArg4(ptr, old, new_, mem)
                return true
        }
 }
@@ -852,10 +846,7 @@ func rewriteValuePPC64_OpAtomicCompareAndSwapRel32(v *Value) bool {
                mem := v_3
                v.reset(OpPPC64LoweredAtomicCas32)
                v.AuxInt = 0
-               v.AddArg(ptr)
-               v.AddArg(old)
-               v.AddArg(new_)
-               v.AddArg(mem)
+               v.AddArg4(ptr, old, new_, mem)
                return true
        }
 }
@@ -869,8 +860,7 @@ func rewriteValuePPC64_OpAtomicLoad32(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64LoweredAtomicLoad32)
                v.AuxInt = 1
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
 }
@@ -884,8 +874,7 @@ func rewriteValuePPC64_OpAtomicLoad64(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64LoweredAtomicLoad64)
                v.AuxInt = 1
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
 }
@@ -899,8 +888,7 @@ func rewriteValuePPC64_OpAtomicLoad8(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64LoweredAtomicLoad8)
                v.AuxInt = 1
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
 }
@@ -914,8 +902,7 @@ func rewriteValuePPC64_OpAtomicLoadAcq32(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64LoweredAtomicLoad32)
                v.AuxInt = 0
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
 }
@@ -929,8 +916,7 @@ func rewriteValuePPC64_OpAtomicLoadPtr(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64LoweredAtomicLoadPtr)
                v.AuxInt = 1
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
 }
@@ -946,9 +932,7 @@ func rewriteValuePPC64_OpAtomicStore32(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64LoweredAtomicStore32)
                v.AuxInt = 1
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
 }
@@ -964,9 +948,7 @@ func rewriteValuePPC64_OpAtomicStore64(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64LoweredAtomicStore64)
                v.AuxInt = 1
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
 }
@@ -982,9 +964,7 @@ func rewriteValuePPC64_OpAtomicStore8(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64LoweredAtomicStore8)
                v.AuxInt = 1
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
 }
@@ -1000,9 +980,7 @@ func rewriteValuePPC64_OpAtomicStoreRel32(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64LoweredAtomicStore32)
                v.AuxInt = 0
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
 }
@@ -1020,11 +998,9 @@ func rewriteValuePPC64_OpAvg64u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64SRDconst, t)
                v0.AuxInt = 1
                v1 := b.NewValue0(v.Pos, OpPPC64SUB, t)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -1039,10 +1015,9 @@ func rewriteValuePPC64_OpBitLen32(v *Value) bool {
                v.reset(OpPPC64SUB)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 32
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64CNTLZW, typ.Int)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1057,10 +1032,9 @@ func rewriteValuePPC64_OpBitLen64(v *Value) bool {
                v.reset(OpPPC64SUB)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 64
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64CNTLZD, typ.Int)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1071,8 +1045,7 @@ func rewriteValuePPC64_OpCom16(v *Value) bool {
        for {
                x := v_0
                v.reset(OpPPC64NOR)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
 }
@@ -1083,8 +1056,7 @@ func rewriteValuePPC64_OpCom32(v *Value) bool {
        for {
                x := v_0
                v.reset(OpPPC64NOR)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
 }
@@ -1095,8 +1067,7 @@ func rewriteValuePPC64_OpCom64(v *Value) bool {
        for {
                x := v_0
                v.reset(OpPPC64NOR)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
 }
@@ -1107,8 +1078,7 @@ func rewriteValuePPC64_OpCom8(v *Value) bool {
        for {
                x := v_0
                v.reset(OpPPC64NOR)
-               v.AddArg(x)
-               v.AddArg(x)
+               v.AddArg2(x, x)
                return true
        }
 }
@@ -1129,9 +1099,7 @@ func rewriteValuePPC64_OpCondSelect(v *Value) bool {
                }
                v.reset(OpPPC64ISEL)
                v.AuxInt = 2
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(bool)
+               v.AddArg3(x, y, bool)
                return true
        }
        // match: (CondSelect x y bool)
@@ -1146,12 +1114,10 @@ func rewriteValuePPC64_OpCondSelect(v *Value) bool {
                }
                v.reset(OpPPC64ISEL)
                v.AuxInt = 2
-               v.AddArg(x)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPWconst, types.TypeFlags)
                v0.AuxInt = 0
                v0.AddArg(bool)
-               v.AddArg(v0)
+               v.AddArg3(x, y, v0)
                return true
        }
        return false
@@ -1174,8 +1140,7 @@ func rewriteValuePPC64_OpCopysign(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64FCPSGN)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
 }
@@ -1193,8 +1158,7 @@ func rewriteValuePPC64_OpCtz16(v *Value) bool {
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconst, typ.Int16)
                v2.AuxInt = -1
                v2.AddArg(x)
-               v1.AddArg(v2)
-               v1.AddArg(x)
+               v1.AddArg2(v2, x)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -1218,8 +1182,7 @@ func rewriteValuePPC64_OpCtz32(v *Value) bool {
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconst, typ.Int)
                v2.AuxInt = -1
                v2.AddArg(x)
-               v1.AddArg(v2)
-               v1.AddArg(x)
+               v1.AddArg2(v2, x)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -1252,8 +1215,7 @@ func rewriteValuePPC64_OpCtz64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpPPC64ADDconst, typ.Int64)
                v1.AuxInt = -1
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(x)
+               v0.AddArg2(v1, x)
                v.AddArg(v0)
                return true
        }
@@ -1280,8 +1242,7 @@ func rewriteValuePPC64_OpCtz8(v *Value) bool {
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconst, typ.UInt8)
                v2.AuxInt = -1
                v2.AddArg(x)
-               v1.AddArg(v2)
-               v1.AddArg(x)
+               v1.AddArg2(v2, x)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -1424,10 +1385,9 @@ func rewriteValuePPC64_OpDiv16(v *Value) bool {
                v.reset(OpPPC64DIVW)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1444,10 +1404,9 @@ func rewriteValuePPC64_OpDiv16u(v *Value) bool {
                v.reset(OpPPC64DIVWU)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1464,10 +1423,9 @@ func rewriteValuePPC64_OpDiv8(v *Value) bool {
                v.reset(OpPPC64DIVW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1484,10 +1442,9 @@ func rewriteValuePPC64_OpDiv8u(v *Value) bool {
                v.reset(OpPPC64DIVWU)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1510,10 +1467,9 @@ func rewriteValuePPC64_OpEq16(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                        v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                        v2.AddArg(y)
-                       v0.AddArg(v2)
+                       v0.AddArg2(v1, v2)
                        v.AddArg(v0)
                        return true
                }
@@ -1528,10 +1484,9 @@ func rewriteValuePPC64_OpEq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1547,8 +1502,7 @@ func rewriteValuePPC64_OpEq32(v *Value) bool {
                y := v_1
                v.reset(OpPPC64Equal)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1564,8 +1518,7 @@ func rewriteValuePPC64_OpEq32F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64Equal)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1581,8 +1534,7 @@ func rewriteValuePPC64_OpEq64(v *Value) bool {
                y := v_1
                v.reset(OpPPC64Equal)
                v0 := b.NewValue0(v.Pos, OpPPC64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1598,8 +1550,7 @@ func rewriteValuePPC64_OpEq64F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64Equal)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1623,10 +1574,9 @@ func rewriteValuePPC64_OpEq8(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                        v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                        v2.AddArg(y)
-                       v0.AddArg(v2)
+                       v0.AddArg2(v1, v2)
                        v.AddArg(v0)
                        return true
                }
@@ -1641,10 +1591,9 @@ func rewriteValuePPC64_OpEq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1662,8 +1611,7 @@ func rewriteValuePPC64_OpEqB(v *Value) bool {
                v.reset(OpPPC64ANDconst)
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpPPC64EQV, typ.Int64)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1679,8 +1627,7 @@ func rewriteValuePPC64_OpEqPtr(v *Value) bool {
                y := v_1
                v.reset(OpPPC64Equal)
                v0 := b.NewValue0(v.Pos, OpPPC64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1696,8 +1643,7 @@ func rewriteValuePPC64_OpGeq32F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64FGreaterEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1713,8 +1659,7 @@ func rewriteValuePPC64_OpGeq64F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64FGreaterEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1730,8 +1675,7 @@ func rewriteValuePPC64_OpGreater32F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64FGreaterThan)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1747,8 +1691,7 @@ func rewriteValuePPC64_OpGreater64F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64FGreaterThan)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1764,8 +1707,7 @@ func rewriteValuePPC64_OpIsInBounds(v *Value) bool {
                len := v_1
                v.reset(OpPPC64LessThan)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPU, types.TypeFlags)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -1796,8 +1738,7 @@ func rewriteValuePPC64_OpIsSliceInBounds(v *Value) bool {
                len := v_1
                v.reset(OpPPC64LessEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPU, types.TypeFlags)
-               v0.AddArg(idx)
-               v0.AddArg(len)
+               v0.AddArg2(idx, len)
                v.AddArg(v0)
                return true
        }
@@ -1816,10 +1757,9 @@ func rewriteValuePPC64_OpLeq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1838,10 +1778,9 @@ func rewriteValuePPC64_OpLeq16U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPWU, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1857,8 +1796,7 @@ func rewriteValuePPC64_OpLeq32(v *Value) bool {
                y := v_1
                v.reset(OpPPC64LessEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1874,8 +1812,7 @@ func rewriteValuePPC64_OpLeq32F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64FLessEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1891,8 +1828,7 @@ func rewriteValuePPC64_OpLeq32U(v *Value) bool {
                y := v_1
                v.reset(OpPPC64LessEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPWU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1908,8 +1844,7 @@ func rewriteValuePPC64_OpLeq64(v *Value) bool {
                y := v_1
                v.reset(OpPPC64LessEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1925,8 +1860,7 @@ func rewriteValuePPC64_OpLeq64F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64FLessEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1942,8 +1876,7 @@ func rewriteValuePPC64_OpLeq64U(v *Value) bool {
                y := v_1
                v.reset(OpPPC64LessEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -1962,10 +1895,9 @@ func rewriteValuePPC64_OpLeq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1984,10 +1916,9 @@ func rewriteValuePPC64_OpLeq8U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPWU, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -2006,10 +1937,9 @@ func rewriteValuePPC64_OpLess16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -2028,10 +1958,9 @@ func rewriteValuePPC64_OpLess16U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPWU, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -2047,8 +1976,7 @@ func rewriteValuePPC64_OpLess32(v *Value) bool {
                y := v_1
                v.reset(OpPPC64LessThan)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2064,8 +1992,7 @@ func rewriteValuePPC64_OpLess32F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64FLessThan)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2081,8 +2008,7 @@ func rewriteValuePPC64_OpLess32U(v *Value) bool {
                y := v_1
                v.reset(OpPPC64LessThan)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPWU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2098,8 +2024,7 @@ func rewriteValuePPC64_OpLess64(v *Value) bool {
                y := v_1
                v.reset(OpPPC64LessThan)
                v0 := b.NewValue0(v.Pos, OpPPC64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2115,8 +2040,7 @@ func rewriteValuePPC64_OpLess64F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64FLessThan)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2132,8 +2056,7 @@ func rewriteValuePPC64_OpLess64U(v *Value) bool {
                y := v_1
                v.reset(OpPPC64LessThan)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2152,10 +2075,9 @@ func rewriteValuePPC64_OpLess8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -2174,10 +2096,9 @@ func rewriteValuePPC64_OpLess8U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPWU, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -2198,8 +2119,7 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2213,8 +2133,7 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVWload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2228,8 +2147,7 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVWZload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2243,8 +2161,7 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVHload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2258,8 +2175,7 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVHZload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2273,8 +2189,7 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVBZload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2289,8 +2204,7 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
                }
                v.reset(OpPPC64MOVBreg)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBZload, typ.UInt8)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -2305,8 +2219,7 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVBZload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2320,8 +2233,7 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpPPC64FMOVSload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2335,8 +2247,7 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpPPC64FMOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2369,8 +2280,7 @@ func rewriteValuePPC64_OpLsh16x16(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh16x16 x y)
@@ -2379,9 +2289,7 @@ func rewriteValuePPC64_OpLsh16x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -16
@@ -2389,8 +2297,8 @@ func rewriteValuePPC64_OpLsh16x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2443,8 +2351,7 @@ func rewriteValuePPC64_OpLsh16x32(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh16x32 x y)
@@ -2453,9 +2360,7 @@ func rewriteValuePPC64_OpLsh16x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -16
@@ -2463,8 +2368,8 @@ func rewriteValuePPC64_OpLsh16x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2532,8 +2437,7 @@ func rewriteValuePPC64_OpLsh16x64(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh16x64 x y)
@@ -2542,16 +2446,14 @@ func rewriteValuePPC64_OpLsh16x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -16
                v2.AddArg(y)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2570,8 +2472,7 @@ func rewriteValuePPC64_OpLsh16x8(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh16x8 x y)
@@ -2580,9 +2481,7 @@ func rewriteValuePPC64_OpLsh16x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -16
@@ -2590,8 +2489,8 @@ func rewriteValuePPC64_OpLsh16x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2610,8 +2509,7 @@ func rewriteValuePPC64_OpLsh32x16(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh32x16 x y)
@@ -2620,9 +2518,7 @@ func rewriteValuePPC64_OpLsh32x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
@@ -2630,8 +2526,8 @@ func rewriteValuePPC64_OpLsh32x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2684,8 +2580,7 @@ func rewriteValuePPC64_OpLsh32x32(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh32x32 x y)
@@ -2694,9 +2589,7 @@ func rewriteValuePPC64_OpLsh32x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
@@ -2704,8 +2597,8 @@ func rewriteValuePPC64_OpLsh32x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2773,8 +2666,7 @@ func rewriteValuePPC64_OpLsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh32x64 x (AND y (MOVDconst [31])))
@@ -2793,11 +2685,10 @@ func rewriteValuePPC64_OpLsh32x64(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64SLW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.Int32)
                        v0.AuxInt = 31
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -2811,11 +2702,10 @@ func rewriteValuePPC64_OpLsh32x64(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.Int32)
                v0.AuxInt = 31
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh32x64 x y)
@@ -2824,16 +2714,14 @@ func rewriteValuePPC64_OpLsh32x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2852,8 +2740,7 @@ func rewriteValuePPC64_OpLsh32x8(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh32x8 x y)
@@ -2862,9 +2749,7 @@ func rewriteValuePPC64_OpLsh32x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
@@ -2872,8 +2757,8 @@ func rewriteValuePPC64_OpLsh32x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2892,8 +2777,7 @@ func rewriteValuePPC64_OpLsh64x16(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh64x16 x y)
@@ -2902,9 +2786,7 @@ func rewriteValuePPC64_OpLsh64x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
@@ -2912,8 +2794,8 @@ func rewriteValuePPC64_OpLsh64x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2966,8 +2848,7 @@ func rewriteValuePPC64_OpLsh64x32(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh64x32 x y)
@@ -2976,9 +2857,7 @@ func rewriteValuePPC64_OpLsh64x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
@@ -2986,8 +2865,8 @@ func rewriteValuePPC64_OpLsh64x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3055,8 +2934,7 @@ func rewriteValuePPC64_OpLsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh64x64 x (AND y (MOVDconst [63])))
@@ -3075,11 +2953,10 @@ func rewriteValuePPC64_OpLsh64x64(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64SLD)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.Int64)
                        v0.AuxInt = 63
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -3093,11 +2970,10 @@ func rewriteValuePPC64_OpLsh64x64(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpPPC64SLD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.Int64)
                v0.AuxInt = 63
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh64x64 x y)
@@ -3106,16 +2982,14 @@ func rewriteValuePPC64_OpLsh64x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3134,8 +3008,7 @@ func rewriteValuePPC64_OpLsh64x8(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh64x8 x y)
@@ -3144,9 +3017,7 @@ func rewriteValuePPC64_OpLsh64x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
@@ -3154,8 +3025,8 @@ func rewriteValuePPC64_OpLsh64x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3174,8 +3045,7 @@ func rewriteValuePPC64_OpLsh8x16(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh8x16 x y)
@@ -3184,9 +3054,7 @@ func rewriteValuePPC64_OpLsh8x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -8
@@ -3194,8 +3062,8 @@ func rewriteValuePPC64_OpLsh8x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3248,8 +3116,7 @@ func rewriteValuePPC64_OpLsh8x32(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh8x32 x y)
@@ -3258,9 +3125,7 @@ func rewriteValuePPC64_OpLsh8x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -8
@@ -3268,8 +3133,8 @@ func rewriteValuePPC64_OpLsh8x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3337,8 +3202,7 @@ func rewriteValuePPC64_OpLsh8x64(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh8x64 x y)
@@ -3347,16 +3211,14 @@ func rewriteValuePPC64_OpLsh8x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -8
                v2.AddArg(y)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3375,8 +3237,7 @@ func rewriteValuePPC64_OpLsh8x8(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh8x8 x y)
@@ -3385,9 +3246,7 @@ func rewriteValuePPC64_OpLsh8x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SLW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -8
@@ -3395,8 +3254,8 @@ func rewriteValuePPC64_OpLsh8x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3413,10 +3272,9 @@ func rewriteValuePPC64_OpMod16(v *Value) bool {
                v.reset(OpMod32)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3433,10 +3291,9 @@ func rewriteValuePPC64_OpMod16u(v *Value) bool {
                v.reset(OpMod32u)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3451,14 +3308,11 @@ func rewriteValuePPC64_OpMod32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SUB)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64MULLW, typ.Int32)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64DIVW, typ.Int32)
-               v1.AddArg(x)
-               v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(x, y)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3473,14 +3327,11 @@ func rewriteValuePPC64_OpMod32u(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SUB)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64MULLW, typ.Int32)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64DIVWU, typ.Int32)
-               v1.AddArg(x)
-               v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(x, y)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3495,14 +3346,11 @@ func rewriteValuePPC64_OpMod64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SUB)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64MULLD, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64DIVD, typ.Int64)
-               v1.AddArg(x)
-               v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(x, y)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3517,14 +3365,11 @@ func rewriteValuePPC64_OpMod64u(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SUB)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64MULLD, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64DIVDU, typ.Int64)
-               v1.AddArg(x)
-               v1.AddArg(y)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(x, y)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3541,10 +3386,9 @@ func rewriteValuePPC64_OpMod8(v *Value) bool {
                v.reset(OpMod32)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3561,10 +3405,9 @@ func rewriteValuePPC64_OpMod8u(v *Value) bool {
                v.reset(OpMod32u)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3596,12 +3439,9 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpPPC64MOVBstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBZload, typ.UInt8)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] dst src mem)
@@ -3614,12 +3454,9 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpPPC64MOVHstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHZload, typ.UInt16)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [4] dst src mem)
@@ -3632,12 +3469,9 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpPPC64MOVWstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVWZload, typ.UInt32)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [8] {t} dst src mem)
@@ -3655,12 +3489,9 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVDstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, typ.Int64)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [8] dst src mem)
@@ -3674,20 +3505,14 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVWstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVWZload, typ.UInt32)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpPPC64MOVWZload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [3] dst src mem)
@@ -3701,20 +3526,14 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBZload, typ.UInt8)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVHstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpPPC64MOVHload, typ.Int16)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [5] dst src mem)
@@ -3728,20 +3547,14 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBZload, typ.UInt8)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpPPC64MOVWZload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [6] dst src mem)
@@ -3755,20 +3568,14 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHZload, typ.UInt16)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpPPC64MOVWZload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [7] dst src mem)
@@ -3782,29 +3589,20 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = 6
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBZload, typ.UInt8)
                v0.AuxInt = 6
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVHstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpPPC64MOVHZload, typ.UInt16)
                v2.AuxInt = 4
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpPPC64MOVWstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpPPC64MOVWZload, typ.UInt32)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -3820,9 +3618,7 @@ func rewriteValuePPC64_OpMove(v *Value) bool {
                }
                v.reset(OpPPC64LoweredMove)
                v.AuxInt = s
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        return false
@@ -3846,10 +3642,9 @@ func rewriteValuePPC64_OpNeq16(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                        v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                        v2.AddArg(y)
-                       v0.AddArg(v2)
+                       v0.AddArg2(v1, v2)
                        v.AddArg(v0)
                        return true
                }
@@ -3864,10 +3659,9 @@ func rewriteValuePPC64_OpNeq16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -3883,8 +3677,7 @@ func rewriteValuePPC64_OpNeq32(v *Value) bool {
                y := v_1
                v.reset(OpPPC64NotEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -3900,8 +3693,7 @@ func rewriteValuePPC64_OpNeq32F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64NotEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -3917,8 +3709,7 @@ func rewriteValuePPC64_OpNeq64(v *Value) bool {
                y := v_1
                v.reset(OpPPC64NotEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -3934,8 +3725,7 @@ func rewriteValuePPC64_OpNeq64F(v *Value) bool {
                y := v_1
                v.reset(OpPPC64NotEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64FCMPU, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -3959,10 +3749,9 @@ func rewriteValuePPC64_OpNeq8(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                        v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                        v2.AddArg(y)
-                       v0.AddArg(v2)
+                       v0.AddArg2(v1, v2)
                        v.AddArg(v0)
                        return true
                }
@@ -3977,10 +3766,9 @@ func rewriteValuePPC64_OpNeq8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -3996,8 +3784,7 @@ func rewriteValuePPC64_OpNeqPtr(v *Value) bool {
                y := v_1
                v.reset(OpPPC64NotEqual)
                v0 := b.NewValue0(v.Pos, OpPPC64CMP, types.TypeFlags)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -4026,8 +3813,7 @@ func rewriteValuePPC64_OpOffPtr(v *Value) bool {
                v.reset(OpPPC64ADD)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = off
-               v.AddArg(v0)
-               v.AddArg(ptr)
+               v.AddArg2(v0, ptr)
                return true
        }
 }
@@ -4119,8 +3905,7 @@ func rewriteValuePPC64_OpPPC64ADD(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64ROTL)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -4160,8 +3945,7 @@ func rewriteValuePPC64_OpPPC64ADD(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64ROTLW)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -4254,8 +4038,7 @@ func rewriteValuePPC64_OpPPC64AND(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64ANDN)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -4585,8 +4368,7 @@ func rewriteValuePPC64_OpPPC64CMP(v *Value) bool {
                }
                v.reset(OpPPC64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpPPC64CMP, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -4643,8 +4425,7 @@ func rewriteValuePPC64_OpPPC64CMPU(v *Value) bool {
                }
                v.reset(OpPPC64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPU, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -4712,8 +4493,7 @@ func rewriteValuePPC64_OpPPC64CMPW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpPPC64CMPW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPW (MOVWreg x) y)
@@ -4725,8 +4505,7 @@ func rewriteValuePPC64_OpPPC64CMPW(v *Value) bool {
                x := v_0.Args[0]
                y := v_1
                v.reset(OpPPC64CMPW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPW x (MOVDconst [c]))
@@ -4776,8 +4555,7 @@ func rewriteValuePPC64_OpPPC64CMPW(v *Value) bool {
                }
                v.reset(OpPPC64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPW, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -4796,8 +4574,7 @@ func rewriteValuePPC64_OpPPC64CMPWU(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpPPC64CMPWU)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPWU (MOVWZreg x) y)
@@ -4809,8 +4586,7 @@ func rewriteValuePPC64_OpPPC64CMPWU(v *Value) bool {
                x := v_0.Args[0]
                y := v_1
                v.reset(OpPPC64CMPWU)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPWU x (MOVDconst [c]))
@@ -4860,8 +4636,7 @@ func rewriteValuePPC64_OpPPC64CMPWU(v *Value) bool {
                }
                v.reset(OpPPC64InvertFlags)
                v0 := b.NewValue0(v.Pos, OpPPC64CMPWU, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -5067,8 +4842,7 @@ func rewriteValuePPC64_OpPPC64Equal(v *Value) bool {
                v.AuxInt = 2
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(cmp)
+               v.AddArg2(v0, cmp)
                return true
        }
 }
@@ -5101,9 +4875,7 @@ func rewriteValuePPC64_OpPPC64FADD(v *Value) bool {
                        x := v_0.Args[0]
                        z := v_1
                        v.reset(OpPPC64FMADD)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -5124,9 +4896,7 @@ func rewriteValuePPC64_OpPPC64FADDS(v *Value) bool {
                        x := v_0.Args[0]
                        z := v_1
                        v.reset(OpPPC64FMADDS)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -5175,15 +4945,12 @@ func rewriteValuePPC64_OpPPC64FGreaterEqual(v *Value) bool {
                v.AuxInt = 2
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ISELB, typ.Int32)
                v1.AuxInt = 1
                v2 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v2.AuxInt = 1
-               v1.AddArg(v2)
-               v1.AddArg(cmp)
-               v.AddArg(v1)
-               v.AddArg(cmp)
+               v1.AddArg2(v2, cmp)
+               v.AddArg3(v0, v1, cmp)
                return true
        }
 }
@@ -5199,8 +4966,7 @@ func rewriteValuePPC64_OpPPC64FGreaterThan(v *Value) bool {
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(cmp)
+               v.AddArg2(v0, cmp)
                return true
        }
 }
@@ -5216,15 +4982,12 @@ func rewriteValuePPC64_OpPPC64FLessEqual(v *Value) bool {
                v.AuxInt = 2
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ISELB, typ.Int32)
                v1.AuxInt = 0
                v2 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v2.AuxInt = 1
-               v1.AddArg(v2)
-               v1.AddArg(cmp)
-               v.AddArg(v1)
-               v.AddArg(cmp)
+               v1.AddArg2(v2, cmp)
+               v.AddArg3(v0, v1, cmp)
                return true
        }
 }
@@ -5240,8 +5003,7 @@ func rewriteValuePPC64_OpPPC64FLessThan(v *Value) bool {
                v.AuxInt = 0
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(cmp)
+               v.AddArg2(v0, cmp)
                return true
        }
 }
@@ -5286,8 +5048,7 @@ func rewriteValuePPC64_OpPPC64FMOVDload(v *Value) bool {
                v.reset(OpPPC64FMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (FMOVDload [off1] {sym} (ADDconst [off2] ptr) mem)
@@ -5308,8 +5069,7 @@ func rewriteValuePPC64_OpPPC64FMOVDload(v *Value) bool {
                v.reset(OpPPC64FMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -5332,9 +5092,7 @@ func rewriteValuePPC64_OpPPC64FMOVDstore(v *Value) bool {
                v.reset(OpPPC64MOVDstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (FMOVDstore [off1] {sym} (ADDconst [off2] ptr) val mem)
@@ -5356,9 +5114,7 @@ func rewriteValuePPC64_OpPPC64FMOVDstore(v *Value) bool {
                v.reset(OpPPC64FMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (FMOVDstore [off1] {sym1} p:(MOVDaddr [off2] {sym2} ptr) val mem)
@@ -5382,9 +5138,7 @@ func rewriteValuePPC64_OpPPC64FMOVDstore(v *Value) bool {
                v.reset(OpPPC64FMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -5412,8 +5166,7 @@ func rewriteValuePPC64_OpPPC64FMOVSload(v *Value) bool {
                v.reset(OpPPC64FMOVSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (FMOVSload [off1] {sym} (ADDconst [off2] ptr) mem)
@@ -5434,8 +5187,7 @@ func rewriteValuePPC64_OpPPC64FMOVSload(v *Value) bool {
                v.reset(OpPPC64FMOVSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -5463,9 +5215,7 @@ func rewriteValuePPC64_OpPPC64FMOVSstore(v *Value) bool {
                v.reset(OpPPC64FMOVSstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (FMOVSstore [off1] {sym1} p:(MOVDaddr [off2] {sym2} ptr) val mem)
@@ -5489,9 +5239,7 @@ func rewriteValuePPC64_OpPPC64FMOVSstore(v *Value) bool {
                v.reset(OpPPC64FMOVSstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -5550,9 +5298,7 @@ func rewriteValuePPC64_OpPPC64FSUB(v *Value) bool {
                x := v_0.Args[0]
                z := v_1
                v.reset(OpPPC64FMSUB)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        return false
@@ -5570,9 +5316,7 @@ func rewriteValuePPC64_OpPPC64FSUBS(v *Value) bool {
                x := v_0.Args[0]
                z := v_1
                v.reset(OpPPC64FMSUBS)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        return false
@@ -5645,8 +5389,7 @@ func rewriteValuePPC64_OpPPC64GreaterEqual(v *Value) bool {
                v.AuxInt = 4
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(cmp)
+               v.AddArg2(v0, cmp)
                return true
        }
 }
@@ -5703,8 +5446,7 @@ func rewriteValuePPC64_OpPPC64GreaterThan(v *Value) bool {
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(cmp)
+               v.AddArg2(v0, cmp)
                return true
        }
 }
@@ -5998,9 +5740,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                }
                v.reset(OpPPC64ISEL)
                v.AuxInt = n + 1
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(bool)
+               v.AddArg3(x, y, bool)
                return true
        }
        // match: (ISEL [n] x y (InvertFlags bool))
@@ -6019,9 +5759,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                }
                v.reset(OpPPC64ISEL)
                v.AuxInt = n - 1
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(bool)
+               v.AddArg3(x, y, bool)
                return true
        }
        // match: (ISEL [n] x y (InvertFlags bool))
@@ -6040,9 +5778,7 @@ func rewriteValuePPC64_OpPPC64ISEL(v *Value) bool {
                }
                v.reset(OpPPC64ISEL)
                v.AuxInt = n
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(bool)
+               v.AddArg3(x, y, bool)
                return true
        }
        return false
@@ -6248,8 +5984,7 @@ func rewriteValuePPC64_OpPPC64ISELB(v *Value) bool {
                v.AuxInt = n + 1
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(bool)
+               v.AddArg2(v0, bool)
                return true
        }
        // match: (ISELB [n] (MOVDconst [1]) (InvertFlags bool))
@@ -6268,8 +6003,7 @@ func rewriteValuePPC64_OpPPC64ISELB(v *Value) bool {
                v.AuxInt = n - 1
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(bool)
+               v.AddArg2(v0, bool)
                return true
        }
        // match: (ISELB [n] (MOVDconst [1]) (InvertFlags bool))
@@ -6288,8 +6022,7 @@ func rewriteValuePPC64_OpPPC64ISELB(v *Value) bool {
                v.AuxInt = n
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(bool)
+               v.AddArg2(v0, bool)
                return true
        }
        return false
@@ -6347,8 +6080,7 @@ func rewriteValuePPC64_OpPPC64LessEqual(v *Value) bool {
                v.AuxInt = 5
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(cmp)
+               v.AddArg2(v0, cmp)
                return true
        }
 }
@@ -6405,8 +6137,7 @@ func rewriteValuePPC64_OpPPC64LessThan(v *Value) bool {
                v.AuxInt = 0
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(cmp)
+               v.AddArg2(v0, cmp)
                return true
        }
 }
@@ -6446,8 +6177,7 @@ func rewriteValuePPC64_OpPPC64MFVSRD(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -6475,8 +6205,7 @@ func rewriteValuePPC64_OpPPC64MOVBZload(v *Value) bool {
                v.reset(OpPPC64MOVBZload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBZload [off1] {sym} (ADDconst [off2] x) mem)
@@ -6497,8 +6226,7 @@ func rewriteValuePPC64_OpPPC64MOVBZload(v *Value) bool {
                v.reset(OpPPC64MOVBZload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        // match: (MOVBZload [0] {sym} p:(ADD ptr idx) mem)
@@ -6520,9 +6248,7 @@ func rewriteValuePPC64_OpPPC64MOVBZload(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVBZloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -6546,8 +6272,7 @@ func rewriteValuePPC64_OpPPC64MOVBZloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVBZload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBZloadidx (MOVDconst [c]) ptr mem)
@@ -6565,8 +6290,7 @@ func rewriteValuePPC64_OpPPC64MOVBZloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVBZload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -6945,9 +6669,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(x, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} p:(MOVDaddr [off2] {sym2} ptr) val mem)
@@ -6971,9 +6693,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVDconst [0]) mem)
@@ -6989,8 +6709,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} p:(ADD ptr idx) val mem)
@@ -7011,10 +6730,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVBstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
@@ -7031,9 +6747,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBZreg x) mem)
@@ -7050,9 +6764,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
@@ -7069,9 +6781,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVHZreg x) mem)
@@ -7088,9 +6798,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVWreg x) mem)
@@ -7107,9 +6815,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVWZreg x) mem)
@@ -7126,9 +6832,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (SRWconst (MOVHreg x) [c]) mem)
@@ -7154,12 +6858,10 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32)
                v0.AuxInt = c
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (SRWconst (MOVHZreg x) [c]) mem)
@@ -7185,12 +6887,10 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32)
                v0.AuxInt = c
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (SRWconst (MOVWreg x) [c]) mem)
@@ -7216,12 +6916,10 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32)
                v0.AuxInt = c
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (SRWconst (MOVWZreg x) [c]) mem)
@@ -7247,12 +6945,10 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32)
                v0.AuxInt = c
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (MOVBstore [i1] {s} p (SRWconst w [24]) x0:(MOVBstore [i0] {s} p (SRWconst w [16]) mem))
@@ -7285,12 +6981,10 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = i0
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x0.Pos, OpPPC64SRWconst, typ.UInt16)
                v0.AuxInt = 16
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVBstore [i1] {s} p (SRDconst w [24]) x0:(MOVBstore [i0] {s} p (SRDconst w [16]) mem))
@@ -7323,12 +7017,10 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = i0
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x0.Pos, OpPPC64SRWconst, typ.UInt16)
                v0.AuxInt = 16
                v0.AddArg(w)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        // match: (MOVBstore [i1] {s} p (SRWconst w [8]) x0:(MOVBstore [i0] {s} p w mem))
@@ -7357,9 +7049,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = i0
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i1] {s} p (SRDconst w [8]) x0:(MOVBstore [i0] {s} p w mem))
@@ -7388,9 +7078,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = i0
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i3] {s} p w x0:(MOVBstore [i2] {s} p (SRWconst w [8]) x1:(MOVBstore [i1] {s} p (SRWconst w [16]) x2:(MOVBstore [i0] {s} p (SRWconst w [24]) mem))))
@@ -7454,9 +7142,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v0.AuxInt = i0
                v0.Aux = s
                v0.AddArg(p)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(v0, w, mem)
                return true
        }
        // match: (MOVBstore [i1] {s} p w x0:(MOVBstore [i0] {s} p (SRWconst w [8]) mem))
@@ -7488,9 +7174,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v0.AuxInt = i0
                v0.Aux = s
                v0.AddArg(p)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(v0, w, mem)
                return true
        }
        // match: (MOVBstore [i7] {s} p (SRDconst w [56]) x0:(MOVBstore [i6] {s} p (SRDconst w [48]) x1:(MOVBstore [i5] {s} p (SRDconst w [40]) x2:(MOVBstore [i4] {s} p (SRDconst w [32]) x3:(MOVWstore [i0] {s} p w mem)))))
@@ -7567,9 +7251,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v.reset(OpPPC64MOVDstore)
                v.AuxInt = i0
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i7] {s} p w x0:(MOVBstore [i6] {s} p (SRDconst w [8]) x1:(MOVBstore [i5] {s} p (SRDconst w [16]) x2:(MOVBstore [i4] {s} p (SRDconst w [24]) x3:(MOVBstore [i3] {s} p (SRDconst w [32]) x4:(MOVBstore [i2] {s} p (SRDconst w [40]) x5:(MOVBstore [i1] {s} p (SRDconst w [48]) x6:(MOVBstore [i0] {s} p (SRDconst w [56]) mem))))))))
@@ -7697,9 +7379,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore(v *Value) bool {
                v0.AuxInt = i0
                v0.Aux = s
                v0.AddArg(p)
-               v.AddArg(v0)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(v0, w, mem)
                return true
        }
        return false
@@ -7727,9 +7407,7 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstoreidx (MOVDconst [c]) ptr val mem)
@@ -7748,9 +7426,7 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVBstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstoreidx [off] {sym} ptr idx (MOVBreg x) mem)
@@ -7768,10 +7444,7 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVBstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx [off] {sym} ptr idx (MOVBZreg x) mem)
@@ -7789,10 +7462,7 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVBstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx [off] {sym} ptr idx (MOVHreg x) mem)
@@ -7810,10 +7480,7 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVBstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx [off] {sym} ptr idx (MOVHZreg x) mem)
@@ -7831,10 +7498,7 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVBstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx [off] {sym} ptr idx (MOVWreg x) mem)
@@ -7852,10 +7516,7 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVBstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx [off] {sym} ptr idx (MOVWZreg x) mem)
@@ -7873,10 +7534,7 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVBstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVBstoreidx [off] {sym} ptr idx (SRWconst (MOVHreg x) [c]) mem)
@@ -7903,13 +7561,10 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVBstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
                v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32)
                v0.AuxInt = c
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, v0, mem)
                return true
        }
        // match: (MOVBstoreidx [off] {sym} ptr idx (SRWconst (MOVHZreg x) [c]) mem)
@@ -7936,13 +7591,10 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVBstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
                v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32)
                v0.AuxInt = c
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, v0, mem)
                return true
        }
        // match: (MOVBstoreidx [off] {sym} ptr idx (SRWconst (MOVWreg x) [c]) mem)
@@ -7969,13 +7621,10 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVBstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
                v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32)
                v0.AuxInt = c
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, v0, mem)
                return true
        }
        // match: (MOVBstoreidx [off] {sym} ptr idx (SRWconst (MOVWZreg x) [c]) mem)
@@ -8002,13 +7651,10 @@ func rewriteValuePPC64_OpPPC64MOVBstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVBstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
                v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32)
                v0.AuxInt = c
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, v0, mem)
                return true
        }
        return false
@@ -8034,8 +7680,7 @@ func rewriteValuePPC64_OpPPC64MOVBstorezero(v *Value) bool {
                v.reset(OpPPC64MOVBstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        // match: (MOVBstorezero [off1] {sym1} p:(MOVDaddr [off2] {sym2} x) mem)
@@ -8058,8 +7703,7 @@ func rewriteValuePPC64_OpPPC64MOVBstorezero(v *Value) bool {
                v.reset(OpPPC64MOVBstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        return false
@@ -8105,8 +7749,7 @@ func rewriteValuePPC64_OpPPC64MOVDload(v *Value) bool {
                v.reset(OpPPC64MOVDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDload [off1] {sym} (ADDconst [off2] x) mem)
@@ -8127,8 +7770,7 @@ func rewriteValuePPC64_OpPPC64MOVDload(v *Value) bool {
                v.reset(OpPPC64MOVDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        // match: (MOVDload [0] {sym} p:(ADD ptr idx) mem)
@@ -8150,9 +7792,7 @@ func rewriteValuePPC64_OpPPC64MOVDload(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVDloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -8176,8 +7816,7 @@ func rewriteValuePPC64_OpPPC64MOVDloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVDload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDloadidx (MOVDconst [c]) ptr mem)
@@ -8195,8 +7834,7 @@ func rewriteValuePPC64_OpPPC64MOVDloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVDload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -8219,9 +7857,7 @@ func rewriteValuePPC64_OpPPC64MOVDstore(v *Value) bool {
                v.reset(OpPPC64FMOVDstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym} (ADDconst [off2] x) val mem)
@@ -8243,9 +7879,7 @@ func rewriteValuePPC64_OpPPC64MOVDstore(v *Value) bool {
                v.reset(OpPPC64MOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(x, val, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym1} p:(MOVDaddr [off2] {sym2} ptr) val mem)
@@ -8269,9 +7903,7 @@ func rewriteValuePPC64_OpPPC64MOVDstore(v *Value) bool {
                v.reset(OpPPC64MOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstore [off] {sym} ptr (MOVDconst [0]) mem)
@@ -8287,8 +7919,7 @@ func rewriteValuePPC64_OpPPC64MOVDstore(v *Value) bool {
                v.reset(OpPPC64MOVDstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDstore [off] {sym} p:(ADD ptr idx) val mem)
@@ -8309,10 +7940,7 @@ func rewriteValuePPC64_OpPPC64MOVDstore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVDstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -8338,9 +7966,7 @@ func rewriteValuePPC64_OpPPC64MOVDstoreidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVDstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstoreidx (MOVDconst [c]) ptr val mem)
@@ -8359,9 +7985,7 @@ func rewriteValuePPC64_OpPPC64MOVDstoreidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVDstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -8387,8 +8011,7 @@ func rewriteValuePPC64_OpPPC64MOVDstorezero(v *Value) bool {
                v.reset(OpPPC64MOVDstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        // match: (MOVDstorezero [off1] {sym1} p:(MOVDaddr [off2] {sym2} x) mem)
@@ -8411,8 +8034,7 @@ func rewriteValuePPC64_OpPPC64MOVDstorezero(v *Value) bool {
                v.reset(OpPPC64MOVDstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        return false
@@ -8433,9 +8055,7 @@ func rewriteValuePPC64_OpPPC64MOVHBRstore(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVHBRstore)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHBRstore {sym} ptr (MOVHZreg x) mem)
@@ -8450,9 +8070,7 @@ func rewriteValuePPC64_OpPPC64MOVHBRstore(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVHBRstore)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHBRstore {sym} ptr (MOVWreg x) mem)
@@ -8467,9 +8085,7 @@ func rewriteValuePPC64_OpPPC64MOVHBRstore(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVHBRstore)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHBRstore {sym} ptr (MOVWZreg x) mem)
@@ -8484,9 +8100,7 @@ func rewriteValuePPC64_OpPPC64MOVHBRstore(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVHBRstore)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        return false
@@ -8514,8 +8128,7 @@ func rewriteValuePPC64_OpPPC64MOVHZload(v *Value) bool {
                v.reset(OpPPC64MOVHZload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHZload [off1] {sym} (ADDconst [off2] x) mem)
@@ -8536,8 +8149,7 @@ func rewriteValuePPC64_OpPPC64MOVHZload(v *Value) bool {
                v.reset(OpPPC64MOVHZload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        // match: (MOVHZload [0] {sym} p:(ADD ptr idx) mem)
@@ -8559,9 +8171,7 @@ func rewriteValuePPC64_OpPPC64MOVHZload(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVHZloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -8585,8 +8195,7 @@ func rewriteValuePPC64_OpPPC64MOVHZloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVHZload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHZloadidx (MOVDconst [c]) ptr mem)
@@ -8604,8 +8213,7 @@ func rewriteValuePPC64_OpPPC64MOVHZloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVHZload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -8874,8 +8482,7 @@ func rewriteValuePPC64_OpPPC64MOVHload(v *Value) bool {
                v.reset(OpPPC64MOVHload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHload [off1] {sym} (ADDconst [off2] x) mem)
@@ -8896,8 +8503,7 @@ func rewriteValuePPC64_OpPPC64MOVHload(v *Value) bool {
                v.reset(OpPPC64MOVHload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        // match: (MOVHload [0] {sym} p:(ADD ptr idx) mem)
@@ -8919,9 +8525,7 @@ func rewriteValuePPC64_OpPPC64MOVHload(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVHloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -8945,8 +8549,7 @@ func rewriteValuePPC64_OpPPC64MOVHloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVHload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHloadidx (MOVDconst [c]) ptr mem)
@@ -8964,8 +8567,7 @@ func rewriteValuePPC64_OpPPC64MOVHloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVHload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -9231,9 +8833,7 @@ func rewriteValuePPC64_OpPPC64MOVHstore(v *Value) bool {
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(x, val, mem)
                return true
        }
        // match: (MOVHstore [off1] {sym1} p:(MOVDaddr [off2] {sym2} ptr) val mem)
@@ -9257,9 +8857,7 @@ func rewriteValuePPC64_OpPPC64MOVHstore(v *Value) bool {
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVDconst [0]) mem)
@@ -9275,8 +8873,7 @@ func rewriteValuePPC64_OpPPC64MOVHstore(v *Value) bool {
                v.reset(OpPPC64MOVHstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} p:(ADD ptr idx) val mem)
@@ -9297,10 +8894,7 @@ func rewriteValuePPC64_OpPPC64MOVHstore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVHstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
@@ -9317,9 +8911,7 @@ func rewriteValuePPC64_OpPPC64MOVHstore(v *Value) bool {
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHZreg x) mem)
@@ -9336,9 +8928,7 @@ func rewriteValuePPC64_OpPPC64MOVHstore(v *Value) bool {
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVWreg x) mem)
@@ -9355,9 +8945,7 @@ func rewriteValuePPC64_OpPPC64MOVHstore(v *Value) bool {
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVWZreg x) mem)
@@ -9374,9 +8962,7 @@ func rewriteValuePPC64_OpPPC64MOVHstore(v *Value) bool {
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [i1] {s} p (SRWconst w [16]) x0:(MOVHstore [i0] {s} p w mem))
@@ -9405,9 +8991,7 @@ func rewriteValuePPC64_OpPPC64MOVHstore(v *Value) bool {
                v.reset(OpPPC64MOVWstore)
                v.AuxInt = i0
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVHstore [i1] {s} p (SRDconst w [16]) x0:(MOVHstore [i0] {s} p w mem))
@@ -9436,9 +9020,7 @@ func rewriteValuePPC64_OpPPC64MOVHstore(v *Value) bool {
                v.reset(OpPPC64MOVWstore)
                v.AuxInt = i0
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        return false
@@ -9464,9 +9046,7 @@ func rewriteValuePPC64_OpPPC64MOVHstoreidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstoreidx (MOVDconst [c]) ptr val mem)
@@ -9485,9 +9065,7 @@ func rewriteValuePPC64_OpPPC64MOVHstoreidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVHstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstoreidx [off] {sym} ptr idx (MOVHreg x) mem)
@@ -9505,10 +9083,7 @@ func rewriteValuePPC64_OpPPC64MOVHstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVHstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVHstoreidx [off] {sym} ptr idx (MOVHZreg x) mem)
@@ -9526,10 +9101,7 @@ func rewriteValuePPC64_OpPPC64MOVHstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVHstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVHstoreidx [off] {sym} ptr idx (MOVWreg x) mem)
@@ -9547,10 +9119,7 @@ func rewriteValuePPC64_OpPPC64MOVHstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVHstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVHstoreidx [off] {sym} ptr idx (MOVWZreg x) mem)
@@ -9568,10 +9137,7 @@ func rewriteValuePPC64_OpPPC64MOVHstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVHstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        return false
@@ -9597,8 +9163,7 @@ func rewriteValuePPC64_OpPPC64MOVHstorezero(v *Value) bool {
                v.reset(OpPPC64MOVHstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        // match: (MOVHstorezero [off1] {sym1} p:(MOVDaddr [off2] {sym2} x) mem)
@@ -9621,8 +9186,7 @@ func rewriteValuePPC64_OpPPC64MOVHstorezero(v *Value) bool {
                v.reset(OpPPC64MOVHstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        return false
@@ -9643,9 +9207,7 @@ func rewriteValuePPC64_OpPPC64MOVWBRstore(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVWBRstore)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWBRstore {sym} ptr (MOVWZreg x) mem)
@@ -9660,9 +9222,7 @@ func rewriteValuePPC64_OpPPC64MOVWBRstore(v *Value) bool {
                mem := v_2
                v.reset(OpPPC64MOVWBRstore)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        return false
@@ -9690,8 +9250,7 @@ func rewriteValuePPC64_OpPPC64MOVWZload(v *Value) bool {
                v.reset(OpPPC64MOVWZload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWZload [off1] {sym} (ADDconst [off2] x) mem)
@@ -9712,8 +9271,7 @@ func rewriteValuePPC64_OpPPC64MOVWZload(v *Value) bool {
                v.reset(OpPPC64MOVWZload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        // match: (MOVWZload [0] {sym} p:(ADD ptr idx) mem)
@@ -9735,9 +9293,7 @@ func rewriteValuePPC64_OpPPC64MOVWZload(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVWZloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -9761,8 +9317,7 @@ func rewriteValuePPC64_OpPPC64MOVWZloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVWZload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWZloadidx (MOVDconst [c]) ptr mem)
@@ -9780,8 +9335,7 @@ func rewriteValuePPC64_OpPPC64MOVWZloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVWZload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -10129,8 +9683,7 @@ func rewriteValuePPC64_OpPPC64MOVWload(v *Value) bool {
                v.reset(OpPPC64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off1] {sym} (ADDconst [off2] x) mem)
@@ -10151,8 +9704,7 @@ func rewriteValuePPC64_OpPPC64MOVWload(v *Value) bool {
                v.reset(OpPPC64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        // match: (MOVWload [0] {sym} p:(ADD ptr idx) mem)
@@ -10174,9 +9726,7 @@ func rewriteValuePPC64_OpPPC64MOVWload(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVWloadidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -10200,8 +9750,7 @@ func rewriteValuePPC64_OpPPC64MOVWloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVWload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWloadidx (MOVDconst [c]) ptr mem)
@@ -10219,8 +9768,7 @@ func rewriteValuePPC64_OpPPC64MOVWloadidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVWload)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -10533,9 +10081,7 @@ func rewriteValuePPC64_OpPPC64MOVWstore(v *Value) bool {
                v.reset(OpPPC64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(x, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} p:(MOVDaddr [off2] {sym2} ptr) val mem)
@@ -10559,9 +10105,7 @@ func rewriteValuePPC64_OpPPC64MOVWstore(v *Value) bool {
                v.reset(OpPPC64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVDconst [0]) mem)
@@ -10577,8 +10121,7 @@ func rewriteValuePPC64_OpPPC64MOVWstore(v *Value) bool {
                v.reset(OpPPC64MOVWstorezero)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} p:(ADD ptr idx) val mem)
@@ -10599,10 +10142,7 @@ func rewriteValuePPC64_OpPPC64MOVWstore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVWstoreidx)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWreg x) mem)
@@ -10619,9 +10159,7 @@ func rewriteValuePPC64_OpPPC64MOVWstore(v *Value) bool {
                v.reset(OpPPC64MOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWZreg x) mem)
@@ -10638,9 +10176,7 @@ func rewriteValuePPC64_OpPPC64MOVWstore(v *Value) bool {
                v.reset(OpPPC64MOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        return false
@@ -10666,9 +10202,7 @@ func rewriteValuePPC64_OpPPC64MOVWstoreidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVWstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstoreidx (MOVDconst [c]) ptr val mem)
@@ -10687,9 +10221,7 @@ func rewriteValuePPC64_OpPPC64MOVWstoreidx(v *Value) bool {
                }
                v.reset(OpPPC64MOVWstore)
                v.AuxInt = c
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstoreidx [off] {sym} ptr idx (MOVWreg x) mem)
@@ -10707,10 +10239,7 @@ func rewriteValuePPC64_OpPPC64MOVWstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVWstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        // match: (MOVWstoreidx [off] {sym} ptr idx (MOVWZreg x) mem)
@@ -10728,10 +10257,7 @@ func rewriteValuePPC64_OpPPC64MOVWstoreidx(v *Value) bool {
                v.reset(OpPPC64MOVWstoreidx)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, x, mem)
                return true
        }
        return false
@@ -10757,8 +10283,7 @@ func rewriteValuePPC64_OpPPC64MOVWstorezero(v *Value) bool {
                v.reset(OpPPC64MOVWstorezero)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        // match: (MOVWstorezero [off1] {sym1} p:(MOVDaddr [off2] {sym2} x) mem)
@@ -10781,8 +10306,7 @@ func rewriteValuePPC64_OpPPC64MOVWstorezero(v *Value) bool {
                v.reset(OpPPC64MOVWstorezero)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg2(x, mem)
                return true
        }
        return false
@@ -10823,8 +10347,7 @@ func rewriteValuePPC64_OpPPC64MTVSRD(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = off
                v0.Aux = sym
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -10906,8 +10429,7 @@ func rewriteValuePPC64_OpPPC64NotEqual(v *Value) bool {
                v.AuxInt = 6
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(cmp)
+               v.AddArg2(v0, cmp)
                return true
        }
 }
@@ -11000,8 +10522,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64ROTL)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -11041,8 +10562,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64ROTLW)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -11121,8 +10641,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -11163,8 +10682,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -11207,8 +10725,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        v1.AuxInt = i0
                        v1.Aux = s
                        v1.AddArg(p)
-                       v0.AddArg(v1)
-                       v0.AddArg(mem)
+                       v0.AddArg2(v1, mem)
                        return true
                }
                break
@@ -11251,8 +10768,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        v1.AuxInt = i0
                        v1.Aux = s
                        v1.AddArg(p)
-                       v0.AddArg(v1)
-                       v0.AddArg(mem)
+                       v0.AddArg2(v1, mem)
                        return true
                }
                break
@@ -11303,8 +10819,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        v2.AuxInt = i0
                        v2.Aux = s
                        v2.AddArg(p)
-                       v1.AddArg(v2)
-                       v1.AddArg(mem)
+                       v1.AddArg2(v2, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -11356,8 +10871,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                        v2.AuxInt = i0
                        v2.Aux = s
                        v2.AddArg(p)
-                       v1.AddArg(v2)
-                       v1.AddArg(mem)
+                       v1.AddArg2(v2, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -11423,8 +10937,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                v.AddArg(v0)
                                v0.AuxInt = i0
                                v0.Aux = s
-                               v0.AddArg(p)
-                               v0.AddArg(mem)
+                               v0.AddArg2(p, mem)
                                return true
                        }
                }
@@ -11490,8 +11003,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                v.AddArg(v0)
                                v0.AuxInt = i0
                                v0.Aux = s
-                               v0.AddArg(p)
-                               v0.AddArg(mem)
+                               v0.AddArg2(p, mem)
                                return true
                        }
                }
@@ -11560,8 +11072,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                v1.AuxInt = i0
                                v1.Aux = s
                                v1.AddArg(p)
-                               v0.AddArg(v1)
-                               v0.AddArg(mem)
+                               v0.AddArg2(v1, mem)
                                return true
                        }
                }
@@ -11630,8 +11141,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                v1.AuxInt = i0
                                v1.Aux = s
                                v1.AddArg(p)
-                               v0.AddArg(v1)
-                               v0.AddArg(mem)
+                               v0.AddArg2(v1, mem)
                                return true
                        }
                }
@@ -11700,8 +11210,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                v1.AuxInt = i0
                                v1.Aux = s
                                v1.AddArg(p)
-                               v0.AddArg(v1)
-                               v0.AddArg(mem)
+                               v0.AddArg2(v1, mem)
                                return true
                        }
                }
@@ -11770,8 +11279,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                v1.AuxInt = i0
                                v1.Aux = s
                                v1.AddArg(p)
-                               v0.AddArg(v1)
-                               v0.AddArg(mem)
+                               v0.AddArg2(v1, mem)
                                return true
                        }
                }
@@ -11846,8 +11354,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                v2.AuxInt = i0
                                v2.Aux = s
                                v2.AddArg(p)
-                               v1.AddArg(v2)
-                               v1.AddArg(mem)
+                               v1.AddArg2(v2, mem)
                                v0.AddArg(v1)
                                return true
                        }
@@ -11923,8 +11430,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                v2.AuxInt = i0
                                v2.Aux = s
                                v2.AddArg(p)
-                               v1.AddArg(v2)
-                               v1.AddArg(mem)
+                               v1.AddArg2(v2, mem)
                                v0.AddArg(v1)
                                return true
                        }
@@ -12039,8 +11545,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                                v.AddArg(v0)
                                                v0.AuxInt = i0
                                                v0.Aux = s
-                                               v0.AddArg(p)
-                                               v0.AddArg(mem)
+                                               v0.AddArg2(p, mem)
                                                return true
                                        }
                                }
@@ -12159,8 +11664,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                                v1.AuxInt = i0
                                                v1.Aux = s
                                                v1.AddArg(p)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(mem)
+                                               v0.AddArg2(v1, mem)
                                                return true
                                        }
                                }
@@ -12279,8 +11783,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                                v1.AuxInt = i0
                                                v1.Aux = s
                                                v1.AddArg(p)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(mem)
+                                               v0.AddArg2(v1, mem)
                                                return true
                                        }
                                }
@@ -12399,8 +11902,7 @@ func rewriteValuePPC64_OpPPC64OR(v *Value) bool {
                                                v1.AuxInt = i0
                                                v1.Aux = s
                                                v1.AddArg(p)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(mem)
+                                               v0.AddArg2(v1, mem)
                                                return true
                                        }
                                }
@@ -12613,8 +12115,7 @@ func rewriteValuePPC64_OpPPC64XOR(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64ROTL)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -12654,8 +12155,7 @@ func rewriteValuePPC64_OpPPC64XOR(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64ROTLW)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -12747,9 +12247,7 @@ func rewriteValuePPC64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpPPC64LoweredPanicBoundsA)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -12765,9 +12263,7 @@ func rewriteValuePPC64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpPPC64LoweredPanicBoundsB)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -12782,10 +12278,8 @@ func rewriteValuePPC64_OpPanicBounds(v *Value) bool {
                        break
                }
                v.reset(OpPPC64LoweredPanicBoundsC)
-               v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AuxInt = kind
+               v.AddArg3(x, y, mem)
                return true
        }
        return false
@@ -12851,17 +12345,14 @@ func rewriteValuePPC64_OpRotateLeft16(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr16)
                v0 := b.NewValue0(v.Pos, OpLsh16x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v1.AuxInt = c & 15
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh16Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v3.AuxInt = -c & 15
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -12888,8 +12379,7 @@ func rewriteValuePPC64_OpRotateLeft32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64ROTLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
 }
@@ -12915,8 +12405,7 @@ func rewriteValuePPC64_OpRotateLeft64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64ROTL)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
 }
@@ -12936,17 +12425,14 @@ func rewriteValuePPC64_OpRotateLeft8(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr8)
                v0 := b.NewValue0(v.Pos, OpLsh8x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v1.AuxInt = c & 7
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh8Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v3.AuxInt = -c & 7
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -12968,8 +12454,7 @@ func rewriteValuePPC64_OpRsh16Ux16(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHZreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16Ux16 x y)
@@ -12980,9 +12465,7 @@ func rewriteValuePPC64_OpRsh16Ux16(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -16
@@ -12990,8 +12473,8 @@ func rewriteValuePPC64_OpRsh16Ux16(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -13050,8 +12533,7 @@ func rewriteValuePPC64_OpRsh16Ux32(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHZreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16Ux32 x y)
@@ -13062,9 +12544,7 @@ func rewriteValuePPC64_OpRsh16Ux32(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -16
@@ -13072,8 +12552,8 @@ func rewriteValuePPC64_OpRsh16Ux32(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -13147,8 +12627,7 @@ func rewriteValuePPC64_OpRsh16Ux64(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHZreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16Ux64 x y)
@@ -13159,16 +12638,14 @@ func rewriteValuePPC64_OpRsh16Ux64(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -16
                v3.AddArg(y)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -13189,8 +12666,7 @@ func rewriteValuePPC64_OpRsh16Ux8(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHZreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16Ux8 x y)
@@ -13201,9 +12677,7 @@ func rewriteValuePPC64_OpRsh16Ux8(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -16
@@ -13211,8 +12685,8 @@ func rewriteValuePPC64_OpRsh16Ux8(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -13233,8 +12707,7 @@ func rewriteValuePPC64_OpRsh16x16(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16x16 x y)
@@ -13245,9 +12718,7 @@ func rewriteValuePPC64_OpRsh16x16(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -16
@@ -13255,8 +12726,8 @@ func rewriteValuePPC64_OpRsh16x16(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -13315,8 +12786,7 @@ func rewriteValuePPC64_OpRsh16x32(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16x32 x y)
@@ -13327,9 +12797,7 @@ func rewriteValuePPC64_OpRsh16x32(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -16
@@ -13337,8 +12805,8 @@ func rewriteValuePPC64_OpRsh16x32(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -13416,8 +12884,7 @@ func rewriteValuePPC64_OpRsh16x64(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16x64 x y)
@@ -13428,16 +12895,14 @@ func rewriteValuePPC64_OpRsh16x64(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -16
                v3.AddArg(y)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -13458,8 +12923,7 @@ func rewriteValuePPC64_OpRsh16x8(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16x8 x y)
@@ -13470,9 +12934,7 @@ func rewriteValuePPC64_OpRsh16x8(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -16
@@ -13480,8 +12942,8 @@ func rewriteValuePPC64_OpRsh16x8(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -13500,8 +12962,7 @@ func rewriteValuePPC64_OpRsh32Ux16(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32Ux16 x y)
@@ -13510,9 +12971,7 @@ func rewriteValuePPC64_OpRsh32Ux16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
@@ -13520,8 +12979,8 @@ func rewriteValuePPC64_OpRsh32Ux16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -13574,8 +13033,7 @@ func rewriteValuePPC64_OpRsh32Ux32(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32Ux32 x y)
@@ -13584,9 +13042,7 @@ func rewriteValuePPC64_OpRsh32Ux32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
@@ -13594,8 +13050,8 @@ func rewriteValuePPC64_OpRsh32Ux32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -13663,8 +13119,7 @@ func rewriteValuePPC64_OpRsh32Ux64(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32Ux64 x (AND y (MOVDconst [31])))
@@ -13683,11 +13138,10 @@ func rewriteValuePPC64_OpRsh32Ux64(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64SRW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.Int32)
                        v0.AuxInt = 31
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -13701,11 +13155,10 @@ func rewriteValuePPC64_OpRsh32Ux64(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpPPC64SRW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                v0.AuxInt = 31
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32Ux64 x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y)))
@@ -13726,16 +13179,14 @@ func rewriteValuePPC64_OpRsh32Ux64(v *Value) bool {
                }
                y := v_1_1.Args[0]
                v.reset(OpPPC64SRW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64SUB, typ.UInt)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v1.AuxInt = 32
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                v2.AuxInt = 31
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32Ux64 x (SUB <typ.UInt> (MOVDconst [32]) (AND <typ.UInt> y (MOVDconst [31]))))
@@ -13763,16 +13214,14 @@ func rewriteValuePPC64_OpRsh32Ux64(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64SRW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpPPC64SUB, typ.UInt)
                        v1 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                        v1.AuxInt = 32
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                        v2.AuxInt = 31
                        v2.AddArg(y)
-                       v0.AddArg(v2)
-                       v.AddArg(v0)
+                       v0.AddArg2(v1, v2)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -13783,16 +13232,14 @@ func rewriteValuePPC64_OpRsh32Ux64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -13811,8 +13258,7 @@ func rewriteValuePPC64_OpRsh32Ux8(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32Ux8 x y)
@@ -13821,9 +13267,7 @@ func rewriteValuePPC64_OpRsh32Ux8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
@@ -13831,8 +13275,8 @@ func rewriteValuePPC64_OpRsh32Ux8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -13851,8 +13295,7 @@ func rewriteValuePPC64_OpRsh32x16(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32x16 x y)
@@ -13861,9 +13304,7 @@ func rewriteValuePPC64_OpRsh32x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRAW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
@@ -13871,8 +13312,8 @@ func rewriteValuePPC64_OpRsh32x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -13925,8 +13366,7 @@ func rewriteValuePPC64_OpRsh32x32(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32x32 x y)
@@ -13935,9 +13375,7 @@ func rewriteValuePPC64_OpRsh32x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRAW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
@@ -13945,8 +13383,8 @@ func rewriteValuePPC64_OpRsh32x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14016,8 +13454,7 @@ func rewriteValuePPC64_OpRsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32x64 x (AND y (MOVDconst [31])))
@@ -14036,11 +13473,10 @@ func rewriteValuePPC64_OpRsh32x64(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64SRAW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.Int32)
                        v0.AuxInt = 31
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -14054,11 +13490,10 @@ func rewriteValuePPC64_OpRsh32x64(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpPPC64SRAW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                v0.AuxInt = 31
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x64 x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y)))
@@ -14079,16 +13514,14 @@ func rewriteValuePPC64_OpRsh32x64(v *Value) bool {
                }
                y := v_1_1.Args[0]
                v.reset(OpPPC64SRAW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64SUB, typ.UInt)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v1.AuxInt = 32
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                v2.AuxInt = 31
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x64 x (SUB <typ.UInt> (MOVDconst [32]) (AND <typ.UInt> y (MOVDconst [31]))))
@@ -14116,16 +13549,14 @@ func rewriteValuePPC64_OpRsh32x64(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64SRAW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpPPC64SUB, typ.UInt)
                        v1 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                        v1.AuxInt = 32
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                        v2.AuxInt = 31
                        v2.AddArg(y)
-                       v0.AddArg(v2)
-                       v.AddArg(v0)
+                       v0.AddArg2(v1, v2)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -14136,16 +13567,14 @@ func rewriteValuePPC64_OpRsh32x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRAW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
                v2.AddArg(y)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14164,8 +13593,7 @@ func rewriteValuePPC64_OpRsh32x8(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32x8 x y)
@@ -14174,9 +13602,7 @@ func rewriteValuePPC64_OpRsh32x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRAW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -32
@@ -14184,8 +13610,8 @@ func rewriteValuePPC64_OpRsh32x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14204,8 +13630,7 @@ func rewriteValuePPC64_OpRsh64Ux16(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64Ux16 x y)
@@ -14214,9 +13639,7 @@ func rewriteValuePPC64_OpRsh64Ux16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
@@ -14224,8 +13647,8 @@ func rewriteValuePPC64_OpRsh64Ux16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14278,8 +13701,7 @@ func rewriteValuePPC64_OpRsh64Ux32(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64Ux32 x y)
@@ -14288,9 +13710,7 @@ func rewriteValuePPC64_OpRsh64Ux32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
@@ -14298,8 +13718,8 @@ func rewriteValuePPC64_OpRsh64Ux32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14367,8 +13787,7 @@ func rewriteValuePPC64_OpRsh64Ux64(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64Ux64 x (AND y (MOVDconst [63])))
@@ -14387,11 +13806,10 @@ func rewriteValuePPC64_OpRsh64Ux64(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64SRD)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.Int64)
                        v0.AuxInt = 63
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -14405,11 +13823,10 @@ func rewriteValuePPC64_OpRsh64Ux64(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpPPC64SRD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                v0.AuxInt = 63
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64Ux64 x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y)))
@@ -14430,16 +13847,14 @@ func rewriteValuePPC64_OpRsh64Ux64(v *Value) bool {
                }
                y := v_1_1.Args[0]
                v.reset(OpPPC64SRD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64SUB, typ.UInt)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v1.AuxInt = 64
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                v2.AuxInt = 63
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64Ux64 x (SUB <typ.UInt> (MOVDconst [64]) (AND <typ.UInt> y (MOVDconst [63]))))
@@ -14467,16 +13882,14 @@ func rewriteValuePPC64_OpRsh64Ux64(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64SRD)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpPPC64SUB, typ.UInt)
                        v1 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                        v1.AuxInt = 64
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                        v2.AuxInt = 63
                        v2.AddArg(y)
-                       v0.AddArg(v2)
-                       v.AddArg(v0)
+                       v0.AddArg2(v1, v2)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -14487,16 +13900,14 @@ func rewriteValuePPC64_OpRsh64Ux64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14515,8 +13926,7 @@ func rewriteValuePPC64_OpRsh64Ux8(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64Ux8 x y)
@@ -14525,9 +13935,7 @@ func rewriteValuePPC64_OpRsh64Ux8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
@@ -14535,8 +13943,8 @@ func rewriteValuePPC64_OpRsh64Ux8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14555,8 +13963,7 @@ func rewriteValuePPC64_OpRsh64x16(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64x16 x y)
@@ -14565,9 +13972,7 @@ func rewriteValuePPC64_OpRsh64x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRAD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
@@ -14575,8 +13980,8 @@ func rewriteValuePPC64_OpRsh64x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14629,8 +14034,7 @@ func rewriteValuePPC64_OpRsh64x32(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64x32 x y)
@@ -14639,9 +14043,7 @@ func rewriteValuePPC64_OpRsh64x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRAD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
@@ -14649,8 +14051,8 @@ func rewriteValuePPC64_OpRsh64x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14720,8 +14122,7 @@ func rewriteValuePPC64_OpRsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64x64 x (AND y (MOVDconst [63])))
@@ -14740,11 +14141,10 @@ func rewriteValuePPC64_OpRsh64x64(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64SRAD)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.Int64)
                        v0.AuxInt = 63
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -14758,11 +14158,10 @@ func rewriteValuePPC64_OpRsh64x64(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpPPC64SRAD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                v0.AuxInt = 63
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x64 x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y)))
@@ -14783,16 +14182,14 @@ func rewriteValuePPC64_OpRsh64x64(v *Value) bool {
                }
                y := v_1_1.Args[0]
                v.reset(OpPPC64SRAD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64SUB, typ.UInt)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                v1.AuxInt = 64
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                v2.AuxInt = 63
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x64 x (SUB <typ.UInt> (MOVDconst [64]) (AND <typ.UInt> y (MOVDconst [63]))))
@@ -14820,16 +14217,14 @@ func rewriteValuePPC64_OpRsh64x64(v *Value) bool {
                                continue
                        }
                        v.reset(OpPPC64SRAD)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpPPC64SUB, typ.UInt)
                        v1 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
                        v1.AuxInt = 64
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpPPC64ANDconst, typ.UInt)
                        v2.AuxInt = 63
                        v2.AddArg(y)
-                       v0.AddArg(v2)
-                       v.AddArg(v0)
+                       v0.AddArg2(v1, v2)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -14840,16 +14235,14 @@ func rewriteValuePPC64_OpRsh64x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRAD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14868,8 +14261,7 @@ func rewriteValuePPC64_OpRsh64x8(v *Value) bool {
                        break
                }
                v.reset(OpPPC64SRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64x8 x y)
@@ -14878,9 +14270,7 @@ func rewriteValuePPC64_OpRsh64x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpPPC64SRAD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v2 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v2.AuxInt = -64
@@ -14888,8 +14278,8 @@ func rewriteValuePPC64_OpRsh64x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -14910,8 +14300,7 @@ func rewriteValuePPC64_OpRsh8Ux16(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBZreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8Ux16 x y)
@@ -14922,9 +14311,7 @@ func rewriteValuePPC64_OpRsh8Ux16(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -8
@@ -14932,8 +14319,8 @@ func rewriteValuePPC64_OpRsh8Ux16(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -14992,8 +14379,7 @@ func rewriteValuePPC64_OpRsh8Ux32(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBZreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8Ux32 x y)
@@ -15004,9 +14390,7 @@ func rewriteValuePPC64_OpRsh8Ux32(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -8
@@ -15014,8 +14398,8 @@ func rewriteValuePPC64_OpRsh8Ux32(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15089,8 +14473,7 @@ func rewriteValuePPC64_OpRsh8Ux64(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBZreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8Ux64 x y)
@@ -15101,16 +14484,14 @@ func rewriteValuePPC64_OpRsh8Ux64(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -8
                v3.AddArg(y)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15131,8 +14512,7 @@ func rewriteValuePPC64_OpRsh8Ux8(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBZreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8Ux8 x y)
@@ -15143,9 +14523,7 @@ func rewriteValuePPC64_OpRsh8Ux8(v *Value) bool {
                v.reset(OpPPC64SRW)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -8
@@ -15153,8 +14531,8 @@ func rewriteValuePPC64_OpRsh8Ux8(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15175,8 +14553,7 @@ func rewriteValuePPC64_OpRsh8x16(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8x16 x y)
@@ -15187,9 +14564,7 @@ func rewriteValuePPC64_OpRsh8x16(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -8
@@ -15197,8 +14572,8 @@ func rewriteValuePPC64_OpRsh8x16(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15257,8 +14632,7 @@ func rewriteValuePPC64_OpRsh8x32(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8x32 x y)
@@ -15269,9 +14643,7 @@ func rewriteValuePPC64_OpRsh8x32(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -8
@@ -15279,8 +14651,8 @@ func rewriteValuePPC64_OpRsh8x32(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15358,8 +14730,7 @@ func rewriteValuePPC64_OpRsh8x64(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8x64 x y)
@@ -15370,16 +14741,14 @@ func rewriteValuePPC64_OpRsh8x64(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -8
                v3.AddArg(y)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15400,8 +14769,7 @@ func rewriteValuePPC64_OpRsh8x8(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8x8 x y)
@@ -15412,9 +14780,7 @@ func rewriteValuePPC64_OpRsh8x8(v *Value) bool {
                v.reset(OpPPC64SRAW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpPPC64ORN, typ.Int64)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpPPC64MaskIfNotCarry, typ.Int64)
                v3 := b.NewValue0(v.Pos, OpPPC64ADDconstForCarry, types.TypeFlags)
                v3.AuxInt = -8
@@ -15422,8 +14788,8 @@ func rewriteValuePPC64_OpRsh8x8(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15459,9 +14825,7 @@ func rewriteValuePPC64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64FMOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -15476,9 +14840,7 @@ func rewriteValuePPC64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64FMOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -15493,9 +14855,7 @@ func rewriteValuePPC64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64FMOVSstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -15510,9 +14870,7 @@ func rewriteValuePPC64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -15527,9 +14885,7 @@ func rewriteValuePPC64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVWstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -15544,9 +14900,7 @@ func rewriteValuePPC64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVHstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -15561,9 +14915,7 @@ func rewriteValuePPC64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVBstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -15737,8 +15089,7 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                destptr := v_0
                mem := v_1
                v.reset(OpPPC64MOVBstorezero)
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [2] destptr mem)
@@ -15750,8 +15101,7 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                destptr := v_0
                mem := v_1
                v.reset(OpPPC64MOVHstorezero)
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [3] destptr mem)
@@ -15764,11 +15114,9 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64MOVBstorezero)
                v.AuxInt = 2
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHstorezero, types.TypeMem)
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [4] destptr mem)
@@ -15780,8 +15128,7 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                destptr := v_0
                mem := v_1
                v.reset(OpPPC64MOVWstorezero)
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [5] destptr mem)
@@ -15794,11 +15141,9 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64MOVBstorezero)
                v.AuxInt = 4
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVWstorezero, types.TypeMem)
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [6] destptr mem)
@@ -15811,11 +15156,9 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64MOVHstorezero)
                v.AuxInt = 4
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVWstorezero, types.TypeMem)
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [7] destptr mem)
@@ -15828,15 +15171,12 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64MOVBstorezero)
                v.AuxInt = 6
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVHstorezero, types.TypeMem)
                v0.AuxInt = 4
-               v0.AddArg(destptr)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVWstorezero, types.TypeMem)
-               v1.AddArg(destptr)
-               v1.AddArg(mem)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(destptr, mem)
+               v0.AddArg2(destptr, v1)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [8] {t} destptr mem)
@@ -15853,8 +15193,7 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                        break
                }
                v.reset(OpPPC64MOVDstorezero)
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [8] destptr mem)
@@ -15867,12 +15206,10 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64MOVWstorezero)
                v.AuxInt = 4
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVWstorezero, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [12] {t} destptr mem)
@@ -15890,12 +15227,10 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                }
                v.reset(OpPPC64MOVWstorezero)
                v.AuxInt = 8
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDstorezero, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [16] {t} destptr mem)
@@ -15913,12 +15248,10 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                }
                v.reset(OpPPC64MOVDstorezero)
                v.AuxInt = 8
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDstorezero, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [24] {t} destptr mem)
@@ -15936,16 +15269,13 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                }
                v.reset(OpPPC64MOVDstorezero)
                v.AuxInt = 16
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDstorezero, types.TypeMem)
                v0.AuxInt = 8
-               v0.AddArg(destptr)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVDstorezero, types.TypeMem)
                v1.AuxInt = 0
-               v1.AddArg(destptr)
-               v1.AddArg(mem)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(destptr, mem)
+               v0.AddArg2(destptr, v1)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [32] {t} destptr mem)
@@ -15963,20 +15293,16 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                }
                v.reset(OpPPC64MOVDstorezero)
                v.AuxInt = 24
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDstorezero, types.TypeMem)
                v0.AuxInt = 16
-               v0.AddArg(destptr)
                v1 := b.NewValue0(v.Pos, OpPPC64MOVDstorezero, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpPPC64MOVDstorezero, types.TypeMem)
                v2.AuxInt = 0
-               v2.AddArg(destptr)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v2.AddArg2(destptr, mem)
+               v1.AddArg2(destptr, v2)
+               v0.AddArg2(destptr, v1)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [s] ptr mem)
@@ -15987,8 +15313,7 @@ func rewriteValuePPC64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpPPC64LoweredZero)
                v.AuxInt = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
 }
@@ -16127,8 +15452,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64EQ)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ANDCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16157,8 +15481,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64EQ)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16187,8 +15510,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64EQ)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64XORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16286,8 +15608,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64GE)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ANDCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16316,8 +15637,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64GE)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16346,8 +15666,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64GE)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64XORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16446,8 +15765,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64GT)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ANDCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16476,8 +15794,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64GT)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16506,8 +15823,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64GT)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64XORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16707,8 +16023,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64LE)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ANDCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16737,8 +16052,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64LE)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16767,8 +16081,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64LE)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64XORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16867,8 +16180,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64LT)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ANDCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16897,8 +16209,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64LT)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -16927,8 +16238,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64LT)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64XORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -17226,8 +16536,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64NE)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ANDCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -17256,8 +16565,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64NE)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64ORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
@@ -17286,8 +16594,7 @@ func rewriteBlockPPC64(b *Block) bool {
                                }
                                b.Reset(BlockPPC64NE)
                                v0 := b.NewValue0(v_0.Pos, OpPPC64XORCC, types.TypeFlags)
-                               v0.AddArg(x)
-                               v0.AddArg(y)
+                               v0.AddArg2(x, y)
                                b.AddControl(v0)
                                return true
                        }
index 4d70814cfdd011fec07b8625f115aa721fb8db11..e40fe69930b4698b9ca81dd992be8b0ad924b91d 100644 (file)
@@ -590,19 +590,16 @@ func rewriteValueRISCV64_OpAvg64u(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpRISCV64SRLI, t)
                v1.AuxInt = 1
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpRISCV64SRLI, t)
                v2.AuxInt = 1
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpRISCV64ANDI, t)
                v3.AuxInt = 1
                v4 := b.NewValue0(v.Pos, OpRISCV64AND, t)
-               v4.AddArg(x)
-               v4.AddArg(y)
+               v4.AddArg2(x, y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -704,10 +701,9 @@ func rewriteValueRISCV64_OpDiv16(v *Value) bool {
                v.reset(OpRISCV64DIVW)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -724,10 +720,9 @@ func rewriteValueRISCV64_OpDiv16u(v *Value) bool {
                v.reset(OpRISCV64DIVUW)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -744,10 +739,9 @@ func rewriteValueRISCV64_OpDiv8(v *Value) bool {
                v.reset(OpRISCV64DIVW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -764,10 +758,9 @@ func rewriteValueRISCV64_OpDiv8u(v *Value) bool {
                v.reset(OpRISCV64DIVUW)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -784,8 +777,7 @@ func rewriteValueRISCV64_OpEq16(v *Value) bool {
                v.reset(OpRISCV64SEQZ)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpRISCV64SUB, x.Type)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -802,8 +794,7 @@ func rewriteValueRISCV64_OpEq32(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64SEQZ)
                v0 := b.NewValue0(v.Pos, OpRISCV64SUBW, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -819,8 +810,7 @@ func rewriteValueRISCV64_OpEq64(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64SEQZ)
                v0 := b.NewValue0(v.Pos, OpRISCV64SUB, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -838,8 +828,7 @@ func rewriteValueRISCV64_OpEq8(v *Value) bool {
                v.reset(OpRISCV64SEQZ)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpRISCV64SUB, x.Type)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -858,8 +847,7 @@ func rewriteValueRISCV64_OpEqB(v *Value) bool {
                v.reset(OpRISCV64XORI)
                v.AuxInt = 1
                v0 := b.NewValue0(v.Pos, OpRISCV64XOR, typ.Bool)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -875,8 +863,7 @@ func rewriteValueRISCV64_OpEqPtr(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64SEQZ)
                v0 := b.NewValue0(v.Pos, OpRISCV64SUB, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -890,8 +877,7 @@ func rewriteValueRISCV64_OpGeq32F(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpRISCV64FLES)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
 }
@@ -904,8 +890,7 @@ func rewriteValueRISCV64_OpGeq64F(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpRISCV64FLED)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
 }
@@ -918,8 +903,7 @@ func rewriteValueRISCV64_OpGreater32F(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpRISCV64FLTS)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
 }
@@ -932,8 +916,7 @@ func rewriteValueRISCV64_OpGreater64F(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpRISCV64FLTD)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
 }
@@ -952,10 +935,9 @@ func rewriteValueRISCV64_OpHmul32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64MUL, typ.Int64)
                v1 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -975,10 +957,9 @@ func rewriteValueRISCV64_OpHmul32u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64MUL, typ.Int64)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -993,8 +974,7 @@ func rewriteValueRISCV64_OpIsNonNil(v *Value) bool {
                p := v_0
                v.reset(OpNeqPtr)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
-               v.AddArg(v0)
-               v.AddArg(p)
+               v.AddArg2(v0, p)
                return true
        }
 }
@@ -1010,8 +990,7 @@ func rewriteValueRISCV64_OpLeq16(v *Value) bool {
                y := v_1
                v.reset(OpNot)
                v0 := b.NewValue0(v.Pos, OpLess16, typ.Bool)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1028,8 +1007,7 @@ func rewriteValueRISCV64_OpLeq16U(v *Value) bool {
                y := v_1
                v.reset(OpNot)
                v0 := b.NewValue0(v.Pos, OpLess16U, typ.Bool)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1046,8 +1024,7 @@ func rewriteValueRISCV64_OpLeq32(v *Value) bool {
                y := v_1
                v.reset(OpNot)
                v0 := b.NewValue0(v.Pos, OpLess32, typ.Bool)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1064,8 +1041,7 @@ func rewriteValueRISCV64_OpLeq32U(v *Value) bool {
                y := v_1
                v.reset(OpNot)
                v0 := b.NewValue0(v.Pos, OpLess32U, typ.Bool)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1082,8 +1058,7 @@ func rewriteValueRISCV64_OpLeq64(v *Value) bool {
                y := v_1
                v.reset(OpNot)
                v0 := b.NewValue0(v.Pos, OpLess64, typ.Bool)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1100,8 +1075,7 @@ func rewriteValueRISCV64_OpLeq64U(v *Value) bool {
                y := v_1
                v.reset(OpNot)
                v0 := b.NewValue0(v.Pos, OpLess64U, typ.Bool)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1118,8 +1092,7 @@ func rewriteValueRISCV64_OpLeq8(v *Value) bool {
                y := v_1
                v.reset(OpNot)
                v0 := b.NewValue0(v.Pos, OpLess8, typ.Bool)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1136,8 +1109,7 @@ func rewriteValueRISCV64_OpLeq8U(v *Value) bool {
                y := v_1
                v.reset(OpNot)
                v0 := b.NewValue0(v.Pos, OpLess8U, typ.Bool)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -1155,10 +1127,9 @@ func rewriteValueRISCV64_OpLess16(v *Value) bool {
                v.reset(OpRISCV64SLT)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1175,10 +1146,9 @@ func rewriteValueRISCV64_OpLess16U(v *Value) bool {
                v.reset(OpRISCV64SLTU)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1195,10 +1165,9 @@ func rewriteValueRISCV64_OpLess32(v *Value) bool {
                v.reset(OpRISCV64SLT)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1215,10 +1184,9 @@ func rewriteValueRISCV64_OpLess32U(v *Value) bool {
                v.reset(OpRISCV64SLTU)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1235,10 +1203,9 @@ func rewriteValueRISCV64_OpLess8(v *Value) bool {
                v.reset(OpRISCV64SLT)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1255,10 +1222,9 @@ func rewriteValueRISCV64_OpLess8U(v *Value) bool {
                v.reset(OpRISCV64SLTU)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1276,8 +1242,7 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVBUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1291,8 +1256,7 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVBload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1306,8 +1270,7 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVBUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1321,8 +1284,7 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVHload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1336,8 +1298,7 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVHUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1351,8 +1312,7 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVWload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1366,8 +1326,7 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVWUload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1381,8 +1340,7 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1396,8 +1354,7 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64FMOVWload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1411,8 +1368,7 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64FMOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -1443,9 +1399,7 @@ func rewriteValueRISCV64_OpLsh16x16(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg16, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1453,7 +1407,7 @@ func rewriteValueRISCV64_OpLsh16x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1470,9 +1424,7 @@ func rewriteValueRISCV64_OpLsh16x32(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg16, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1480,7 +1432,7 @@ func rewriteValueRISCV64_OpLsh16x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1496,15 +1448,13 @@ func rewriteValueRISCV64_OpLsh16x64(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg16, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1521,9 +1471,7 @@ func rewriteValueRISCV64_OpLsh16x8(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg16, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1531,7 +1479,7 @@ func rewriteValueRISCV64_OpLsh16x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1548,9 +1496,7 @@ func rewriteValueRISCV64_OpLsh32x16(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg32, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1558,7 +1504,7 @@ func rewriteValueRISCV64_OpLsh32x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1575,9 +1521,7 @@ func rewriteValueRISCV64_OpLsh32x32(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg32, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1585,7 +1529,7 @@ func rewriteValueRISCV64_OpLsh32x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1601,15 +1545,13 @@ func rewriteValueRISCV64_OpLsh32x64(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg32, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1626,9 +1568,7 @@ func rewriteValueRISCV64_OpLsh32x8(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg32, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1636,7 +1576,7 @@ func rewriteValueRISCV64_OpLsh32x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1653,9 +1593,7 @@ func rewriteValueRISCV64_OpLsh64x16(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg64, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1663,7 +1601,7 @@ func rewriteValueRISCV64_OpLsh64x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1680,9 +1618,7 @@ func rewriteValueRISCV64_OpLsh64x32(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg64, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1690,7 +1626,7 @@ func rewriteValueRISCV64_OpLsh64x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1706,15 +1642,13 @@ func rewriteValueRISCV64_OpLsh64x64(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg64, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1731,9 +1665,7 @@ func rewriteValueRISCV64_OpLsh64x8(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg64, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1741,7 +1673,7 @@ func rewriteValueRISCV64_OpLsh64x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1758,9 +1690,7 @@ func rewriteValueRISCV64_OpLsh8x16(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg8, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1768,7 +1698,7 @@ func rewriteValueRISCV64_OpLsh8x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1785,9 +1715,7 @@ func rewriteValueRISCV64_OpLsh8x32(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg8, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1795,7 +1723,7 @@ func rewriteValueRISCV64_OpLsh8x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1811,15 +1739,13 @@ func rewriteValueRISCV64_OpLsh8x64(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg8, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1836,9 +1762,7 @@ func rewriteValueRISCV64_OpLsh8x8(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg8, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -1846,7 +1770,7 @@ func rewriteValueRISCV64_OpLsh8x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1863,10 +1787,9 @@ func rewriteValueRISCV64_OpMod16(v *Value) bool {
                v.reset(OpRISCV64REMW)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1883,10 +1806,9 @@ func rewriteValueRISCV64_OpMod16u(v *Value) bool {
                v.reset(OpRISCV64REMUW)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1903,10 +1825,9 @@ func rewriteValueRISCV64_OpMod8(v *Value) bool {
                v.reset(OpRISCV64REMW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1923,10 +1844,9 @@ func rewriteValueRISCV64_OpMod8u(v *Value) bool {
                v.reset(OpRISCV64REMUW)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1959,12 +1879,9 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpRISCV64MOVBstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVBload, typ.Int8)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] dst src mem)
@@ -1977,12 +1894,9 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpRISCV64MOVHstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVHload, typ.Int16)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [4] dst src mem)
@@ -1995,12 +1909,9 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpRISCV64MOVWstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVWload, typ.Int32)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [8] dst src mem)
@@ -2013,12 +1924,9 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpRISCV64MOVDstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVDload, typ.Int64)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [s] {t} dst src mem)
@@ -2031,13 +1939,10 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpRISCV64LoweredMove)
                v.AuxInt = t.(*types.Type).Alignment()
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpRISCV64ADDI, src.Type)
                v0.AuxInt = s - moveSize(t.(*types.Type).Alignment(), config)
                v0.AddArg(src)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg4(dst, src, v0, mem)
                return true
        }
 }
@@ -2054,10 +1959,9 @@ func rewriteValueRISCV64_OpMul16(v *Value) bool {
                v.reset(OpRISCV64MULW)
                v0 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2074,10 +1978,9 @@ func rewriteValueRISCV64_OpMul8(v *Value) bool {
                v.reset(OpRISCV64MULW)
                v0 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2091,8 +1994,7 @@ func rewriteValueRISCV64_OpNeg16(v *Value) bool {
                x := v_0
                v.reset(OpRISCV64SUB)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVHconst, typ.UInt16)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -2106,8 +2008,7 @@ func rewriteValueRISCV64_OpNeg32(v *Value) bool {
                x := v_0
                v.reset(OpRISCV64SUB)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVWconst, typ.UInt32)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -2121,8 +2022,7 @@ func rewriteValueRISCV64_OpNeg64(v *Value) bool {
                x := v_0
                v.reset(OpRISCV64SUB)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -2136,8 +2036,7 @@ func rewriteValueRISCV64_OpNeg8(v *Value) bool {
                x := v_0
                v.reset(OpRISCV64SUB)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVBconst, typ.UInt8)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -2154,8 +2053,7 @@ func rewriteValueRISCV64_OpNeq16(v *Value) bool {
                v.reset(OpRISCV64SNEZ)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpRISCV64SUB, x.Type)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -2172,8 +2070,7 @@ func rewriteValueRISCV64_OpNeq32(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64SNEZ)
                v0 := b.NewValue0(v.Pos, OpRISCV64SUBW, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2189,8 +2086,7 @@ func rewriteValueRISCV64_OpNeq64(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64SNEZ)
                v0 := b.NewValue0(v.Pos, OpRISCV64SUB, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2208,8 +2104,7 @@ func rewriteValueRISCV64_OpNeq8(v *Value) bool {
                v.reset(OpRISCV64SNEZ)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpRISCV64SUB, x.Type)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -2226,8 +2121,7 @@ func rewriteValueRISCV64_OpNeqPtr(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64SNEZ)
                v0 := b.NewValue0(v.Pos, OpRISCV64SUB, x.Type)
-               v0.AddArg(x)
-               v0.AddArg(y)
+               v0.AddArg2(x, y)
                v.AddArg(v0)
                return true
        }
@@ -2283,8 +2177,7 @@ func rewriteValueRISCV64_OpOffPtr(v *Value) bool {
                v.reset(OpRISCV64ADD)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
                v0.AuxInt = off
-               v.AddArg(v0)
-               v.AddArg(ptr)
+               v.AddArg2(v0, ptr)
                return true
        }
 }
@@ -2305,9 +2198,7 @@ func rewriteValueRISCV64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpRISCV64LoweredPanicBoundsA)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -2323,9 +2214,7 @@ func rewriteValueRISCV64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpRISCV64LoweredPanicBoundsB)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -2341,9 +2230,7 @@ func rewriteValueRISCV64_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpRISCV64LoweredPanicBoundsC)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        return false
@@ -2431,8 +2318,7 @@ func rewriteValueRISCV64_OpRISCV64MOVBUload(v *Value) bool {
                v.reset(OpRISCV64MOVBUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVBUload [off1] {sym} (ADDI [off2] base) mem)
@@ -2453,8 +2339,7 @@ func rewriteValueRISCV64_OpRISCV64MOVBUload(v *Value) bool {
                v.reset(OpRISCV64MOVBUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -2481,8 +2366,7 @@ func rewriteValueRISCV64_OpRISCV64MOVBload(v *Value) bool {
                v.reset(OpRISCV64MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVBload [off1] {sym} (ADDI [off2] base) mem)
@@ -2503,8 +2387,7 @@ func rewriteValueRISCV64_OpRISCV64MOVBload(v *Value) bool {
                v.reset(OpRISCV64MOVBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -2533,9 +2416,7 @@ func rewriteValueRISCV64_OpRISCV64MOVBstore(v *Value) bool {
                v.reset(OpRISCV64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym} (ADDI [off2] base) val mem)
@@ -2557,9 +2438,7 @@ func rewriteValueRISCV64_OpRISCV64MOVBstore(v *Value) bool {
                v.reset(OpRISCV64MOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -2582,10 +2461,9 @@ func rewriteValueRISCV64_OpRISCV64MOVDconst(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
                v1.AuxInt = c>>32 + 1
                v0.AddArg(v1)
-               v.AddArg(v0)
                v2 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
                v2.AuxInt = int64(int32(c))
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (MOVDconst <t> [c])
@@ -2603,10 +2481,9 @@ func rewriteValueRISCV64_OpRISCV64MOVDconst(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
                v1.AuxInt = c>>32 + 0
                v0.AddArg(v1)
-               v.AddArg(v0)
                v2 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
                v2.AuxInt = int64(int32(c))
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -2633,8 +2510,7 @@ func rewriteValueRISCV64_OpRISCV64MOVDload(v *Value) bool {
                v.reset(OpRISCV64MOVDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVDload [off1] {sym} (ADDI [off2] base) mem)
@@ -2655,8 +2531,7 @@ func rewriteValueRISCV64_OpRISCV64MOVDload(v *Value) bool {
                v.reset(OpRISCV64MOVDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -2685,9 +2560,7 @@ func rewriteValueRISCV64_OpRISCV64MOVDstore(v *Value) bool {
                v.reset(OpRISCV64MOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym} (ADDI [off2] base) val mem)
@@ -2709,9 +2582,7 @@ func rewriteValueRISCV64_OpRISCV64MOVDstore(v *Value) bool {
                v.reset(OpRISCV64MOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -2738,8 +2609,7 @@ func rewriteValueRISCV64_OpRISCV64MOVHUload(v *Value) bool {
                v.reset(OpRISCV64MOVHUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVHUload [off1] {sym} (ADDI [off2] base) mem)
@@ -2760,8 +2630,7 @@ func rewriteValueRISCV64_OpRISCV64MOVHUload(v *Value) bool {
                v.reset(OpRISCV64MOVHUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -2788,8 +2657,7 @@ func rewriteValueRISCV64_OpRISCV64MOVHload(v *Value) bool {
                v.reset(OpRISCV64MOVHload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVHload [off1] {sym} (ADDI [off2] base) mem)
@@ -2810,8 +2678,7 @@ func rewriteValueRISCV64_OpRISCV64MOVHload(v *Value) bool {
                v.reset(OpRISCV64MOVHload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -2840,9 +2707,7 @@ func rewriteValueRISCV64_OpRISCV64MOVHstore(v *Value) bool {
                v.reset(OpRISCV64MOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVHstore [off1] {sym} (ADDI [off2] base) val mem)
@@ -2864,9 +2729,7 @@ func rewriteValueRISCV64_OpRISCV64MOVHstore(v *Value) bool {
                v.reset(OpRISCV64MOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -2893,8 +2756,7 @@ func rewriteValueRISCV64_OpRISCV64MOVWUload(v *Value) bool {
                v.reset(OpRISCV64MOVWUload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVWUload [off1] {sym} (ADDI [off2] base) mem)
@@ -2915,8 +2777,7 @@ func rewriteValueRISCV64_OpRISCV64MOVWUload(v *Value) bool {
                v.reset(OpRISCV64MOVWUload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -2943,8 +2804,7 @@ func rewriteValueRISCV64_OpRISCV64MOVWload(v *Value) bool {
                v.reset(OpRISCV64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVWload [off1] {sym} (ADDI [off2] base) mem)
@@ -2965,8 +2825,7 @@ func rewriteValueRISCV64_OpRISCV64MOVWload(v *Value) bool {
                v.reset(OpRISCV64MOVWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        return false
@@ -2995,9 +2854,7 @@ func rewriteValueRISCV64_OpRISCV64MOVWstore(v *Value) bool {
                v.reset(OpRISCV64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym} (ADDI [off2] base) val mem)
@@ -3019,9 +2876,7 @@ func rewriteValueRISCV64_OpRISCV64MOVWstore(v *Value) bool {
                v.reset(OpRISCV64MOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        return false
@@ -3042,17 +2897,14 @@ func rewriteValueRISCV64_OpRotateLeft16(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr16)
                v0 := b.NewValue0(v.Pos, OpLsh16x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpRISCV64MOVHconst, typ.UInt16)
                v1.AuxInt = c & 15
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh16Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpRISCV64MOVHconst, typ.UInt16)
                v3.AuxInt = -c & 15
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -3073,17 +2925,14 @@ func rewriteValueRISCV64_OpRotateLeft32(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr32)
                v0 := b.NewValue0(v.Pos, OpLsh32x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpRISCV64MOVWconst, typ.UInt32)
                v1.AuxInt = c & 31
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh32Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpRISCV64MOVWconst, typ.UInt32)
                v3.AuxInt = -c & 31
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -3104,17 +2953,14 @@ func rewriteValueRISCV64_OpRotateLeft64(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr64)
                v0 := b.NewValue0(v.Pos, OpLsh64x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
                v1.AuxInt = c & 63
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh64Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
                v3.AuxInt = -c & 63
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -3135,17 +2981,14 @@ func rewriteValueRISCV64_OpRotateLeft8(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr8)
                v0 := b.NewValue0(v.Pos, OpLsh8x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpRISCV64MOVBconst, typ.UInt8)
                v1.AuxInt = c & 7
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh8Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpRISCV64MOVBconst, typ.UInt8)
                v3.AuxInt = -c & 7
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -3165,9 +3008,7 @@ func rewriteValueRISCV64_OpRsh16Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg16, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
@@ -3175,7 +3016,7 @@ func rewriteValueRISCV64_OpRsh16Ux16(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3194,9 +3035,7 @@ func rewriteValueRISCV64_OpRsh16Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg16, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
@@ -3204,7 +3043,7 @@ func rewriteValueRISCV64_OpRsh16Ux32(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3223,15 +3062,13 @@ func rewriteValueRISCV64_OpRsh16Ux64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg16, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3250,9 +3087,7 @@ func rewriteValueRISCV64_OpRsh16Ux8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg16, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
@@ -3260,7 +3095,7 @@ func rewriteValueRISCV64_OpRsh16Ux8(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3279,9 +3114,7 @@ func rewriteValueRISCV64_OpRsh16x16(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -3290,8 +3123,8 @@ func rewriteValueRISCV64_OpRsh16x16(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3310,9 +3143,7 @@ func rewriteValueRISCV64_OpRsh16x32(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -3321,8 +3152,8 @@ func rewriteValueRISCV64_OpRsh16x32(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3341,17 +3172,15 @@ func rewriteValueRISCV64_OpRsh16x64(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
                v3.AuxInt = 64
                v3.AddArg(y)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3370,9 +3199,7 @@ func rewriteValueRISCV64_OpRsh16x8(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -3381,8 +3208,8 @@ func rewriteValueRISCV64_OpRsh16x8(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3401,9 +3228,7 @@ func rewriteValueRISCV64_OpRsh32Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg32, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
@@ -3411,7 +3236,7 @@ func rewriteValueRISCV64_OpRsh32Ux16(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3430,9 +3255,7 @@ func rewriteValueRISCV64_OpRsh32Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg32, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
@@ -3440,7 +3263,7 @@ func rewriteValueRISCV64_OpRsh32Ux32(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3459,15 +3282,13 @@ func rewriteValueRISCV64_OpRsh32Ux64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg32, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3486,9 +3307,7 @@ func rewriteValueRISCV64_OpRsh32Ux8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg32, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
@@ -3496,7 +3315,7 @@ func rewriteValueRISCV64_OpRsh32Ux8(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3515,9 +3334,7 @@ func rewriteValueRISCV64_OpRsh32x16(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -3526,8 +3343,8 @@ func rewriteValueRISCV64_OpRsh32x16(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3546,9 +3363,7 @@ func rewriteValueRISCV64_OpRsh32x32(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -3557,8 +3372,8 @@ func rewriteValueRISCV64_OpRsh32x32(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3577,17 +3392,15 @@ func rewriteValueRISCV64_OpRsh32x64(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
                v3.AuxInt = 64
                v3.AddArg(y)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3606,9 +3419,7 @@ func rewriteValueRISCV64_OpRsh32x8(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -3617,8 +3428,8 @@ func rewriteValueRISCV64_OpRsh32x8(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3635,9 +3446,7 @@ func rewriteValueRISCV64_OpRsh64Ux16(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg64, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -3645,7 +3454,7 @@ func rewriteValueRISCV64_OpRsh64Ux16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3662,9 +3471,7 @@ func rewriteValueRISCV64_OpRsh64Ux32(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg64, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -3672,7 +3479,7 @@ func rewriteValueRISCV64_OpRsh64Ux32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3688,15 +3495,13 @@ func rewriteValueRISCV64_OpRsh64Ux64(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg64, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3713,9 +3518,7 @@ func rewriteValueRISCV64_OpRsh64Ux8(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64AND)
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpNeg64, t)
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v2.AuxInt = 64
@@ -3723,7 +3526,7 @@ func rewriteValueRISCV64_OpRsh64Ux8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3740,9 +3543,7 @@ func rewriteValueRISCV64_OpRsh64x16(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64SRA)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v1.AuxInt = -1
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -3751,8 +3552,8 @@ func rewriteValueRISCV64_OpRsh64x16(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3769,9 +3570,7 @@ func rewriteValueRISCV64_OpRsh64x32(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64SRA)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v1.AuxInt = -1
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -3780,8 +3579,8 @@ func rewriteValueRISCV64_OpRsh64x32(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3797,17 +3596,15 @@ func rewriteValueRISCV64_OpRsh64x64(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64SRA)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v1.AuxInt = -1
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
                v2.AuxInt = 64
                v2.AddArg(y)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3824,9 +3621,7 @@ func rewriteValueRISCV64_OpRsh64x8(v *Value) bool {
                y := v_1
                v.reset(OpRISCV64SRA)
                v.Type = t
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v1.AuxInt = -1
                v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -3835,8 +3630,8 @@ func rewriteValueRISCV64_OpRsh64x8(v *Value) bool {
                v3.AddArg(y)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(y, v1)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3855,9 +3650,7 @@ func rewriteValueRISCV64_OpRsh8Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg8, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
@@ -3865,7 +3658,7 @@ func rewriteValueRISCV64_OpRsh8Ux16(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3884,9 +3677,7 @@ func rewriteValueRISCV64_OpRsh8Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg8, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
@@ -3894,7 +3685,7 @@ func rewriteValueRISCV64_OpRsh8Ux32(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3913,15 +3704,13 @@ func rewriteValueRISCV64_OpRsh8Ux64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg8, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3940,9 +3729,7 @@ func rewriteValueRISCV64_OpRsh8Ux8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpRISCV64SRL, t)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpNeg8, t)
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
                v3.AuxInt = 64
@@ -3950,7 +3737,7 @@ func rewriteValueRISCV64_OpRsh8Ux8(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3969,9 +3756,7 @@ func rewriteValueRISCV64_OpRsh8x16(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -3980,8 +3765,8 @@ func rewriteValueRISCV64_OpRsh8x16(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -4000,9 +3785,7 @@ func rewriteValueRISCV64_OpRsh8x32(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -4011,8 +3794,8 @@ func rewriteValueRISCV64_OpRsh8x32(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -4031,17 +3814,15 @@ func rewriteValueRISCV64_OpRsh8x64(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
                v3.AuxInt = 64
                v3.AddArg(y)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -4060,9 +3841,7 @@ func rewriteValueRISCV64_OpRsh8x8(v *Value) bool {
                v.Type = t
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
                v2.AuxInt = -1
                v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
@@ -4071,8 +3850,8 @@ func rewriteValueRISCV64_OpRsh8x8(v *Value) bool {
                v4.AddArg(y)
                v3.AddArg(v4)
                v2.AddArg(v3)
-               v1.AddArg(v2)
-               v.AddArg(v1)
+               v1.AddArg2(y, v2)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -4209,9 +3988,7 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVBstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -4226,9 +4003,7 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVHstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -4243,9 +4018,7 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVWstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -4260,9 +4033,7 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64MOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -4277,9 +4048,7 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64FMOVWstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -4294,9 +4063,7 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpRISCV64FMOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -4328,10 +4095,8 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpRISCV64MOVBstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVBconst, typ.UInt8)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [2] ptr mem)
@@ -4343,10 +4108,8 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpRISCV64MOVHstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVHconst, typ.UInt16)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [4] ptr mem)
@@ -4358,10 +4121,8 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpRISCV64MOVWstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVWconst, typ.UInt32)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [8] ptr mem)
@@ -4373,10 +4134,8 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
                ptr := v_0
                mem := v_1
                v.reset(OpRISCV64MOVDstore)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
        // match: (Zero [s] {t} ptr mem)
@@ -4388,14 +4147,11 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpRISCV64LoweredZero)
                v.AuxInt = t.(*types.Type).Alignment()
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpRISCV64ADD, ptr.Type)
-               v0.AddArg(ptr)
                v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
                v1.AuxInt = s - moveSize(t.(*types.Type).Alignment(), config)
-               v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(ptr, v1)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
 }
index 4fc90128d05de4d04a4b46b554a20860fb22e3d6..7a78dfdac703ab0a4e1cf896b80a011116970885 100644 (file)
@@ -936,12 +936,9 @@ func rewriteValueS390X_OpAtomicAdd32(v *Value) bool {
                val := v_1
                mem := v_2
                v.reset(OpS390XAddTupleFirst32)
-               v.AddArg(val)
                v0 := b.NewValue0(v.Pos, OpS390XLAA, types.NewTuple(typ.UInt32, types.TypeMem))
-               v0.AddArg(ptr)
-               v0.AddArg(val)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg3(ptr, val, mem)
+               v.AddArg2(val, v0)
                return true
        }
 }
@@ -958,12 +955,9 @@ func rewriteValueS390X_OpAtomicAdd64(v *Value) bool {
                val := v_1
                mem := v_2
                v.reset(OpS390XAddTupleFirst64)
-               v.AddArg(val)
                v0 := b.NewValue0(v.Pos, OpS390XLAAG, types.NewTuple(typ.UInt64, types.TypeMem))
-               v0.AddArg(ptr)
-               v0.AddArg(val)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg3(ptr, val, mem)
+               v.AddArg2(val, v0)
                return true
        }
 }
@@ -980,21 +974,17 @@ func rewriteValueS390X_OpAtomicAnd8(v *Value) bool {
                val := v_1
                mem := v_2
                v.reset(OpS390XLANfloor)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpS390XRLL, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpS390XORWconst, typ.UInt32)
                v1.AuxInt = -1 << 8
                v1.AddArg(val)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XRXSBG, typ.UInt32)
                v2.Aux = s390x.NewRotateParams(59, 60, 3)
                v3 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v3.AuxInt = 3 << 3
-               v2.AddArg(v3)
-               v2.AddArg(ptr)
-               v0.AddArg(v2)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v2.AddArg2(v3, ptr)
+               v0.AddArg2(v1, v2)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
 }
@@ -1011,20 +1001,16 @@ func rewriteValueS390X_OpAtomicOr8(v *Value) bool {
                val := v_1
                mem := v_2
                v.reset(OpS390XLAOfloor)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpS390XSLW, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt32)
                v1.AddArg(val)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XRXSBG, typ.UInt32)
                v2.Aux = s390x.NewRotateParams(59, 60, 3)
                v3 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v3.AuxInt = 3 << 3
-               v2.AddArg(v3)
-               v2.AddArg(ptr)
-               v0.AddArg(v2)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v2.AddArg2(v3, ptr)
+               v0.AddArg2(v1, v2)
+               v.AddArg3(ptr, v0, mem)
                return true
        }
 }
@@ -1041,9 +1027,7 @@ func rewriteValueS390X_OpAtomicStore32(v *Value) bool {
                mem := v_2
                v.reset(OpS390XSYNC)
                v0 := b.NewValue0(v.Pos, OpS390XMOVWatomicstore, types.TypeMem)
-               v0.AddArg(ptr)
-               v0.AddArg(val)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, val, mem)
                v.AddArg(v0)
                return true
        }
@@ -1061,9 +1045,7 @@ func rewriteValueS390X_OpAtomicStore64(v *Value) bool {
                mem := v_2
                v.reset(OpS390XSYNC)
                v0 := b.NewValue0(v.Pos, OpS390XMOVDatomicstore, types.TypeMem)
-               v0.AddArg(ptr)
-               v0.AddArg(val)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, val, mem)
                v.AddArg(v0)
                return true
        }
@@ -1081,9 +1063,7 @@ func rewriteValueS390X_OpAtomicStore8(v *Value) bool {
                mem := v_2
                v.reset(OpS390XSYNC)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBatomicstore, types.TypeMem)
-               v0.AddArg(ptr)
-               v0.AddArg(val)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, val, mem)
                v.AddArg(v0)
                return true
        }
@@ -1101,9 +1081,7 @@ func rewriteValueS390X_OpAtomicStorePtrNoWB(v *Value) bool {
                mem := v_2
                v.reset(OpS390XSYNC)
                v0 := b.NewValue0(v.Pos, OpS390XMOVDatomicstore, types.TypeMem)
-               v0.AddArg(ptr)
-               v0.AddArg(val)
-               v0.AddArg(mem)
+               v0.AddArg3(ptr, val, mem)
                v.AddArg(v0)
                return true
        }
@@ -1122,11 +1100,9 @@ func rewriteValueS390X_OpAvg64u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSRDconst, t)
                v0.AuxInt = 1
                v1 := b.NewValue0(v.Pos, OpS390XSUB, t)
-               v1.AddArg(x)
-               v1.AddArg(y)
+               v1.AddArg2(x, y)
                v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -1141,10 +1117,9 @@ func rewriteValueS390X_OpBitLen64(v *Value) bool {
                v.reset(OpS390XSUB)
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 64
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XFLOGR, typ.UInt64)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1181,20 +1156,18 @@ func rewriteValueS390X_OpCtz32(v *Value) bool {
                v.reset(OpS390XSUB)
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 64
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XFLOGR, typ.UInt64)
                v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
                v3 := b.NewValue0(v.Pos, OpS390XANDW, t)
                v4 := b.NewValue0(v.Pos, OpS390XSUBWconst, t)
                v4.AuxInt = 1
                v4.AddArg(x)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpS390XNOTW, t)
                v5.AddArg(x)
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1210,18 +1183,16 @@ func rewriteValueS390X_OpCtz64(v *Value) bool {
                v.reset(OpS390XSUB)
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 64
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XFLOGR, typ.UInt64)
                v2 := b.NewValue0(v.Pos, OpS390XAND, t)
                v3 := b.NewValue0(v.Pos, OpS390XSUBconst, t)
                v3.AuxInt = 1
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XNOT, t)
                v4.AddArg(x)
-               v2.AddArg(v4)
+               v2.AddArg2(v3, v4)
                v1.AddArg(v2)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1238,10 +1209,9 @@ func rewriteValueS390X_OpDiv16(v *Value) bool {
                v.reset(OpS390XDIVW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1258,10 +1228,9 @@ func rewriteValueS390X_OpDiv16u(v *Value) bool {
                v.reset(OpS390XDIVWU)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1278,8 +1247,7 @@ func rewriteValueS390X_OpDiv32(v *Value) bool {
                v.reset(OpS390XDIVW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVWreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -1296,8 +1264,7 @@ func rewriteValueS390X_OpDiv32u(v *Value) bool {
                v.reset(OpS390XDIVWU)
                v0 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -1314,10 +1281,9 @@ func rewriteValueS390X_OpDiv8(v *Value) bool {
                v.reset(OpS390XDIVW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1334,10 +1300,9 @@ func rewriteValueS390X_OpDiv8u(v *Value) bool {
                v.reset(OpS390XDIVWU)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1355,18 +1320,15 @@ func rewriteValueS390X_OpEq16(v *Value) bool {
                v.Aux = s390x.Equal
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1384,14 +1346,11 @@ func rewriteValueS390X_OpEq32(v *Value) bool {
                v.Aux = s390x.Equal
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1409,14 +1368,11 @@ func rewriteValueS390X_OpEq32F(v *Value) bool {
                v.Aux = s390x.Equal
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMPS, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1434,14 +1390,11 @@ func rewriteValueS390X_OpEq64(v *Value) bool {
                v.Aux = s390x.Equal
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1459,14 +1412,11 @@ func rewriteValueS390X_OpEq64F(v *Value) bool {
                v.Aux = s390x.Equal
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1484,18 +1434,15 @@ func rewriteValueS390X_OpEq8(v *Value) bool {
                v.Aux = s390x.Equal
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1513,18 +1460,15 @@ func rewriteValueS390X_OpEqB(v *Value) bool {
                v.Aux = s390x.Equal
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1542,14 +1486,11 @@ func rewriteValueS390X_OpEqPtr(v *Value) bool {
                v.Aux = s390x.Equal
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1564,9 +1505,7 @@ func rewriteValueS390X_OpFMA(v *Value) bool {
                y := v_1
                z := v_2
                v.reset(OpS390XFMADD)
-               v.AddArg(z)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg3(z, x, y)
                return true
        }
 }
@@ -1596,14 +1535,11 @@ func rewriteValueS390X_OpGeq32F(v *Value) bool {
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMPS, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1621,14 +1557,11 @@ func rewriteValueS390X_OpGeq64F(v *Value) bool {
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1646,14 +1579,11 @@ func rewriteValueS390X_OpGreater32F(v *Value) bool {
                v.Aux = s390x.Greater
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMPS, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1671,14 +1601,11 @@ func rewriteValueS390X_OpGreater64F(v *Value) bool {
                v.Aux = s390x.Greater
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1697,10 +1624,9 @@ func rewriteValueS390X_OpHmul32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XMULLD, typ.Int64)
                v1 := b.NewValue0(v.Pos, OpS390XMOVWreg, typ.Int64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XMOVWreg, typ.Int64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1720,10 +1646,9 @@ func rewriteValueS390X_OpHmul32u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XMULLD, typ.Int64)
                v1 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
                v2.AddArg(y)
-               v0.AddArg(v2)
+               v0.AddArg2(v1, v2)
                v.AddArg(v0)
                return true
        }
@@ -1739,8 +1664,7 @@ func rewriteValueS390X_OpITab(v *Value) bool {
                mem := v_0.Args[1]
                ptr := v_0.Args[0]
                v.reset(OpS390XMOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -1759,14 +1683,11 @@ func rewriteValueS390X_OpIsInBounds(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPU, types.TypeFlags)
-               v2.AddArg(idx)
-               v2.AddArg(len)
-               v.AddArg(v2)
+               v2.AddArg2(idx, len)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1782,14 +1703,12 @@ func rewriteValueS390X_OpIsNonNil(v *Value) bool {
                v.Aux = s390x.NotEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPconst, types.TypeFlags)
                v2.AuxInt = 0
                v2.AddArg(p)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1807,14 +1726,11 @@ func rewriteValueS390X_OpIsSliceInBounds(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPU, types.TypeFlags)
-               v2.AddArg(idx)
-               v2.AddArg(len)
-               v.AddArg(v2)
+               v2.AddArg2(idx, len)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1832,18 +1748,15 @@ func rewriteValueS390X_OpLeq16(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1861,18 +1774,15 @@ func rewriteValueS390X_OpLeq16U(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWU, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1890,14 +1800,11 @@ func rewriteValueS390X_OpLeq32(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1915,14 +1822,11 @@ func rewriteValueS390X_OpLeq32F(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMPS, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1940,14 +1844,11 @@ func rewriteValueS390X_OpLeq32U(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWU, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1965,14 +1866,11 @@ func rewriteValueS390X_OpLeq64(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1990,14 +1888,11 @@ func rewriteValueS390X_OpLeq64F(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2015,14 +1910,11 @@ func rewriteValueS390X_OpLeq64U(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPU, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2040,18 +1932,15 @@ func rewriteValueS390X_OpLeq8(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2069,18 +1958,15 @@ func rewriteValueS390X_OpLeq8U(v *Value) bool {
                v.Aux = s390x.LessOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWU, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2098,18 +1984,15 @@ func rewriteValueS390X_OpLess16(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2127,18 +2010,15 @@ func rewriteValueS390X_OpLess16U(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWU, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2156,14 +2036,11 @@ func rewriteValueS390X_OpLess32(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2181,14 +2058,11 @@ func rewriteValueS390X_OpLess32F(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMPS, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2206,14 +2080,11 @@ func rewriteValueS390X_OpLess32U(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWU, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2231,14 +2102,11 @@ func rewriteValueS390X_OpLess64(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2256,14 +2124,11 @@ func rewriteValueS390X_OpLess64F(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2281,14 +2146,11 @@ func rewriteValueS390X_OpLess64U(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPU, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2306,18 +2168,15 @@ func rewriteValueS390X_OpLess8(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2335,18 +2194,15 @@ func rewriteValueS390X_OpLess8U(v *Value) bool {
                v.Aux = s390x.Less
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWU, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2364,8 +2220,7 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2379,8 +2234,7 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVWload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2394,8 +2248,7 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVWZload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2409,8 +2262,7 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVHload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2424,8 +2276,7 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVHZload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2439,8 +2290,7 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVBload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2454,8 +2304,7 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVBZload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2469,8 +2318,7 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpS390XFMOVSload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -2484,8 +2332,7 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpS390XFMOVDload)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -2518,8 +2365,7 @@ func rewriteValueS390X_OpLsh16x16(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh16x16 <t> x y)
@@ -2532,18 +2378,15 @@ func rewriteValueS390X_OpLsh16x16(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2562,8 +2405,7 @@ func rewriteValueS390X_OpLsh16x32(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh16x32 <t> x y)
@@ -2576,16 +2418,13 @@ func rewriteValueS390X_OpLsh16x32(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2604,8 +2443,7 @@ func rewriteValueS390X_OpLsh16x64(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh16x64 <t> x y)
@@ -2618,16 +2456,13 @@ func rewriteValueS390X_OpLsh16x64(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2646,8 +2481,7 @@ func rewriteValueS390X_OpLsh16x8(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh16x8 <t> x y)
@@ -2660,18 +2494,15 @@ func rewriteValueS390X_OpLsh16x8(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2690,8 +2521,7 @@ func rewriteValueS390X_OpLsh32x16(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh32x16 <t> x y)
@@ -2704,18 +2534,15 @@ func rewriteValueS390X_OpLsh32x16(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2734,8 +2561,7 @@ func rewriteValueS390X_OpLsh32x32(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh32x32 <t> x y)
@@ -2748,16 +2574,13 @@ func rewriteValueS390X_OpLsh32x32(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2776,8 +2599,7 @@ func rewriteValueS390X_OpLsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh32x64 <t> x y)
@@ -2790,16 +2612,13 @@ func rewriteValueS390X_OpLsh32x64(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2818,8 +2637,7 @@ func rewriteValueS390X_OpLsh32x8(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh32x8 <t> x y)
@@ -2832,18 +2650,15 @@ func rewriteValueS390X_OpLsh32x8(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2862,8 +2677,7 @@ func rewriteValueS390X_OpLsh64x16(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh64x16 <t> x y)
@@ -2876,18 +2690,15 @@ func rewriteValueS390X_OpLsh64x16(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLD, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2906,8 +2717,7 @@ func rewriteValueS390X_OpLsh64x32(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh64x32 <t> x y)
@@ -2920,16 +2730,13 @@ func rewriteValueS390X_OpLsh64x32(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLD, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2948,8 +2755,7 @@ func rewriteValueS390X_OpLsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh64x64 <t> x y)
@@ -2962,16 +2768,13 @@ func rewriteValueS390X_OpLsh64x64(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLD, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2990,8 +2793,7 @@ func rewriteValueS390X_OpLsh64x8(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh64x8 <t> x y)
@@ -3004,18 +2806,15 @@ func rewriteValueS390X_OpLsh64x8(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLD, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3034,8 +2833,7 @@ func rewriteValueS390X_OpLsh8x16(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh8x16 <t> x y)
@@ -3048,18 +2846,15 @@ func rewriteValueS390X_OpLsh8x16(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3078,8 +2873,7 @@ func rewriteValueS390X_OpLsh8x32(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh8x32 <t> x y)
@@ -3092,16 +2886,13 @@ func rewriteValueS390X_OpLsh8x32(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3120,8 +2911,7 @@ func rewriteValueS390X_OpLsh8x64(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh8x64 <t> x y)
@@ -3134,16 +2924,13 @@ func rewriteValueS390X_OpLsh8x64(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3162,8 +2949,7 @@ func rewriteValueS390X_OpLsh8x8(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh8x8 <t> x y)
@@ -3176,18 +2962,15 @@ func rewriteValueS390X_OpLsh8x8(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSLW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3204,10 +2987,9 @@ func rewriteValueS390X_OpMod16(v *Value) bool {
                v.reset(OpS390XMODW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3224,10 +3006,9 @@ func rewriteValueS390X_OpMod16u(v *Value) bool {
                v.reset(OpS390XMODWU)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3244,8 +3025,7 @@ func rewriteValueS390X_OpMod32(v *Value) bool {
                v.reset(OpS390XMODW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVWreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -3262,8 +3042,7 @@ func rewriteValueS390X_OpMod32u(v *Value) bool {
                v.reset(OpS390XMODWU)
                v0 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -3280,10 +3059,9 @@ func rewriteValueS390X_OpMod8(v *Value) bool {
                v.reset(OpS390XMODW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3300,10 +3078,9 @@ func rewriteValueS390X_OpMod8u(v *Value) bool {
                v.reset(OpS390XMODWU)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3335,12 +3112,9 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpS390XMOVBstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZload, typ.UInt8)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] dst src mem)
@@ -3353,12 +3127,9 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpS390XMOVHstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [4] dst src mem)
@@ -3371,12 +3142,9 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpS390XMOVWstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [8] dst src mem)
@@ -3389,12 +3157,9 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpS390XMOVDstore)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpS390XMOVDload, typ.UInt64)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [16] dst src mem)
@@ -3408,20 +3173,14 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpS390XMOVDstore)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpS390XMOVDload, typ.UInt64)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDload, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [24] dst src mem)
@@ -3435,29 +3194,20 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpS390XMOVDstore)
                v.AuxInt = 16
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpS390XMOVDload, typ.UInt64)
                v0.AuxInt = 16
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDstore, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDload, typ.UInt64)
                v2.AuxInt = 8
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpS390XMOVDstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpS390XMOVDload, typ.UInt64)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [3] dst src mem)
@@ -3471,20 +3221,14 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpS390XMOVBstore)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZload, typ.UInt8)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpS390XMOVHstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [5] dst src mem)
@@ -3498,20 +3242,14 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpS390XMOVBstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZload, typ.UInt8)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpS390XMOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [6] dst src mem)
@@ -3525,20 +3263,14 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpS390XMOVHstore)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpS390XMOVWstore, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [7] dst src mem)
@@ -3552,29 +3284,20 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpS390XMOVBstore)
                v.AuxInt = 6
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZload, typ.UInt8)
                v0.AuxInt = 6
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpS390XMOVHstore, types.TypeMem)
                v1.AuxInt = 4
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
                v2.AuxInt = 4
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
+               v2.AddArg2(src, mem)
                v3 := b.NewValue0(v.Pos, OpS390XMOVWstore, types.TypeMem)
-               v3.AddArg(dst)
                v4 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
-               v4.AddArg(src)
-               v4.AddArg(mem)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v4.AddArg2(src, mem)
+               v3.AddArg3(dst, v4, mem)
+               v1.AddArg3(dst, v2, v3)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -3590,9 +3313,7 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                }
                v.reset(OpS390XMVC)
                v.AuxInt = makeValAndOff(s, 0)
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -3608,14 +3329,10 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                }
                v.reset(OpS390XMVC)
                v.AuxInt = makeValAndOff(s-256, 256)
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpS390XMVC, types.TypeMem)
                v0.AuxInt = makeValAndOff(256, 0)
-               v0.AddArg(dst)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg3(dst, src, mem)
+               v.AddArg3(dst, src, v0)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -3631,19 +3348,13 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                }
                v.reset(OpS390XMVC)
                v.AuxInt = makeValAndOff(s-512, 512)
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpS390XMVC, types.TypeMem)
                v0.AuxInt = makeValAndOff(256, 256)
-               v0.AddArg(dst)
-               v0.AddArg(src)
                v1 := b.NewValue0(v.Pos, OpS390XMVC, types.TypeMem)
                v1.AuxInt = makeValAndOff(256, 0)
-               v1.AddArg(dst)
-               v1.AddArg(src)
-               v1.AddArg(mem)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg3(dst, src, mem)
+               v0.AddArg3(dst, src, v1)
+               v.AddArg3(dst, src, v0)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -3659,24 +3370,16 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                }
                v.reset(OpS390XMVC)
                v.AuxInt = makeValAndOff(s-768, 768)
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpS390XMVC, types.TypeMem)
                v0.AuxInt = makeValAndOff(256, 512)
-               v0.AddArg(dst)
-               v0.AddArg(src)
                v1 := b.NewValue0(v.Pos, OpS390XMVC, types.TypeMem)
                v1.AuxInt = makeValAndOff(256, 256)
-               v1.AddArg(dst)
-               v1.AddArg(src)
                v2 := b.NewValue0(v.Pos, OpS390XMVC, types.TypeMem)
                v2.AuxInt = makeValAndOff(256, 0)
-               v2.AddArg(dst)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v2.AddArg3(dst, src, mem)
+               v1.AddArg3(dst, src, v2)
+               v0.AddArg3(dst, src, v1)
+               v.AddArg3(dst, src, v0)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -3692,15 +3395,11 @@ func rewriteValueS390X_OpMove(v *Value) bool {
                }
                v.reset(OpS390XLoweredMove)
                v.AuxInt = s % 256
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpS390XADD, src.Type)
-               v0.AddArg(src)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = (s / 256) * 256
-               v0.AddArg(v1)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, v1)
+               v.AddArg4(dst, src, v0, mem)
                return true
        }
        return false
@@ -3719,18 +3418,15 @@ func rewriteValueS390X_OpNeq16(v *Value) bool {
                v.Aux = s390x.NotEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3748,14 +3444,11 @@ func rewriteValueS390X_OpNeq32(v *Value) bool {
                v.Aux = s390x.NotEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3773,14 +3466,11 @@ func rewriteValueS390X_OpNeq32F(v *Value) bool {
                v.Aux = s390x.NotEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMPS, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3798,14 +3488,11 @@ func rewriteValueS390X_OpNeq64(v *Value) bool {
                v.Aux = s390x.NotEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3823,14 +3510,11 @@ func rewriteValueS390X_OpNeq64F(v *Value) bool {
                v.Aux = s390x.NotEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XFCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3848,18 +3532,15 @@ func rewriteValueS390X_OpNeq8(v *Value) bool {
                v.Aux = s390x.NotEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3877,18 +3558,15 @@ func rewriteValueS390X_OpNeqB(v *Value) bool {
                v.Aux = s390x.NotEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
                v3 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v4.AddArg(y)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3906,14 +3584,11 @@ func rewriteValueS390X_OpNeqPtr(v *Value) bool {
                v.Aux = s390x.NotEqual
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 1
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMP, types.TypeFlags)
-               v2.AddArg(x)
-               v2.AddArg(y)
-               v.AddArg(v2)
+               v2.AddArg2(x, y)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -3968,8 +3643,7 @@ func rewriteValueS390X_OpOffPtr(v *Value) bool {
                v.reset(OpS390XADD)
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = off
-               v.AddArg(v0)
-               v.AddArg(ptr)
+               v.AddArg2(v0, ptr)
                return true
        }
 }
@@ -3990,9 +3664,7 @@ func rewriteValueS390X_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpS390XLoweredPanicBoundsA)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -4008,9 +3680,7 @@ func rewriteValueS390X_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpS390XLoweredPanicBoundsB)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        // match: (PanicBounds [kind] x y mem)
@@ -4026,9 +3696,7 @@ func rewriteValueS390X_OpPanicBounds(v *Value) bool {
                }
                v.reset(OpS390XLoweredPanicBoundsC)
                v.AuxInt = kind
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(mem)
+               v.AddArg3(x, y, mem)
                return true
        }
        return false
@@ -4115,17 +3783,14 @@ func rewriteValueS390X_OpRotateLeft16(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr16)
                v0 := b.NewValue0(v.Pos, OpLsh16x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = c & 15
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh16Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v3.AuxInt = -c & 15
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -4146,17 +3811,14 @@ func rewriteValueS390X_OpRotateLeft8(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr8)
                v0 := b.NewValue0(v.Pos, OpLsh8x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = c & 7
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh8Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v3.AuxInt = -c & 7
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -4202,8 +3864,7 @@ func rewriteValueS390X_OpRsh16Ux16(v *Value) bool {
                v.reset(OpS390XSRW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16Ux16 <t> x y)
@@ -4218,18 +3879,15 @@ func rewriteValueS390X_OpRsh16Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
                v1 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -4250,8 +3908,7 @@ func rewriteValueS390X_OpRsh16Ux32(v *Value) bool {
                v.reset(OpS390XSRW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16Ux32 <t> x y)
@@ -4266,16 +3923,13 @@ func rewriteValueS390X_OpRsh16Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
                v1 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -4296,8 +3950,7 @@ func rewriteValueS390X_OpRsh16Ux64(v *Value) bool {
                v.reset(OpS390XSRW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16Ux64 <t> x y)
@@ -4312,16 +3965,13 @@ func rewriteValueS390X_OpRsh16Ux64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
                v1 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -4342,8 +3992,7 @@ func rewriteValueS390X_OpRsh16Ux8(v *Value) bool {
                v.reset(OpS390XSRW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16Ux8 <t> x y)
@@ -4358,18 +4007,15 @@ func rewriteValueS390X_OpRsh16Ux8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
                v1 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -4390,8 +4036,7 @@ func rewriteValueS390X_OpRsh16x16(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16x16 x y)
@@ -4402,20 +4047,17 @@ func rewriteValueS390X_OpRsh16x16(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v1.Aux = s390x.GreaterOrEqual
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -4436,8 +4078,7 @@ func rewriteValueS390X_OpRsh16x32(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16x32 x y)
@@ -4448,18 +4089,15 @@ func rewriteValueS390X_OpRsh16x32(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v1.Aux = s390x.GreaterOrEqual
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -4480,8 +4118,7 @@ func rewriteValueS390X_OpRsh16x64(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16x64 x y)
@@ -4492,18 +4129,15 @@ func rewriteValueS390X_OpRsh16x64(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v1.Aux = s390x.GreaterOrEqual
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -4524,8 +4158,7 @@ func rewriteValueS390X_OpRsh16x8(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh16x8 x y)
@@ -4536,20 +4169,17 @@ func rewriteValueS390X_OpRsh16x8(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v1.Aux = s390x.GreaterOrEqual
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -4568,8 +4198,7 @@ func rewriteValueS390X_OpRsh32Ux16(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32Ux16 <t> x y)
@@ -4582,18 +4211,15 @@ func rewriteValueS390X_OpRsh32Ux16(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -4612,8 +4238,7 @@ func rewriteValueS390X_OpRsh32Ux32(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32Ux32 <t> x y)
@@ -4626,16 +4251,13 @@ func rewriteValueS390X_OpRsh32Ux32(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -4654,8 +4276,7 @@ func rewriteValueS390X_OpRsh32Ux64(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32Ux64 <t> x y)
@@ -4668,16 +4289,13 @@ func rewriteValueS390X_OpRsh32Ux64(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -4696,8 +4314,7 @@ func rewriteValueS390X_OpRsh32Ux8(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32Ux8 <t> x y)
@@ -4710,18 +4327,15 @@ func rewriteValueS390X_OpRsh32Ux8(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -4740,8 +4354,7 @@ func rewriteValueS390X_OpRsh32x16(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32x16 x y)
@@ -4750,20 +4363,17 @@ func rewriteValueS390X_OpRsh32x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v0.Aux = s390x.GreaterOrEqual
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v1.AuxInt = 63
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -4781,8 +4391,7 @@ func rewriteValueS390X_OpRsh32x32(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32x32 x y)
@@ -4791,18 +4400,15 @@ func rewriteValueS390X_OpRsh32x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v0.Aux = s390x.GreaterOrEqual
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v1.AuxInt = 63
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -4820,8 +4426,7 @@ func rewriteValueS390X_OpRsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32x64 x y)
@@ -4830,18 +4435,15 @@ func rewriteValueS390X_OpRsh32x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v0.Aux = s390x.GreaterOrEqual
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v1.AuxInt = 63
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -4860,8 +4462,7 @@ func rewriteValueS390X_OpRsh32x8(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh32x8 x y)
@@ -4870,20 +4471,17 @@ func rewriteValueS390X_OpRsh32x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v0.Aux = s390x.GreaterOrEqual
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v1.AuxInt = 63
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -4902,8 +4500,7 @@ func rewriteValueS390X_OpRsh64Ux16(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64Ux16 <t> x y)
@@ -4916,18 +4513,15 @@ func rewriteValueS390X_OpRsh64Ux16(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSRD, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -4946,8 +4540,7 @@ func rewriteValueS390X_OpRsh64Ux32(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64Ux32 <t> x y)
@@ -4960,16 +4553,13 @@ func rewriteValueS390X_OpRsh64Ux32(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSRD, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -4988,8 +4578,7 @@ func rewriteValueS390X_OpRsh64Ux64(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64Ux64 <t> x y)
@@ -5002,16 +4591,13 @@ func rewriteValueS390X_OpRsh64Ux64(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSRD, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -5030,8 +4616,7 @@ func rewriteValueS390X_OpRsh64Ux8(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64Ux8 <t> x y)
@@ -5044,18 +4629,15 @@ func rewriteValueS390X_OpRsh64Ux8(v *Value) bool {
                v.Type = t
                v.Aux = s390x.GreaterOrEqual
                v0 := b.NewValue0(v.Pos, OpS390XSRD, t)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -5074,8 +4656,7 @@ func rewriteValueS390X_OpRsh64x16(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64x16 x y)
@@ -5084,20 +4665,17 @@ func rewriteValueS390X_OpRsh64x16(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v0.Aux = s390x.GreaterOrEqual
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v1.AuxInt = 63
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -5115,8 +4693,7 @@ func rewriteValueS390X_OpRsh64x32(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64x32 x y)
@@ -5125,18 +4702,15 @@ func rewriteValueS390X_OpRsh64x32(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v0.Aux = s390x.GreaterOrEqual
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v1.AuxInt = 63
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -5154,8 +4728,7 @@ func rewriteValueS390X_OpRsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64x64 x y)
@@ -5164,18 +4737,15 @@ func rewriteValueS390X_OpRsh64x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v0.Aux = s390x.GreaterOrEqual
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v1.AuxInt = 63
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v2.AuxInt = 64
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -5194,8 +4764,7 @@ func rewriteValueS390X_OpRsh64x8(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64x8 x y)
@@ -5204,20 +4773,17 @@ func rewriteValueS390X_OpRsh64x8(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v0.Aux = s390x.GreaterOrEqual
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v1.AuxInt = 63
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v2.AuxInt = 64
                v3 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v3.AddArg(y)
                v2.AddArg(v3)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -5238,8 +4804,7 @@ func rewriteValueS390X_OpRsh8Ux16(v *Value) bool {
                v.reset(OpS390XSRW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8Ux16 <t> x y)
@@ -5254,18 +4819,15 @@ func rewriteValueS390X_OpRsh8Ux16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
                v1 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -5286,8 +4848,7 @@ func rewriteValueS390X_OpRsh8Ux32(v *Value) bool {
                v.reset(OpS390XSRW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8Ux32 <t> x y)
@@ -5302,16 +4863,13 @@ func rewriteValueS390X_OpRsh8Ux32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
                v1 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -5332,8 +4890,7 @@ func rewriteValueS390X_OpRsh8Ux64(v *Value) bool {
                v.reset(OpS390XSRW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8Ux64 <t> x y)
@@ -5348,16 +4905,13 @@ func rewriteValueS390X_OpRsh8Ux64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
                v1 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -5378,8 +4932,7 @@ func rewriteValueS390X_OpRsh8Ux8(v *Value) bool {
                v.reset(OpS390XSRW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8Ux8 <t> x y)
@@ -5394,18 +4947,15 @@ func rewriteValueS390X_OpRsh8Ux8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSRW, t)
                v1 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(v1, y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v.AddArg(v3)
+               v.AddArg3(v0, v2, v3)
                return true
        }
 }
@@ -5426,8 +4976,7 @@ func rewriteValueS390X_OpRsh8x16(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8x16 x y)
@@ -5438,20 +4987,17 @@ func rewriteValueS390X_OpRsh8x16(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v1.Aux = s390x.GreaterOrEqual
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -5472,8 +5018,7 @@ func rewriteValueS390X_OpRsh8x32(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8x32 x y)
@@ -5484,18 +5029,15 @@ func rewriteValueS390X_OpRsh8x32(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v1.Aux = s390x.GreaterOrEqual
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -5516,8 +5058,7 @@ func rewriteValueS390X_OpRsh8x64(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8x64 x y)
@@ -5528,18 +5069,15 @@ func rewriteValueS390X_OpRsh8x64(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v1.Aux = s390x.GreaterOrEqual
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPUconst, types.TypeFlags)
                v3.AuxInt = 64
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -5560,8 +5098,7 @@ func rewriteValueS390X_OpRsh8x8(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
        // match: (Rsh8x8 x y)
@@ -5572,20 +5109,17 @@ func rewriteValueS390X_OpRsh8x8(v *Value) bool {
                v.reset(OpS390XSRAW)
                v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpS390XLOCGR, y.Type)
                v1.Aux = s390x.GreaterOrEqual
-               v1.AddArg(y)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, y.Type)
                v2.AuxInt = 63
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XCMPWUconst, types.TypeFlags)
                v3.AuxInt = 64
                v4 := b.NewValue0(v.Pos, OpS390XMOVBZreg, typ.UInt64)
                v4.AddArg(y)
                v3.AddArg(v4)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v1.AddArg3(y, v2, v3)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -5654,8 +5188,7 @@ func rewriteValueS390X_OpS390XADD(v *Value) bool {
                        v.reset(OpS390XMOVDaddridx)
                        v.AuxInt = c
                        v.Aux = s
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
+                       v.AddArg2(ptr, idx)
                        return true
                }
                break
@@ -5670,8 +5203,7 @@ func rewriteValueS390X_OpS390XADD(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpS390XSUB)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -5698,9 +5230,7 @@ func rewriteValueS390X_OpS390XADD(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -5745,8 +5275,7 @@ func rewriteValueS390X_OpS390XADDE(v *Value) bool {
                        break
                }
                v.reset(OpS390XADDC)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDE x y (FlagLT))
@@ -5758,8 +5287,7 @@ func rewriteValueS390X_OpS390XADDE(v *Value) bool {
                        break
                }
                v.reset(OpS390XADDC)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDE x y (Select1 (ADDCconst [-1] (Select0 (ADDE (MOVDconst [0]) (MOVDconst [0]) c)))))
@@ -5792,9 +5320,7 @@ func rewriteValueS390X_OpS390XADDE(v *Value) bool {
                        break
                }
                v.reset(OpS390XADDE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(c)
+               v.AddArg3(x, y, c)
                return true
        }
        return false
@@ -5852,8 +5378,7 @@ func rewriteValueS390X_OpS390XADDW(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpS390XSUBW)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -5880,9 +5405,7 @@ func rewriteValueS390X_OpS390XADDW(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -5909,9 +5432,7 @@ func rewriteValueS390X_OpS390XADDW(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -5985,9 +5506,7 @@ func rewriteValueS390X_OpS390XADDWload(v *Value) bool {
                v.reset(OpS390XADDWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (ADDWload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -6010,9 +5529,7 @@ func rewriteValueS390X_OpS390XADDWload(v *Value) bool {
                v.reset(OpS390XADDWload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -6077,8 +5594,7 @@ func rewriteValueS390X_OpS390XADDconst(v *Value) bool {
                v.reset(OpS390XMOVDaddridx)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (ADDconst [0] x)
@@ -6149,10 +5665,9 @@ func rewriteValueS390X_OpS390XADDload(v *Value) bool {
                        break
                }
                v.reset(OpS390XADD)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (ADDload [off1] {sym} x (ADDconst [off2] ptr) mem)
@@ -6174,9 +5689,7 @@ func rewriteValueS390X_OpS390XADDload(v *Value) bool {
                v.reset(OpS390XADDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (ADDload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -6199,9 +5712,7 @@ func rewriteValueS390X_OpS390XADDload(v *Value) bool {
                v.reset(OpS390XADDload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -6365,9 +5876,7 @@ func rewriteValueS390X_OpS390XAND(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -6427,9 +5936,7 @@ func rewriteValueS390X_OpS390XANDW(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -6456,9 +5963,7 @@ func rewriteValueS390X_OpS390XANDW(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -6566,9 +6071,7 @@ func rewriteValueS390X_OpS390XANDWload(v *Value) bool {
                v.reset(OpS390XANDWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (ANDWload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -6591,9 +6094,7 @@ func rewriteValueS390X_OpS390XANDWload(v *Value) bool {
                v.reset(OpS390XANDWload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -6674,10 +6175,9 @@ func rewriteValueS390X_OpS390XANDload(v *Value) bool {
                        break
                }
                v.reset(OpS390XAND)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (ANDload [off1] {sym} x (ADDconst [off2] ptr) mem)
@@ -6699,9 +6199,7 @@ func rewriteValueS390X_OpS390XANDload(v *Value) bool {
                v.reset(OpS390XANDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (ANDload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -6724,9 +6222,7 @@ func rewriteValueS390X_OpS390XANDload(v *Value) bool {
                v.reset(OpS390XANDload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -6782,8 +6278,7 @@ func rewriteValueS390X_OpS390XCMP(v *Value) bool {
                }
                v.reset(OpS390XInvertFlags)
                v0 := b.NewValue0(v.Pos, OpS390XCMP, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -6840,8 +6335,7 @@ func rewriteValueS390X_OpS390XCMPU(v *Value) bool {
                }
                v.reset(OpS390XInvertFlags)
                v0 := b.NewValue0(v.Pos, OpS390XCMPU, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -7061,8 +6555,7 @@ func rewriteValueS390X_OpS390XCMPW(v *Value) bool {
                }
                v.reset(OpS390XInvertFlags)
                v0 := b.NewValue0(v.Pos, OpS390XCMPW, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -7075,8 +6568,7 @@ func rewriteValueS390X_OpS390XCMPW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XCMPW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPW x (MOVWZreg y))
@@ -7088,8 +6580,7 @@ func rewriteValueS390X_OpS390XCMPW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XCMPW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPW (MOVWreg x) y)
@@ -7101,8 +6592,7 @@ func rewriteValueS390X_OpS390XCMPW(v *Value) bool {
                x := v_0.Args[0]
                y := v_1
                v.reset(OpS390XCMPW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPW (MOVWZreg x) y)
@@ -7114,8 +6604,7 @@ func rewriteValueS390X_OpS390XCMPW(v *Value) bool {
                x := v_0.Args[0]
                y := v_1
                v.reset(OpS390XCMPW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -7163,8 +6652,7 @@ func rewriteValueS390X_OpS390XCMPWU(v *Value) bool {
                }
                v.reset(OpS390XInvertFlags)
                v0 := b.NewValue0(v.Pos, OpS390XCMPWU, types.TypeFlags)
-               v0.AddArg(y)
-               v0.AddArg(x)
+               v0.AddArg2(y, x)
                v.AddArg(v0)
                return true
        }
@@ -7177,8 +6665,7 @@ func rewriteValueS390X_OpS390XCMPWU(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XCMPWU)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPWU x (MOVWZreg y))
@@ -7190,8 +6677,7 @@ func rewriteValueS390X_OpS390XCMPWU(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XCMPWU)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPWU (MOVWreg x) y)
@@ -7203,8 +6689,7 @@ func rewriteValueS390X_OpS390XCMPWU(v *Value) bool {
                x := v_0.Args[0]
                y := v_1
                v.reset(OpS390XCMPWU)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (CMPWU (MOVWZreg x) y)
@@ -7216,8 +6701,7 @@ func rewriteValueS390X_OpS390XCMPWU(v *Value) bool {
                x := v_0.Args[0]
                y := v_1
                v.reset(OpS390XCMPWU)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -7734,9 +7218,7 @@ func rewriteValueS390X_OpS390XFADD(v *Value) bool {
                        y := v_0.Args[0]
                        x := v_1
                        v.reset(OpS390XFMADD)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -7757,9 +7239,7 @@ func rewriteValueS390X_OpS390XFADDS(v *Value) bool {
                        y := v_0.Args[0]
                        x := v_1
                        v.reset(OpS390XFMADDS)
-                       v.AddArg(x)
-                       v.AddArg(y)
-                       v.AddArg(z)
+                       v.AddArg3(x, y, z)
                        return true
                }
                break
@@ -7828,8 +7308,7 @@ func rewriteValueS390X_OpS390XFMOVDload(v *Value) bool {
                v.reset(OpS390XFMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (FMOVDload [off1] {sym1} (MOVDaddr [off2] {sym2} base) mem)
@@ -7851,8 +7330,7 @@ func rewriteValueS390X_OpS390XFMOVDload(v *Value) bool {
                v.reset(OpS390XFMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (FMOVDload [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) mem)
@@ -7875,9 +7353,7 @@ func rewriteValueS390X_OpS390XFMOVDload(v *Value) bool {
                v.reset(OpS390XFMOVDloadidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (FMOVDload [off] {sym} (ADD ptr idx) mem)
@@ -7902,9 +7378,7 @@ func rewriteValueS390X_OpS390XFMOVDload(v *Value) bool {
                        v.reset(OpS390XFMOVDloadidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -7934,9 +7408,7 @@ func rewriteValueS390X_OpS390XFMOVDloadidx(v *Value) bool {
                v.reset(OpS390XFMOVDloadidx)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (FMOVDloadidx [c] {sym} ptr (ADDconst [d] idx) mem)
@@ -7958,9 +7430,7 @@ func rewriteValueS390X_OpS390XFMOVDloadidx(v *Value) bool {
                v.reset(OpS390XFMOVDloadidx)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -7988,9 +7458,7 @@ func rewriteValueS390X_OpS390XFMOVDstore(v *Value) bool {
                v.reset(OpS390XFMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (FMOVDstore [off1] {sym1} (MOVDaddr [off2] {sym2} base) val mem)
@@ -8013,9 +7481,7 @@ func rewriteValueS390X_OpS390XFMOVDstore(v *Value) bool {
                v.reset(OpS390XFMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (FMOVDstore [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) val mem)
@@ -8039,10 +7505,7 @@ func rewriteValueS390X_OpS390XFMOVDstore(v *Value) bool {
                v.reset(OpS390XFMOVDstoreidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (FMOVDstore [off] {sym} (ADD ptr idx) val mem)
@@ -8068,10 +7531,7 @@ func rewriteValueS390X_OpS390XFMOVDstore(v *Value) bool {
                        v.reset(OpS390XFMOVDstoreidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -8103,10 +7563,7 @@ func rewriteValueS390X_OpS390XFMOVDstoreidx(v *Value) bool {
                v.reset(OpS390XFMOVDstoreidx)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (FMOVDstoreidx [c] {sym} ptr (ADDconst [d] idx) val mem)
@@ -8129,10 +7586,7 @@ func rewriteValueS390X_OpS390XFMOVDstoreidx(v *Value) bool {
                v.reset(OpS390XFMOVDstoreidx)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -8179,8 +7633,7 @@ func rewriteValueS390X_OpS390XFMOVSload(v *Value) bool {
                v.reset(OpS390XFMOVSload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (FMOVSload [off1] {sym1} (MOVDaddr [off2] {sym2} base) mem)
@@ -8202,8 +7655,7 @@ func rewriteValueS390X_OpS390XFMOVSload(v *Value) bool {
                v.reset(OpS390XFMOVSload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (FMOVSload [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) mem)
@@ -8226,9 +7678,7 @@ func rewriteValueS390X_OpS390XFMOVSload(v *Value) bool {
                v.reset(OpS390XFMOVSloadidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (FMOVSload [off] {sym} (ADD ptr idx) mem)
@@ -8253,9 +7703,7 @@ func rewriteValueS390X_OpS390XFMOVSload(v *Value) bool {
                        v.reset(OpS390XFMOVSloadidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -8285,9 +7733,7 @@ func rewriteValueS390X_OpS390XFMOVSloadidx(v *Value) bool {
                v.reset(OpS390XFMOVSloadidx)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (FMOVSloadidx [c] {sym} ptr (ADDconst [d] idx) mem)
@@ -8309,9 +7755,7 @@ func rewriteValueS390X_OpS390XFMOVSloadidx(v *Value) bool {
                v.reset(OpS390XFMOVSloadidx)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        return false
@@ -8339,9 +7783,7 @@ func rewriteValueS390X_OpS390XFMOVSstore(v *Value) bool {
                v.reset(OpS390XFMOVSstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (FMOVSstore [off1] {sym1} (MOVDaddr [off2] {sym2} base) val mem)
@@ -8364,9 +7806,7 @@ func rewriteValueS390X_OpS390XFMOVSstore(v *Value) bool {
                v.reset(OpS390XFMOVSstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (FMOVSstore [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) val mem)
@@ -8390,10 +7830,7 @@ func rewriteValueS390X_OpS390XFMOVSstore(v *Value) bool {
                v.reset(OpS390XFMOVSstoreidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (FMOVSstore [off] {sym} (ADD ptr idx) val mem)
@@ -8419,10 +7856,7 @@ func rewriteValueS390X_OpS390XFMOVSstore(v *Value) bool {
                        v.reset(OpS390XFMOVSstoreidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -8454,10 +7888,7 @@ func rewriteValueS390X_OpS390XFMOVSstoreidx(v *Value) bool {
                v.reset(OpS390XFMOVSstoreidx)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (FMOVSstoreidx [c] {sym} ptr (ADDconst [d] idx) val mem)
@@ -8480,10 +7911,7 @@ func rewriteValueS390X_OpS390XFMOVSstoreidx(v *Value) bool {
                v.reset(OpS390XFMOVSstoreidx)
                v.AuxInt = c + d
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        return false
@@ -8553,9 +7981,7 @@ func rewriteValueS390X_OpS390XFSUB(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpS390XFMSUB)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        return false
@@ -8573,9 +7999,7 @@ func rewriteValueS390X_OpS390XFSUBS(v *Value) bool {
                y := v_0.Args[0]
                x := v_1
                v.reset(OpS390XFMSUBS)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(z)
+               v.AddArg3(x, y, z)
                return true
        }
        return false
@@ -8676,8 +8100,7 @@ func rewriteValueS390X_OpS390XLDGR(v *Value) bool {
                v2 := b.NewValue0(x.Pos, OpS390XMOVDload, t1)
                v2.AuxInt = off
                v2.Aux = sym
-               v2.AddArg(ptr)
-               v2.AddArg(mem)
+               v2.AddArg2(ptr, mem)
                v1.AddArg(v2)
                v0.AddArg(v1)
                return true
@@ -8762,9 +8185,7 @@ func rewriteValueS390X_OpS390XLOCGR(v *Value) bool {
                cmp := v_2.Args[0]
                v.reset(OpS390XLOCGR)
                v.Aux = c.(s390x.CCMask).ReverseComparison()
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(cmp)
+               v.AddArg3(x, y, cmp)
                return true
        }
        // match: (LOCGR {c} _ x (FlagEQ))
@@ -8954,8 +8375,7 @@ func rewriteValueS390X_OpS390XMOVBZload(v *Value) bool {
                v.reset(OpS390XMOVBZload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBZload [off1] {sym1} (MOVDaddr [off2] {sym2} base) mem)
@@ -8977,8 +8397,7 @@ func rewriteValueS390X_OpS390XMOVBZload(v *Value) bool {
                v.reset(OpS390XMOVBZload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVBZload [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) mem)
@@ -9001,9 +8420,7 @@ func rewriteValueS390X_OpS390XMOVBZload(v *Value) bool {
                v.reset(OpS390XMOVBZloadidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBZload [off] {sym} (ADD ptr idx) mem)
@@ -9028,9 +8445,7 @@ func rewriteValueS390X_OpS390XMOVBZload(v *Value) bool {
                        v.reset(OpS390XMOVBZloadidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -9061,9 +8476,7 @@ func rewriteValueS390X_OpS390XMOVBZloadidx(v *Value) bool {
                        v.reset(OpS390XMOVBZloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -9088,9 +8501,7 @@ func rewriteValueS390X_OpS390XMOVBZloadidx(v *Value) bool {
                        v.reset(OpS390XMOVBZloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -9253,8 +8664,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(mem)
+               v0.AddArg2(p, mem)
                return true
        }
        // match: (MOVBZreg <t> x:(MOVBloadidx [o] {s} p i mem))
@@ -9280,9 +8690,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(i)
-               v0.AddArg(mem)
+               v0.AddArg3(p, i, mem)
                return true
        }
        // match: (MOVBZreg x:(Arg <t>))
@@ -9398,8 +8806,7 @@ func rewriteValueS390X_OpS390XMOVBload(v *Value) bool {
                v.reset(OpS390XMOVBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBload [off1] {sym1} (MOVDaddr [off2] {sym2} base) mem)
@@ -9421,8 +8828,7 @@ func rewriteValueS390X_OpS390XMOVBload(v *Value) bool {
                v.reset(OpS390XMOVBload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVBload [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) mem)
@@ -9445,9 +8851,7 @@ func rewriteValueS390X_OpS390XMOVBload(v *Value) bool {
                v.reset(OpS390XMOVBloadidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVBload [off] {sym} (ADD ptr idx) mem)
@@ -9472,9 +8876,7 @@ func rewriteValueS390X_OpS390XMOVBload(v *Value) bool {
                        v.reset(OpS390XMOVBloadidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -9505,9 +8907,7 @@ func rewriteValueS390X_OpS390XMOVBloadidx(v *Value) bool {
                        v.reset(OpS390XMOVBloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -9532,9 +8932,7 @@ func rewriteValueS390X_OpS390XMOVBloadidx(v *Value) bool {
                        v.reset(OpS390XMOVBloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -9697,8 +9095,7 @@ func rewriteValueS390X_OpS390XMOVBreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(mem)
+               v0.AddArg2(p, mem)
                return true
        }
        // match: (MOVBreg <t> x:(MOVBZloadidx [o] {s} p i mem))
@@ -9724,9 +9121,7 @@ func rewriteValueS390X_OpS390XMOVBreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(i)
-               v0.AddArg(mem)
+               v0.AddArg3(p, i, mem)
                return true
        }
        // match: (MOVBreg x:(Arg <t>))
@@ -9796,9 +9191,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVBZreg x) mem)
@@ -9815,9 +9208,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVBstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym} (ADDconst [off2] ptr) val mem)
@@ -9839,9 +9230,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} ptr (MOVDconst [c]) mem)
@@ -9862,8 +9251,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVBstoreconst)
                v.AuxInt = makeValAndOff(int64(int8(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (MOVDaddr [off2] {sym2} base) val mem)
@@ -9886,9 +9274,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVBstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVBstore [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) val mem)
@@ -9912,10 +9298,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVBstoreidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVBstore [off] {sym} (ADD ptr idx) val mem)
@@ -9941,10 +9324,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                        v.reset(OpS390XMOVBstoreidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -9972,9 +9352,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p w0:(SRDconst [j] w) x:(MOVBstore [i-1] {s} p (SRDconst [j+8] w) mem))
@@ -10005,9 +9383,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p w x:(MOVBstore [i-1] {s} p (SRWconst [8] w) mem))
@@ -10033,9 +9409,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p w0:(SRWconst [j] w) x:(MOVBstore [i-1] {s} p (SRWconst [j+8] w) mem))
@@ -10066,9 +9440,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVHstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SRDconst [8] w) x:(MOVBstore [i-1] {s} p w mem))
@@ -10093,9 +9465,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVHBRstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SRDconst [j] w) x:(MOVBstore [i-1] {s} p w0:(SRDconst [j-8] w) mem))
@@ -10125,9 +9495,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVHBRstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SRWconst [8] w) x:(MOVBstore [i-1] {s} p w mem))
@@ -10152,9 +9520,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVHBRstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVBstore [i] {s} p (SRWconst [j] w) x:(MOVBstore [i-1] {s} p w0:(SRWconst [j-8] w) mem))
@@ -10184,9 +9550,7 @@ func rewriteValueS390X_OpS390XMOVBstore(v *Value) bool {
                v.reset(OpS390XMOVHBRstore)
                v.AuxInt = i - 1
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        return false
@@ -10212,8 +9576,7 @@ func rewriteValueS390X_OpS390XMOVBstoreconst(v *Value) bool {
                v.reset(OpS390XMOVBstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstoreconst [sc] {sym1} (MOVDaddr [off] {sym2} ptr) mem)
@@ -10235,8 +9598,7 @@ func rewriteValueS390X_OpS390XMOVBstoreconst(v *Value) bool {
                v.reset(OpS390XMOVBstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVBstoreconst [c] {s} p x:(MOVBstoreconst [a] {s} p mem))
@@ -10261,8 +9623,7 @@ func rewriteValueS390X_OpS390XMOVBstoreconst(v *Value) bool {
                v.reset(OpS390XMOVHstoreconst)
                v.AuxInt = makeValAndOff(ValAndOff(c).Val()&0xff|ValAndOff(a).Val()<<8, ValAndOff(a).Off())
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(mem)
+               v.AddArg2(p, mem)
                return true
        }
        return false
@@ -10293,10 +9654,7 @@ func rewriteValueS390X_OpS390XMOVBstoreidx(v *Value) bool {
                        v.reset(OpS390XMOVBstoreidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -10322,10 +9680,7 @@ func rewriteValueS390X_OpS390XMOVBstoreidx(v *Value) bool {
                        v.reset(OpS390XMOVBstoreidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -10358,10 +9713,7 @@ func rewriteValueS390X_OpS390XMOVBstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVHstoreidx)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -10400,10 +9752,7 @@ func rewriteValueS390X_OpS390XMOVBstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVHstoreidx)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -10437,10 +9786,7 @@ func rewriteValueS390X_OpS390XMOVBstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVHstoreidx)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -10479,10 +9825,7 @@ func rewriteValueS390X_OpS390XMOVBstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVHstoreidx)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -10515,10 +9858,7 @@ func rewriteValueS390X_OpS390XMOVBstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVHBRstoreidx)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -10556,10 +9896,7 @@ func rewriteValueS390X_OpS390XMOVBstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVHBRstoreidx)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -10592,10 +9929,7 @@ func rewriteValueS390X_OpS390XMOVBstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVHBRstoreidx)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -10633,10 +9967,7 @@ func rewriteValueS390X_OpS390XMOVBstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVHBRstoreidx)
                                v.AuxInt = i - 1
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -10665,8 +9996,7 @@ func rewriteValueS390X_OpS390XMOVDaddridx(v *Value) bool {
                v.reset(OpS390XMOVDaddridx)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (MOVDaddridx [c] {s} x (ADDconst [d] y))
@@ -10687,8 +10017,7 @@ func rewriteValueS390X_OpS390XMOVDaddridx(v *Value) bool {
                v.reset(OpS390XMOVDaddridx)
                v.AuxInt = c + d
                v.Aux = s
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (MOVDaddridx [off1] {sym1} (MOVDaddr [off2] {sym2} x) y)
@@ -10710,8 +10039,7 @@ func rewriteValueS390X_OpS390XMOVDaddridx(v *Value) bool {
                v.reset(OpS390XMOVDaddridx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (MOVDaddridx [off1] {sym1} x (MOVDaddr [off2] {sym2} y))
@@ -10733,8 +10061,7 @@ func rewriteValueS390X_OpS390XMOVDaddridx(v *Value) bool {
                v.reset(OpS390XMOVDaddridx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -10801,8 +10128,7 @@ func rewriteValueS390X_OpS390XMOVDload(v *Value) bool {
                v.reset(OpS390XMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDload [off1] {sym1} (MOVDaddr <t> [off2] {sym2} base) mem)
@@ -10825,8 +10151,7 @@ func rewriteValueS390X_OpS390XMOVDload(v *Value) bool {
                v.reset(OpS390XMOVDload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVDload [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) mem)
@@ -10849,9 +10174,7 @@ func rewriteValueS390X_OpS390XMOVDload(v *Value) bool {
                v.reset(OpS390XMOVDloadidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVDload [off] {sym} (ADD ptr idx) mem)
@@ -10876,9 +10199,7 @@ func rewriteValueS390X_OpS390XMOVDload(v *Value) bool {
                        v.reset(OpS390XMOVDloadidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -10909,9 +10230,7 @@ func rewriteValueS390X_OpS390XMOVDloadidx(v *Value) bool {
                        v.reset(OpS390XMOVDloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -10936,9 +10255,7 @@ func rewriteValueS390X_OpS390XMOVDloadidx(v *Value) bool {
                        v.reset(OpS390XMOVDloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -10968,9 +10285,7 @@ func rewriteValueS390X_OpS390XMOVDstore(v *Value) bool {
                v.reset(OpS390XMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVDstore [off] {sym} ptr (MOVDconst [c]) mem)
@@ -10991,8 +10306,7 @@ func rewriteValueS390X_OpS390XMOVDstore(v *Value) bool {
                v.reset(OpS390XMOVDstoreconst)
                v.AuxInt = makeValAndOff(c, off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym1} (MOVDaddr <t> [off2] {sym2} base) val mem)
@@ -11016,9 +10330,7 @@ func rewriteValueS390X_OpS390XMOVDstore(v *Value) bool {
                v.reset(OpS390XMOVDstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVDstore [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) val mem)
@@ -11042,10 +10354,7 @@ func rewriteValueS390X_OpS390XMOVDstore(v *Value) bool {
                v.reset(OpS390XMOVDstoreidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVDstore [off] {sym} (ADD ptr idx) val mem)
@@ -11071,10 +10380,7 @@ func rewriteValueS390X_OpS390XMOVDstore(v *Value) bool {
                        v.reset(OpS390XMOVDstoreidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -11102,10 +10408,7 @@ func rewriteValueS390X_OpS390XMOVDstore(v *Value) bool {
                v.reset(OpS390XSTMG2)
                v.AuxInt = i - 8
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(w1)
-               v.AddArg(mem)
+               v.AddArg4(p, w0, w1, mem)
                return true
        }
        // match: (MOVDstore [i] {s} p w2 x:(STMG2 [i-16] {s} p w0 w1 mem))
@@ -11132,11 +10435,7 @@ func rewriteValueS390X_OpS390XMOVDstore(v *Value) bool {
                v.reset(OpS390XSTMG3)
                v.AuxInt = i - 16
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(w1)
-               v.AddArg(w2)
-               v.AddArg(mem)
+               v.AddArg5(p, w0, w1, w2, mem)
                return true
        }
        // match: (MOVDstore [i] {s} p w3 x:(STMG3 [i-24] {s} p w0 w1 w2 mem))
@@ -11164,12 +10463,7 @@ func rewriteValueS390X_OpS390XMOVDstore(v *Value) bool {
                v.reset(OpS390XSTMG4)
                v.AuxInt = i - 24
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(w1)
-               v.AddArg(w2)
-               v.AddArg(w3)
-               v.AddArg(mem)
+               v.AddArg6(p, w0, w1, w2, w3, mem)
                return true
        }
        return false
@@ -11195,8 +10489,7 @@ func rewriteValueS390X_OpS390XMOVDstoreconst(v *Value) bool {
                v.reset(OpS390XMOVDstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVDstoreconst [sc] {sym1} (MOVDaddr [off] {sym2} ptr) mem)
@@ -11218,8 +10511,7 @@ func rewriteValueS390X_OpS390XMOVDstoreconst(v *Value) bool {
                v.reset(OpS390XMOVDstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -11250,10 +10542,7 @@ func rewriteValueS390X_OpS390XMOVDstoreidx(v *Value) bool {
                        v.reset(OpS390XMOVDstoreidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -11279,10 +10568,7 @@ func rewriteValueS390X_OpS390XMOVDstoreidx(v *Value) bool {
                        v.reset(OpS390XMOVDstoreidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -11315,9 +10601,7 @@ func rewriteValueS390X_OpS390XMOVHBRstore(v *Value) bool {
                v.reset(OpS390XMOVWBRstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVHBRstore [i] {s} p (SRDconst [j] w) x:(MOVHBRstore [i-2] {s} p w0:(SRDconst [j-16] w) mem))
@@ -11347,9 +10631,7 @@ func rewriteValueS390X_OpS390XMOVHBRstore(v *Value) bool {
                v.reset(OpS390XMOVWBRstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVHBRstore [i] {s} p (SRWconst [16] w) x:(MOVHBRstore [i-2] {s} p w mem))
@@ -11374,9 +10656,7 @@ func rewriteValueS390X_OpS390XMOVHBRstore(v *Value) bool {
                v.reset(OpS390XMOVWBRstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVHBRstore [i] {s} p (SRWconst [j] w) x:(MOVHBRstore [i-2] {s} p w0:(SRWconst [j-16] w) mem))
@@ -11406,9 +10686,7 @@ func rewriteValueS390X_OpS390XMOVHBRstore(v *Value) bool {
                v.reset(OpS390XMOVWBRstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        return false
@@ -11445,10 +10723,7 @@ func rewriteValueS390X_OpS390XMOVHBRstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVWBRstoreidx)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -11486,10 +10761,7 @@ func rewriteValueS390X_OpS390XMOVHBRstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVWBRstoreidx)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -11522,10 +10794,7 @@ func rewriteValueS390X_OpS390XMOVHBRstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVWBRstoreidx)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -11563,10 +10832,7 @@ func rewriteValueS390X_OpS390XMOVHBRstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVWBRstoreidx)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -11615,8 +10881,7 @@ func rewriteValueS390X_OpS390XMOVHZload(v *Value) bool {
                v.reset(OpS390XMOVHZload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHZload [off1] {sym1} (MOVDaddr <t> [off2] {sym2} base) mem)
@@ -11639,8 +10904,7 @@ func rewriteValueS390X_OpS390XMOVHZload(v *Value) bool {
                v.reset(OpS390XMOVHZload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVHZload [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) mem)
@@ -11663,9 +10927,7 @@ func rewriteValueS390X_OpS390XMOVHZload(v *Value) bool {
                v.reset(OpS390XMOVHZloadidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHZload [off] {sym} (ADD ptr idx) mem)
@@ -11690,9 +10952,7 @@ func rewriteValueS390X_OpS390XMOVHZload(v *Value) bool {
                        v.reset(OpS390XMOVHZloadidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -11723,9 +10983,7 @@ func rewriteValueS390X_OpS390XMOVHZloadidx(v *Value) bool {
                        v.reset(OpS390XMOVHZloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -11750,9 +11008,7 @@ func rewriteValueS390X_OpS390XMOVHZloadidx(v *Value) bool {
                        v.reset(OpS390XMOVHZloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -11933,8 +11189,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(mem)
+               v0.AddArg2(p, mem)
                return true
        }
        // match: (MOVHZreg <t> x:(MOVHloadidx [o] {s} p i mem))
@@ -11960,9 +11215,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(i)
-               v0.AddArg(mem)
+               v0.AddArg3(p, i, mem)
                return true
        }
        // match: (MOVHZreg x:(Arg <t>))
@@ -12051,8 +11304,7 @@ func rewriteValueS390X_OpS390XMOVHload(v *Value) bool {
                v.reset(OpS390XMOVHload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHload [off1] {sym1} (MOVDaddr <t> [off2] {sym2} base) mem)
@@ -12075,8 +11327,7 @@ func rewriteValueS390X_OpS390XMOVHload(v *Value) bool {
                v.reset(OpS390XMOVHload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVHload [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) mem)
@@ -12099,9 +11350,7 @@ func rewriteValueS390X_OpS390XMOVHload(v *Value) bool {
                v.reset(OpS390XMOVHloadidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVHload [off] {sym} (ADD ptr idx) mem)
@@ -12126,9 +11375,7 @@ func rewriteValueS390X_OpS390XMOVHload(v *Value) bool {
                        v.reset(OpS390XMOVHloadidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -12159,9 +11406,7 @@ func rewriteValueS390X_OpS390XMOVHloadidx(v *Value) bool {
                        v.reset(OpS390XMOVHloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -12186,9 +11431,7 @@ func rewriteValueS390X_OpS390XMOVHloadidx(v *Value) bool {
                        v.reset(OpS390XMOVHloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -12403,8 +11646,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(mem)
+               v0.AddArg2(p, mem)
                return true
        }
        // match: (MOVHreg <t> x:(MOVHZloadidx [o] {s} p i mem))
@@ -12430,9 +11672,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(i)
-               v0.AddArg(mem)
+               v0.AddArg3(p, i, mem)
                return true
        }
        // match: (MOVHreg x:(Arg <t>))
@@ -12502,9 +11742,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                v.reset(OpS390XMOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVHZreg x) mem)
@@ -12521,9 +11759,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                v.reset(OpS390XMOVHstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVHstore [off1] {sym} (ADDconst [off2] ptr) val mem)
@@ -12545,9 +11781,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                v.reset(OpS390XMOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} ptr (MOVDconst [c]) mem)
@@ -12568,8 +11802,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                v.reset(OpS390XMOVHstoreconst)
                v.AuxInt = makeValAndOff(int64(int16(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstore [off1] {sym1} (MOVDaddr <t> [off2] {sym2} base) val mem)
@@ -12593,9 +11826,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                v.reset(OpS390XMOVHstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVHstore [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) val mem)
@@ -12619,10 +11850,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                v.reset(OpS390XMOVHstoreidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVHstore [off] {sym} (ADD ptr idx) val mem)
@@ -12648,10 +11876,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                        v.reset(OpS390XMOVHstoreidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -12679,9 +11904,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                v.reset(OpS390XMOVWstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVHstore [i] {s} p w0:(SRDconst [j] w) x:(MOVHstore [i-2] {s} p (SRDconst [j+16] w) mem))
@@ -12712,9 +11935,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                v.reset(OpS390XMOVWstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVHstore [i] {s} p w x:(MOVHstore [i-2] {s} p (SRWconst [16] w) mem))
@@ -12740,9 +11961,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                v.reset(OpS390XMOVWstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVHstore [i] {s} p w0:(SRWconst [j] w) x:(MOVHstore [i-2] {s} p (SRWconst [j+16] w) mem))
@@ -12773,9 +11992,7 @@ func rewriteValueS390X_OpS390XMOVHstore(v *Value) bool {
                v.reset(OpS390XMOVWstore)
                v.AuxInt = i - 2
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        return false
@@ -12803,8 +12020,7 @@ func rewriteValueS390X_OpS390XMOVHstoreconst(v *Value) bool {
                v.reset(OpS390XMOVHstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstoreconst [sc] {sym1} (MOVDaddr [off] {sym2} ptr) mem)
@@ -12826,8 +12042,7 @@ func rewriteValueS390X_OpS390XMOVHstoreconst(v *Value) bool {
                v.reset(OpS390XMOVHstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVHstoreconst [c] {s} p x:(MOVHstoreconst [a] {s} p mem))
@@ -12852,11 +12067,9 @@ func rewriteValueS390X_OpS390XMOVHstoreconst(v *Value) bool {
                v.reset(OpS390XMOVWstore)
                v.AuxInt = ValAndOff(a).Off()
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = int64(int32(ValAndOff(c).Val()&0xffff | ValAndOff(a).Val()<<16))
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        return false
@@ -12887,10 +12100,7 @@ func rewriteValueS390X_OpS390XMOVHstoreidx(v *Value) bool {
                        v.reset(OpS390XMOVHstoreidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -12916,10 +12126,7 @@ func rewriteValueS390X_OpS390XMOVHstoreidx(v *Value) bool {
                        v.reset(OpS390XMOVHstoreidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -12952,10 +12159,7 @@ func rewriteValueS390X_OpS390XMOVHstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVWstoreidx)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -12994,10 +12198,7 @@ func rewriteValueS390X_OpS390XMOVHstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVWstoreidx)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -13031,10 +12232,7 @@ func rewriteValueS390X_OpS390XMOVHstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVWstoreidx)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -13073,10 +12271,7 @@ func rewriteValueS390X_OpS390XMOVHstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVWstoreidx)
                                v.AuxInt = i - 2
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -13110,9 +12305,7 @@ func rewriteValueS390X_OpS390XMOVWBRstore(v *Value) bool {
                v.reset(OpS390XMOVDBRstore)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVWBRstore [i] {s} p (SRDconst [j] w) x:(MOVWBRstore [i-4] {s} p w0:(SRDconst [j-32] w) mem))
@@ -13142,9 +12335,7 @@ func rewriteValueS390X_OpS390XMOVWBRstore(v *Value) bool {
                v.reset(OpS390XMOVDBRstore)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        return false
@@ -13181,10 +12372,7 @@ func rewriteValueS390X_OpS390XMOVWBRstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVDBRstoreidx)
                                v.AuxInt = i - 4
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -13222,10 +12410,7 @@ func rewriteValueS390X_OpS390XMOVWBRstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVDBRstoreidx)
                                v.AuxInt = i - 4
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -13274,8 +12459,7 @@ func rewriteValueS390X_OpS390XMOVWZload(v *Value) bool {
                v.reset(OpS390XMOVWZload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWZload [off1] {sym1} (MOVDaddr <t> [off2] {sym2} base) mem)
@@ -13298,8 +12482,7 @@ func rewriteValueS390X_OpS390XMOVWZload(v *Value) bool {
                v.reset(OpS390XMOVWZload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVWZload [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) mem)
@@ -13322,9 +12505,7 @@ func rewriteValueS390X_OpS390XMOVWZload(v *Value) bool {
                v.reset(OpS390XMOVWZloadidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWZload [off] {sym} (ADD ptr idx) mem)
@@ -13349,9 +12530,7 @@ func rewriteValueS390X_OpS390XMOVWZload(v *Value) bool {
                        v.reset(OpS390XMOVWZloadidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -13382,9 +12561,7 @@ func rewriteValueS390X_OpS390XMOVWZloadidx(v *Value) bool {
                        v.reset(OpS390XMOVWZloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -13409,9 +12586,7 @@ func rewriteValueS390X_OpS390XMOVWZloadidx(v *Value) bool {
                        v.reset(OpS390XMOVWZloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -13609,8 +12784,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(mem)
+               v0.AddArg2(p, mem)
                return true
        }
        // match: (MOVWZreg <t> x:(MOVWloadidx [o] {s} p i mem))
@@ -13636,9 +12810,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(i)
-               v0.AddArg(mem)
+               v0.AddArg3(p, i, mem)
                return true
        }
        // match: (MOVWZreg x:(Arg <t>))
@@ -13712,8 +12884,7 @@ func rewriteValueS390X_OpS390XMOVWload(v *Value) bool {
                v.reset(OpS390XMOVWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (MOVDaddr <t> [off2] {sym2} base) mem)
@@ -13736,8 +12907,7 @@ func rewriteValueS390X_OpS390XMOVWload(v *Value) bool {
                v.reset(OpS390XMOVWload)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(mem)
+               v.AddArg2(base, mem)
                return true
        }
        // match: (MOVWload [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) mem)
@@ -13760,9 +12930,7 @@ func rewriteValueS390X_OpS390XMOVWload(v *Value) bool {
                v.reset(OpS390XMOVWloadidx)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(mem)
+               v.AddArg3(ptr, idx, mem)
                return true
        }
        // match: (MOVWload [off] {sym} (ADD ptr idx) mem)
@@ -13787,9 +12955,7 @@ func rewriteValueS390X_OpS390XMOVWload(v *Value) bool {
                        v.reset(OpS390XMOVWloadidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -13820,9 +12986,7 @@ func rewriteValueS390X_OpS390XMOVWloadidx(v *Value) bool {
                        v.reset(OpS390XMOVWloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -13847,9 +13011,7 @@ func rewriteValueS390X_OpS390XMOVWloadidx(v *Value) bool {
                        v.reset(OpS390XMOVWloadidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(mem)
+                       v.AddArg3(ptr, idx, mem)
                        return true
                }
                break
@@ -14115,8 +13277,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(mem)
+               v0.AddArg2(p, mem)
                return true
        }
        // match: (MOVWreg <t> x:(MOVWZloadidx [o] {s} p i mem))
@@ -14142,9 +13303,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
                v.AddArg(v0)
                v0.AuxInt = o
                v0.Aux = s
-               v0.AddArg(p)
-               v0.AddArg(i)
-               v0.AddArg(mem)
+               v0.AddArg3(p, i, mem)
                return true
        }
        // match: (MOVWreg x:(Arg <t>))
@@ -14195,9 +13354,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                v.reset(OpS390XMOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVWZreg x) mem)
@@ -14214,9 +13371,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                v.reset(OpS390XMOVWstore)
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(ptr, x, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym} (ADDconst [off2] ptr) val mem)
@@ -14238,9 +13393,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                v.reset(OpS390XMOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} ptr (MOVDconst [c]) mem)
@@ -14261,8 +13414,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                v.reset(OpS390XMOVWstoreconst)
                v.AuxInt = makeValAndOff(int64(int32(c)), off)
                v.Aux = sym
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (MOVDaddr <t> [off2] {sym2} base) val mem)
@@ -14286,9 +13438,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                v.reset(OpS390XMOVWstore)
                v.AuxInt = off1 + off2
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(base)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(base, val, mem)
                return true
        }
        // match: (MOVWstore [off1] {sym1} (MOVDaddridx [off2] {sym2} ptr idx) val mem)
@@ -14311,11 +13461,8 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                }
                v.reset(OpS390XMOVWstoreidx)
                v.AuxInt = off1 + off2
-               v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(idx)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.Aux = mergeSym(sym1, sym2)
+               v.AddArg4(ptr, idx, val, mem)
                return true
        }
        // match: (MOVWstore [off] {sym} (ADD ptr idx) val mem)
@@ -14341,10 +13488,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                        v.reset(OpS390XMOVWstoreidx)
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -14371,9 +13515,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                v.reset(OpS390XMOVDstore)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
-               v.AddArg(mem)
+               v.AddArg3(p, w, mem)
                return true
        }
        // match: (MOVWstore [i] {s} p w0:(SRDconst [j] w) x:(MOVWstore [i-4] {s} p (SRDconst [j+32] w) mem))
@@ -14404,9 +13546,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                v.reset(OpS390XMOVDstore)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(mem)
+               v.AddArg3(p, w0, mem)
                return true
        }
        // match: (MOVWstore [i] {s} p w1 x:(MOVWstore [i-4] {s} p w0 mem))
@@ -14432,10 +13572,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                v.reset(OpS390XSTM2)
                v.AuxInt = i - 4
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(w1)
-               v.AddArg(mem)
+               v.AddArg4(p, w0, w1, mem)
                return true
        }
        // match: (MOVWstore [i] {s} p w2 x:(STM2 [i-8] {s} p w0 w1 mem))
@@ -14462,11 +13599,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                v.reset(OpS390XSTM3)
                v.AuxInt = i - 8
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(w1)
-               v.AddArg(w2)
-               v.AddArg(mem)
+               v.AddArg5(p, w0, w1, w2, mem)
                return true
        }
        // match: (MOVWstore [i] {s} p w3 x:(STM3 [i-12] {s} p w0 w1 w2 mem))
@@ -14494,12 +13627,7 @@ func rewriteValueS390X_OpS390XMOVWstore(v *Value) bool {
                v.reset(OpS390XSTM4)
                v.AuxInt = i - 12
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(w1)
-               v.AddArg(w2)
-               v.AddArg(w3)
-               v.AddArg(mem)
+               v.AddArg6(p, w0, w1, w2, w3, mem)
                return true
        }
        return false
@@ -14527,8 +13655,7 @@ func rewriteValueS390X_OpS390XMOVWstoreconst(v *Value) bool {
                v.reset(OpS390XMOVWstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = s
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstoreconst [sc] {sym1} (MOVDaddr [off] {sym2} ptr) mem)
@@ -14550,8 +13677,7 @@ func rewriteValueS390X_OpS390XMOVWstoreconst(v *Value) bool {
                v.reset(OpS390XMOVWstoreconst)
                v.AuxInt = ValAndOff(sc).add(off)
                v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (MOVWstoreconst [c] {s} p x:(MOVWstoreconst [a] {s} p mem))
@@ -14576,11 +13702,9 @@ func rewriteValueS390X_OpS390XMOVWstoreconst(v *Value) bool {
                v.reset(OpS390XMOVDstore)
                v.AuxInt = ValAndOff(a).Off()
                v.Aux = s
-               v.AddArg(p)
                v0 := b.NewValue0(x.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = ValAndOff(c).Val()&0xffffffff | ValAndOff(a).Val()<<32
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(p, v0, mem)
                return true
        }
        return false
@@ -14611,10 +13735,7 @@ func rewriteValueS390X_OpS390XMOVWstoreidx(v *Value) bool {
                        v.reset(OpS390XMOVWstoreidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -14640,10 +13761,7 @@ func rewriteValueS390X_OpS390XMOVWstoreidx(v *Value) bool {
                        v.reset(OpS390XMOVWstoreidx)
                        v.AuxInt = c + d
                        v.Aux = sym
-                       v.AddArg(ptr)
-                       v.AddArg(idx)
-                       v.AddArg(val)
-                       v.AddArg(mem)
+                       v.AddArg4(ptr, idx, val, mem)
                        return true
                }
                break
@@ -14676,10 +13794,7 @@ func rewriteValueS390X_OpS390XMOVWstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVDstoreidx)
                                v.AuxInt = i - 4
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w, mem)
                                return true
                        }
                }
@@ -14718,10 +13833,7 @@ func rewriteValueS390X_OpS390XMOVWstoreidx(v *Value) bool {
                                v.reset(OpS390XMOVDstoreidx)
                                v.AuxInt = i - 4
                                v.Aux = s
-                               v.AddArg(p)
-                               v.AddArg(idx)
-                               v.AddArg(w0)
-                               v.AddArg(mem)
+                               v.AddArg4(p, idx, w0, mem)
                                return true
                        }
                }
@@ -14774,9 +13886,7 @@ func rewriteValueS390X_OpS390XMULLD(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -14846,8 +13956,7 @@ func rewriteValueS390X_OpS390XMULLDconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
                v0.AuxInt = log2(c + 1)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLDconst [c] x)
@@ -14863,8 +13972,7 @@ func rewriteValueS390X_OpS390XMULLDconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
                v0.AuxInt = log2(c - 1)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLDconst [c] (MOVDconst [d]))
@@ -14905,10 +14013,9 @@ func rewriteValueS390X_OpS390XMULLDload(v *Value) bool {
                        break
                }
                v.reset(OpS390XMULLD)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (MULLDload [off1] {sym} x (ADDconst [off2] ptr) mem)
@@ -14930,9 +14037,7 @@ func rewriteValueS390X_OpS390XMULLDload(v *Value) bool {
                v.reset(OpS390XMULLDload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (MULLDload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -14955,9 +14060,7 @@ func rewriteValueS390X_OpS390XMULLDload(v *Value) bool {
                v.reset(OpS390XMULLDload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -15003,9 +14106,7 @@ func rewriteValueS390X_OpS390XMULLW(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -15032,9 +14133,7 @@ func rewriteValueS390X_OpS390XMULLW(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -15104,8 +14203,7 @@ func rewriteValueS390X_OpS390XMULLWconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
                v0.AuxInt = log2(c + 1)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLWconst [c] x)
@@ -15121,8 +14219,7 @@ func rewriteValueS390X_OpS390XMULLWconst(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
                v0.AuxInt = log2(c - 1)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (MULLWconst [c] (MOVDconst [d]))
@@ -15162,9 +14259,7 @@ func rewriteValueS390X_OpS390XMULLWload(v *Value) bool {
                v.reset(OpS390XMULLWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (MULLWload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -15187,9 +14282,7 @@ func rewriteValueS390X_OpS390XMULLWload(v *Value) bool {
                v.reset(OpS390XMULLWload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -15256,8 +14349,7 @@ func rewriteValueS390X_OpS390XNOT(v *Value) bool {
                v.reset(OpS390XXOR)
                v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v0.AuxInt = -1
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -15367,8 +14459,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        y := v_1_0.Args[0]
                        v.reset(OpS390XLGDR)
                        v0 := b.NewValue0(v.Pos, OpS390XCPSDR, t)
-                       v0.AddArg(y)
-                       v0.AddArg(x)
+                       v0.AddArg2(y, x)
                        v.AddArg(v0)
                        return true
                }
@@ -15402,8 +14493,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpS390XCPSDR, x.Type)
                        v1 := b.NewValue0(v.Pos, OpS390XFMOVDconst, x.Type)
                        v1.AuxInt = c
-                       v0.AddArg(v1)
-                       v0.AddArg(x)
+                       v0.AddArg2(v1, x)
                        v.AddArg(v0)
                        return true
                }
@@ -15435,8 +14525,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                y := v_1_0.Args[0]
                                v.reset(OpS390XLGDR)
                                v0 := b.NewValue0(v.Pos, OpS390XCPSDR, t)
-                               v0.AddArg(y)
-                               v0.AddArg(x)
+                               v0.AddArg2(y, x)
                                v.AddArg(v0)
                                return true
                        }
@@ -15470,8 +14559,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                v0 := b.NewValue0(v.Pos, OpS390XCPSDR, x.Type)
                                v1 := b.NewValue0(v.Pos, OpS390XFMOVDconst, x.Type)
                                v1.AuxInt = c
-                               v0.AddArg(v1)
-                               v0.AddArg(x)
+                               v0.AddArg2(v1, x)
                                v.AddArg(v0)
                                return true
                        }
@@ -15530,9 +14618,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -15572,8 +14658,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -15613,8 +14698,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -15654,8 +14738,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -15716,11 +14799,9 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                v2 := b.NewValue0(x1.Pos, OpS390XMOVHZload, typ.UInt16)
                                v2.AuxInt = i0
                                v2.Aux = s
-                               v2.AddArg(p)
-                               v2.AddArg(mem)
+                               v2.AddArg2(p, mem)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -15782,11 +14863,9 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                v2 := b.NewValue0(x1.Pos, OpS390XMOVWZload, typ.UInt32)
                                v2.AuxInt = i0
                                v2.Aux = s
-                               v2.AddArg(p)
-                               v2.AddArg(mem)
+                               v2.AddArg2(p, mem)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -15834,9 +14913,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -15885,9 +14962,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -15936,9 +15011,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -16008,12 +15081,9 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                                v2 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, typ.UInt16)
                                                v2.AuxInt = i0
                                                v2.Aux = s
-                                               v2.AddArg(p)
-                                               v2.AddArg(idx)
-                                               v2.AddArg(mem)
+                                               v2.AddArg3(p, idx, mem)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -16084,12 +15154,9 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                                v2 := b.NewValue0(v.Pos, OpS390XMOVWZloadidx, typ.UInt32)
                                                v2.AuxInt = i0
                                                v2.Aux = s
-                                               v2.AddArg(p)
-                                               v2.AddArg(idx)
-                                               v2.AddArg(mem)
+                                               v2.AddArg3(p, idx, mem)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -16133,8 +15200,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        v1 := b.NewValue0(x1.Pos, OpS390XMOVHBRload, typ.UInt16)
                        v1.AuxInt = i0
                        v1.Aux = s
-                       v1.AddArg(p)
-                       v1.AddArg(mem)
+                       v1.AddArg2(p, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -16184,8 +15250,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        v1 := b.NewValue0(x1.Pos, OpS390XMOVWBRload, typ.UInt32)
                        v1.AuxInt = i0
                        v1.Aux = s
-                       v1.AddArg(p)
-                       v1.AddArg(mem)
+                       v1.AddArg2(p, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -16234,8 +15299,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -16297,12 +15361,10 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                v3 := b.NewValue0(x0.Pos, OpS390XMOVHBRload, typ.UInt16)
                                v3.AuxInt = i0
                                v3.Aux = s
-                               v3.AddArg(p)
-                               v3.AddArg(mem)
+                               v3.AddArg2(p, mem)
                                v2.AddArg(v3)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -16373,12 +15435,10 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                v3 := b.NewValue0(x0.Pos, OpS390XMOVWBRload, typ.UInt32)
                                v3.AuxInt = i0
                                v3.Aux = s
-                               v3.AddArg(p)
-                               v3.AddArg(mem)
+                               v3.AddArg2(p, mem)
                                v2.AddArg(v3)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -16427,9 +15487,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpS390XMOVHBRloadidx, typ.Int16)
                                        v1.AuxInt = i0
                                        v1.Aux = s
-                                       v1.AddArg(p)
-                                       v1.AddArg(idx)
-                                       v1.AddArg(mem)
+                                       v1.AddArg3(p, idx, mem)
                                        v0.AddArg(v1)
                                        return true
                                }
@@ -16488,9 +15546,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpS390XMOVWBRloadidx, typ.Int32)
                                        v1.AuxInt = i0
                                        v1.Aux = s
-                                       v1.AddArg(p)
-                                       v1.AddArg(idx)
-                                       v1.AddArg(mem)
+                                       v1.AddArg3(p, idx, mem)
                                        v0.AddArg(v1)
                                        return true
                                }
@@ -16548,9 +15604,7 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -16621,13 +15675,10 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                                v3 := b.NewValue0(v.Pos, OpS390XMOVHBRloadidx, typ.Int16)
                                                v3.AuxInt = i0
                                                v3.Aux = s
-                                               v3.AddArg(p)
-                                               v3.AddArg(idx)
-                                               v3.AddArg(mem)
+                                               v3.AddArg3(p, idx, mem)
                                                v2.AddArg(v3)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -16707,13 +15758,10 @@ func rewriteValueS390X_OpS390XOR(v *Value) bool {
                                                v3 := b.NewValue0(v.Pos, OpS390XMOVWBRloadidx, typ.Int32)
                                                v3.AuxInt = i0
                                                v3.Aux = s
-                                               v3.AddArg(p)
-                                               v3.AddArg(idx)
-                                               v3.AddArg(mem)
+                                               v3.AddArg3(p, idx, mem)
                                                v2.AddArg(v3)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -16802,9 +15850,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -16831,9 +15877,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -16873,8 +15917,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -16914,8 +15957,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -16976,11 +16018,9 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                v2 := b.NewValue0(x1.Pos, OpS390XMOVHZload, typ.UInt16)
                                v2.AuxInt = i0
                                v2.Aux = s
-                               v2.AddArg(p)
-                               v2.AddArg(mem)
+                               v2.AddArg2(p, mem)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -17028,9 +16068,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -17079,9 +16117,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -17151,12 +16187,9 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                                v2 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, typ.UInt16)
                                                v2.AuxInt = i0
                                                v2.Aux = s
-                                               v2.AddArg(p)
-                                               v2.AddArg(idx)
-                                               v2.AddArg(mem)
+                                               v2.AddArg3(p, idx, mem)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -17200,8 +16233,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                        v1 := b.NewValue0(x1.Pos, OpS390XMOVHBRload, typ.UInt16)
                        v1.AuxInt = i0
                        v1.Aux = s
-                       v1.AddArg(p)
-                       v1.AddArg(mem)
+                       v1.AddArg2(p, mem)
                        v0.AddArg(v1)
                        return true
                }
@@ -17250,8 +16282,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                        v.AddArg(v0)
                        v0.AuxInt = i0
                        v0.Aux = s
-                       v0.AddArg(p)
-                       v0.AddArg(mem)
+                       v0.AddArg2(p, mem)
                        return true
                }
                break
@@ -17313,12 +16344,10 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                v3 := b.NewValue0(x0.Pos, OpS390XMOVHBRload, typ.UInt16)
                                v3.AuxInt = i0
                                v3.Aux = s
-                               v3.AddArg(p)
-                               v3.AddArg(mem)
+                               v3.AddArg2(p, mem)
                                v2.AddArg(v3)
                                v1.AddArg(v2)
-                               v0.AddArg(v1)
-                               v0.AddArg(y)
+                               v0.AddArg2(v1, y)
                                return true
                        }
                }
@@ -17367,9 +16396,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpS390XMOVHBRloadidx, typ.Int16)
                                        v1.AuxInt = i0
                                        v1.Aux = s
-                                       v1.AddArg(p)
-                                       v1.AddArg(idx)
-                                       v1.AddArg(mem)
+                                       v1.AddArg3(p, idx, mem)
                                        v0.AddArg(v1)
                                        return true
                                }
@@ -17427,9 +16454,7 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                        v.AddArg(v0)
                                        v0.AuxInt = i0
                                        v0.Aux = s
-                                       v0.AddArg(p)
-                                       v0.AddArg(idx)
-                                       v0.AddArg(mem)
+                                       v0.AddArg3(p, idx, mem)
                                        return true
                                }
                        }
@@ -17500,13 +16525,10 @@ func rewriteValueS390X_OpS390XORW(v *Value) bool {
                                                v3 := b.NewValue0(v.Pos, OpS390XMOVHBRloadidx, typ.Int16)
                                                v3.AuxInt = i0
                                                v3.Aux = s
-                                               v3.AddArg(p)
-                                               v3.AddArg(idx)
-                                               v3.AddArg(mem)
+                                               v3.AddArg3(p, idx, mem)
                                                v2.AddArg(v3)
                                                v1.AddArg(v2)
-                                               v0.AddArg(v1)
-                                               v0.AddArg(y)
+                                               v0.AddArg2(v1, y)
                                                return true
                                        }
                                }
@@ -17581,9 +16603,7 @@ func rewriteValueS390X_OpS390XORWload(v *Value) bool {
                v.reset(OpS390XORWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (ORWload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -17606,9 +16626,7 @@ func rewriteValueS390X_OpS390XORWload(v *Value) bool {
                v.reset(OpS390XORWload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -17675,10 +16693,9 @@ func rewriteValueS390X_OpS390XORload(v *Value) bool {
                        break
                }
                v.reset(OpS390XOR)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (ORload [off1] {sym} x (ADDconst [off2] ptr) mem)
@@ -17700,9 +16717,7 @@ func rewriteValueS390X_OpS390XORload(v *Value) bool {
                v.reset(OpS390XORload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (ORload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -17725,9 +16740,7 @@ func rewriteValueS390X_OpS390XORload(v *Value) bool {
                v.reset(OpS390XORload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -17803,11 +16816,10 @@ func rewriteValueS390X_OpS390XSLD(v *Value) bool {
                        c := v_1_0.AuxInt
                        y := v_1_1
                        v.reset(OpS390XSLD)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpS390XANDWconst, typ.UInt32)
                        v0.AuxInt = c & 63
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -17826,8 +16838,7 @@ func rewriteValueS390X_OpS390XSLD(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLD x (MOVWreg y))
@@ -17839,8 +16850,7 @@ func rewriteValueS390X_OpS390XSLD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLD x (MOVHreg y))
@@ -17852,8 +16862,7 @@ func rewriteValueS390X_OpS390XSLD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLD x (MOVBreg y))
@@ -17865,8 +16874,7 @@ func rewriteValueS390X_OpS390XSLD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLD x (MOVWZreg y))
@@ -17878,8 +16886,7 @@ func rewriteValueS390X_OpS390XSLD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLD x (MOVHZreg y))
@@ -17891,8 +16898,7 @@ func rewriteValueS390X_OpS390XSLD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLD x (MOVBZreg y))
@@ -17904,8 +16910,7 @@ func rewriteValueS390X_OpS390XSLD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -17945,11 +16950,10 @@ func rewriteValueS390X_OpS390XSLW(v *Value) bool {
                        c := v_1_0.AuxInt
                        y := v_1_1
                        v.reset(OpS390XSLW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpS390XANDWconst, typ.UInt32)
                        v0.AuxInt = c & 63
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -17968,8 +16972,7 @@ func rewriteValueS390X_OpS390XSLW(v *Value) bool {
                        break
                }
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLW x (MOVWreg y))
@@ -17981,8 +16984,7 @@ func rewriteValueS390X_OpS390XSLW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLW x (MOVHreg y))
@@ -17994,8 +16996,7 @@ func rewriteValueS390X_OpS390XSLW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLW x (MOVBreg y))
@@ -18007,8 +17008,7 @@ func rewriteValueS390X_OpS390XSLW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLW x (MOVWZreg y))
@@ -18020,8 +17020,7 @@ func rewriteValueS390X_OpS390XSLW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLW x (MOVHZreg y))
@@ -18033,8 +17032,7 @@ func rewriteValueS390X_OpS390XSLW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SLW x (MOVBZreg y))
@@ -18046,8 +17044,7 @@ func rewriteValueS390X_OpS390XSLW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSLW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -18087,11 +17084,10 @@ func rewriteValueS390X_OpS390XSRAD(v *Value) bool {
                        c := v_1_0.AuxInt
                        y := v_1_1
                        v.reset(OpS390XSRAD)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpS390XANDWconst, typ.UInt32)
                        v0.AuxInt = c & 63
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -18110,8 +17106,7 @@ func rewriteValueS390X_OpS390XSRAD(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAD x (MOVWreg y))
@@ -18123,8 +17118,7 @@ func rewriteValueS390X_OpS390XSRAD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAD x (MOVHreg y))
@@ -18136,8 +17130,7 @@ func rewriteValueS390X_OpS390XSRAD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAD x (MOVBreg y))
@@ -18149,8 +17142,7 @@ func rewriteValueS390X_OpS390XSRAD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAD x (MOVWZreg y))
@@ -18162,8 +17154,7 @@ func rewriteValueS390X_OpS390XSRAD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAD x (MOVHZreg y))
@@ -18175,8 +17166,7 @@ func rewriteValueS390X_OpS390XSRAD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAD x (MOVBZreg y))
@@ -18188,8 +17178,7 @@ func rewriteValueS390X_OpS390XSRAD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -18245,11 +17234,10 @@ func rewriteValueS390X_OpS390XSRAW(v *Value) bool {
                        c := v_1_0.AuxInt
                        y := v_1_1
                        v.reset(OpS390XSRAW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpS390XANDWconst, typ.UInt32)
                        v0.AuxInt = c & 63
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -18268,8 +17256,7 @@ func rewriteValueS390X_OpS390XSRAW(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAW x (MOVWreg y))
@@ -18281,8 +17268,7 @@ func rewriteValueS390X_OpS390XSRAW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAW x (MOVHreg y))
@@ -18294,8 +17280,7 @@ func rewriteValueS390X_OpS390XSRAW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAW x (MOVBreg y))
@@ -18307,8 +17292,7 @@ func rewriteValueS390X_OpS390XSRAW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAW x (MOVWZreg y))
@@ -18320,8 +17304,7 @@ func rewriteValueS390X_OpS390XSRAW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAW x (MOVHZreg y))
@@ -18333,8 +17316,7 @@ func rewriteValueS390X_OpS390XSRAW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRAW x (MOVBZreg y))
@@ -18346,8 +17328,7 @@ func rewriteValueS390X_OpS390XSRAW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRAW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -18403,11 +17384,10 @@ func rewriteValueS390X_OpS390XSRD(v *Value) bool {
                        c := v_1_0.AuxInt
                        y := v_1_1
                        v.reset(OpS390XSRD)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpS390XANDWconst, typ.UInt32)
                        v0.AuxInt = c & 63
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -18426,8 +17406,7 @@ func rewriteValueS390X_OpS390XSRD(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRD x (MOVWreg y))
@@ -18439,8 +17418,7 @@ func rewriteValueS390X_OpS390XSRD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRD x (MOVHreg y))
@@ -18452,8 +17430,7 @@ func rewriteValueS390X_OpS390XSRD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRD x (MOVBreg y))
@@ -18465,8 +17442,7 @@ func rewriteValueS390X_OpS390XSRD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRD x (MOVWZreg y))
@@ -18478,8 +17454,7 @@ func rewriteValueS390X_OpS390XSRD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRD x (MOVHZreg y))
@@ -18491,8 +17466,7 @@ func rewriteValueS390X_OpS390XSRD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRD x (MOVBZreg y))
@@ -18504,8 +17478,7 @@ func rewriteValueS390X_OpS390XSRD(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRD)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -18569,11 +17542,10 @@ func rewriteValueS390X_OpS390XSRW(v *Value) bool {
                        c := v_1_0.AuxInt
                        y := v_1_1
                        v.reset(OpS390XSRW)
-                       v.AddArg(x)
                        v0 := b.NewValue0(v.Pos, OpS390XANDWconst, typ.UInt32)
                        v0.AuxInt = c & 63
                        v0.AddArg(y)
-                       v.AddArg(v0)
+                       v.AddArg2(x, v0)
                        return true
                }
                break
@@ -18592,8 +17564,7 @@ func rewriteValueS390X_OpS390XSRW(v *Value) bool {
                        break
                }
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRW x (MOVWreg y))
@@ -18605,8 +17576,7 @@ func rewriteValueS390X_OpS390XSRW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRW x (MOVHreg y))
@@ -18618,8 +17588,7 @@ func rewriteValueS390X_OpS390XSRW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRW x (MOVBreg y))
@@ -18631,8 +17600,7 @@ func rewriteValueS390X_OpS390XSRW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRW x (MOVWZreg y))
@@ -18644,8 +17612,7 @@ func rewriteValueS390X_OpS390XSRW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRW x (MOVHZreg y))
@@ -18657,8 +17624,7 @@ func rewriteValueS390X_OpS390XSRW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SRW x (MOVBZreg y))
@@ -18670,8 +17636,7 @@ func rewriteValueS390X_OpS390XSRW(v *Value) bool {
                }
                y := v_1.Args[0]
                v.reset(OpS390XSRW)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        return false
@@ -18706,12 +17671,7 @@ func rewriteValueS390X_OpS390XSTM2(v *Value) bool {
                v.reset(OpS390XSTM4)
                v.AuxInt = i - 8
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(w1)
-               v.AddArg(w2)
-               v.AddArg(w3)
-               v.AddArg(mem)
+               v.AddArg6(p, w0, w1, w2, w3, mem)
                return true
        }
        // match: (STM2 [i] {s} p (SRDconst [32] x) x mem)
@@ -18731,9 +17691,7 @@ func rewriteValueS390X_OpS390XSTM2(v *Value) bool {
                v.reset(OpS390XMOVDstore)
                v.AuxInt = i
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(x)
-               v.AddArg(mem)
+               v.AddArg3(p, x, mem)
                return true
        }
        return false
@@ -18768,12 +17726,7 @@ func rewriteValueS390X_OpS390XSTMG2(v *Value) bool {
                v.reset(OpS390XSTMG4)
                v.AuxInt = i - 16
                v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w0)
-               v.AddArg(w1)
-               v.AddArg(w2)
-               v.AddArg(w3)
-               v.AddArg(mem)
+               v.AddArg6(p, w0, w1, w2, w3, mem)
                return true
        }
        return false
@@ -18850,9 +17803,7 @@ func rewriteValueS390X_OpS390XSUB(v *Value) bool {
                v.Type = t
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -18870,8 +17821,7 @@ func rewriteValueS390X_OpS390XSUBE(v *Value) bool {
                        break
                }
                v.reset(OpS390XSUBC)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUBE x y (FlagOV))
@@ -18883,8 +17833,7 @@ func rewriteValueS390X_OpS390XSUBE(v *Value) bool {
                        break
                }
                v.reset(OpS390XSUBC)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (SUBE x y (Select1 (SUBC (MOVDconst [0]) (NEG (Select0 (SUBE (MOVDconst [0]) (MOVDconst [0]) c))))))
@@ -18926,9 +17875,7 @@ func rewriteValueS390X_OpS390XSUBE(v *Value) bool {
                        break
                }
                v.reset(OpS390XSUBE)
-               v.AddArg(x)
-               v.AddArg(y)
-               v.AddArg(c)
+               v.AddArg3(x, y, c)
                return true
        }
        return false
@@ -18997,9 +17944,7 @@ func rewriteValueS390X_OpS390XSUBW(v *Value) bool {
                v.Type = t
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (SUBW <t> x g:(MOVWZload [off] {sym} ptr mem))
@@ -19023,9 +17968,7 @@ func rewriteValueS390X_OpS390XSUBW(v *Value) bool {
                v.Type = t
                v.AuxInt = off
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -19080,9 +18023,7 @@ func rewriteValueS390X_OpS390XSUBWload(v *Value) bool {
                v.reset(OpS390XSUBWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (SUBWload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -19105,9 +18046,7 @@ func rewriteValueS390X_OpS390XSUBWload(v *Value) bool {
                v.reset(OpS390XSUBWload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -19196,10 +18135,9 @@ func rewriteValueS390X_OpS390XSUBload(v *Value) bool {
                        break
                }
                v.reset(OpS390XSUB)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (SUBload [off1] {sym} x (ADDconst [off2] ptr) mem)
@@ -19221,9 +18159,7 @@ func rewriteValueS390X_OpS390XSUBload(v *Value) bool {
                v.reset(OpS390XSUBload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (SUBload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -19246,9 +18182,7 @@ func rewriteValueS390X_OpS390XSUBload(v *Value) bool {
                v.reset(OpS390XSUBload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -19265,8 +18199,7 @@ func rewriteValueS390X_OpS390XSumBytes2(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XSRWconst, typ.UInt8)
                v0.AuxInt = 8
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -19283,8 +18216,7 @@ func rewriteValueS390X_OpS390XSumBytes4(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpS390XSRWconst, typ.UInt16)
                v1.AuxInt = 16
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(x)
+               v0.AddArg2(v1, x)
                v.AddArg(v0)
                return true
        }
@@ -19302,8 +18234,7 @@ func rewriteValueS390X_OpS390XSumBytes8(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpS390XSRDconst, typ.UInt32)
                v1.AuxInt = 32
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v0.AddArg(x)
+               v0.AddArg2(v1, x)
                v.AddArg(v0)
                return true
        }
@@ -19406,9 +18337,7 @@ func rewriteValueS390X_OpS390XXOR(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -19491,9 +18420,7 @@ func rewriteValueS390X_OpS390XXORW(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -19520,9 +18447,7 @@ func rewriteValueS390X_OpS390XXORW(v *Value) bool {
                        v.Type = t
                        v.AuxInt = off
                        v.Aux = sym
-                       v.AddArg(x)
-                       v.AddArg(ptr)
-                       v.AddArg(mem)
+                       v.AddArg3(x, ptr, mem)
                        return true
                }
                break
@@ -19582,9 +18507,7 @@ func rewriteValueS390X_OpS390XXORWload(v *Value) bool {
                v.reset(OpS390XXORWload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (XORWload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -19607,9 +18530,7 @@ func rewriteValueS390X_OpS390XXORWload(v *Value) bool {
                v.reset(OpS390XXORWload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -19666,10 +18587,9 @@ func rewriteValueS390X_OpS390XXORload(v *Value) bool {
                        break
                }
                v.reset(OpS390XXOR)
-               v.AddArg(x)
                v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (XORload [off1] {sym} x (ADDconst [off2] ptr) mem)
@@ -19691,9 +18611,7 @@ func rewriteValueS390X_OpS390XXORload(v *Value) bool {
                v.reset(OpS390XXORload)
                v.AuxInt = off1 + off2
                v.Aux = sym
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        // match: (XORload [o1] {s1} x (MOVDaddr [o2] {s2} ptr) mem)
@@ -19716,9 +18634,7 @@ func rewriteValueS390X_OpS390XXORload(v *Value) bool {
                v.reset(OpS390XXORload)
                v.AuxInt = o1 + o2
                v.Aux = mergeSym(s1, s2)
-               v.AddArg(x)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg3(x, ptr, mem)
                return true
        }
        return false
@@ -19739,14 +18655,12 @@ func rewriteValueS390X_OpSelect0(v *Value) bool {
                v.reset(OpSelect0)
                v.Type = typ.UInt64
                v0 := b.NewValue0(v.Pos, OpS390XADDE, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v0.AddArg(x)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v2 := b.NewValue0(v.Pos, OpS390XADDCconst, types.NewTuple(typ.UInt64, types.TypeFlags))
                v2.AuxInt = -1
                v2.AddArg(c)
                v1.AddArg(v2)
-               v0.AddArg(v1)
+               v0.AddArg3(x, y, v1)
                v.AddArg(v0)
                return true
        }
@@ -19762,16 +18676,13 @@ func rewriteValueS390X_OpSelect0(v *Value) bool {
                v.reset(OpSelect0)
                v.Type = typ.UInt64
                v0 := b.NewValue0(v.Pos, OpS390XSUBE, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v0.AddArg(x)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v2 := b.NewValue0(v.Pos, OpS390XSUBC, types.NewTuple(typ.UInt64, types.TypeFlags))
                v3 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v3.AuxInt = 0
-               v2.AddArg(v3)
-               v2.AddArg(c)
+               v2.AddArg2(v3, c)
                v1.AddArg(v2)
-               v0.AddArg(v1)
+               v0.AddArg3(x, y, v1)
                v.AddArg(v0)
                return true
        }
@@ -19785,10 +18696,9 @@ func rewriteValueS390X_OpSelect0(v *Value) bool {
                tuple := v_0.Args[1]
                val := v_0.Args[0]
                v.reset(OpS390XADDW)
-               v.AddArg(val)
                v0 := b.NewValue0(v.Pos, OpSelect0, t)
                v0.AddArg(tuple)
-               v.AddArg(v0)
+               v.AddArg2(val, v0)
                return true
        }
        // match: (Select0 <t> (AddTupleFirst64 val tuple))
@@ -19801,10 +18711,9 @@ func rewriteValueS390X_OpSelect0(v *Value) bool {
                tuple := v_0.Args[1]
                val := v_0.Args[0]
                v.reset(OpS390XADD)
-               v.AddArg(val)
                v0 := b.NewValue0(v.Pos, OpSelect0, t)
                v0.AddArg(tuple)
-               v.AddArg(v0)
+               v.AddArg2(val, v0)
                return true
        }
        // match: (Select0 (ADDCconst (MOVDconst [c]) [d]))
@@ -19864,22 +18773,18 @@ func rewriteValueS390X_OpSelect1(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpS390XADDE, types.NewTuple(typ.UInt64, types.TypeFlags))
                v1 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v1.AuxInt = 0
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v0.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v4 := b.NewValue0(v.Pos, OpS390XADDE, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v4.AddArg(x)
-               v4.AddArg(y)
                v5 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v6 := b.NewValue0(v.Pos, OpS390XADDCconst, types.NewTuple(typ.UInt64, types.TypeFlags))
                v6.AuxInt = -1
                v6.AddArg(c)
                v5.AddArg(v6)
-               v4.AddArg(v5)
+               v4.AddArg3(x, y, v5)
                v3.AddArg(v4)
-               v0.AddArg(v3)
+               v0.AddArg3(v1, v2, v3)
                v.AddArg(v0)
                return true
        }
@@ -19897,24 +18802,19 @@ func rewriteValueS390X_OpSelect1(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpS390XSUBE, types.NewTuple(typ.UInt64, types.TypeFlags))
                v2 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v3.AuxInt = 0
-               v1.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v5 := b.NewValue0(v.Pos, OpS390XSUBE, types.NewTuple(typ.UInt64, types.TypeFlags))
-               v5.AddArg(x)
-               v5.AddArg(y)
                v6 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v7 := b.NewValue0(v.Pos, OpS390XSUBC, types.NewTuple(typ.UInt64, types.TypeFlags))
                v8 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
                v8.AuxInt = 0
-               v7.AddArg(v8)
-               v7.AddArg(c)
+               v7.AddArg2(v8, c)
                v6.AddArg(v7)
-               v5.AddArg(v6)
+               v5.AddArg3(x, y, v6)
                v4.AddArg(v5)
-               v1.AddArg(v4)
+               v1.AddArg3(v2, v3, v4)
                v0.AddArg(v1)
                v.AddArg(v0)
                return true
@@ -20061,9 +18961,7 @@ func rewriteValueS390X_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpS390XFMOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -20078,9 +18976,7 @@ func rewriteValueS390X_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpS390XFMOVSstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -20095,9 +18991,7 @@ func rewriteValueS390X_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVDstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -20112,9 +19006,7 @@ func rewriteValueS390X_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVWstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -20129,9 +19021,7 @@ func rewriteValueS390X_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVHstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -20146,9 +19036,7 @@ func rewriteValueS390X_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpS390XMOVBstore)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -20191,8 +19079,7 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpS390XMOVBstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [2] destptr mem)
@@ -20205,8 +19092,7 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpS390XMOVHstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [4] destptr mem)
@@ -20219,8 +19105,7 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpS390XMOVWstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [8] destptr mem)
@@ -20233,8 +19118,7 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpS390XMOVDstoreconst)
                v.AuxInt = 0
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [3] destptr mem)
@@ -20247,12 +19131,10 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpS390XMOVBstoreconst)
                v.AuxInt = makeValAndOff(0, 2)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpS390XMOVHstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [5] destptr mem)
@@ -20265,12 +19147,10 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpS390XMOVBstoreconst)
                v.AuxInt = makeValAndOff(0, 4)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpS390XMOVWstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [6] destptr mem)
@@ -20283,12 +19163,10 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpS390XMOVHstoreconst)
                v.AuxInt = makeValAndOff(0, 4)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpS390XMOVWstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [7] destptr mem)
@@ -20301,12 +19179,10 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpS390XMOVWstoreconst)
                v.AuxInt = makeValAndOff(0, 3)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpS390XMOVWstoreconst, types.TypeMem)
                v0.AuxInt = 0
-               v0.AddArg(destptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(destptr, mem)
+               v.AddArg2(destptr, v0)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -20321,8 +19197,7 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                }
                v.reset(OpS390XCLEAR)
                v.AuxInt = makeValAndOff(s, 0)
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -20337,12 +19212,10 @@ func rewriteValueS390X_OpZero(v *Value) bool {
                }
                v.reset(OpS390XLoweredZero)
                v.AuxInt = s % 256
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpS390XADDconst, destptr.Type)
                v0.AuxInt = (s / 256) * 256
                v0.AddArg(destptr)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(destptr, v0, mem)
                return true
        }
        return false
index 90701067ce066218a0f5296204afdf4a5ae92763..81acd7e7c45e8058ca9d0bee889ac5f81be8706a 100644 (file)
@@ -685,10 +685,9 @@ func rewriteValueWasm_OpBitLen64(v *Value) bool {
                v.reset(OpWasmI64Sub)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 64
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpWasmI64Clz, typ.Int64)
                v1.AddArg(x)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -701,10 +700,9 @@ func rewriteValueWasm_OpCom16(v *Value) bool {
        for {
                x := v_0
                v.reset(OpWasmI64Xor)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = -1
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -717,10 +715,9 @@ func rewriteValueWasm_OpCom32(v *Value) bool {
        for {
                x := v_0
                v.reset(OpWasmI64Xor)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = -1
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -733,10 +730,9 @@ func rewriteValueWasm_OpCom64(v *Value) bool {
        for {
                x := v_0
                v.reset(OpWasmI64Xor)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = -1
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -749,10 +745,9 @@ func rewriteValueWasm_OpCom8(v *Value) bool {
        for {
                x := v_0
                v.reset(OpWasmI64Xor)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = -1
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -775,10 +770,9 @@ func rewriteValueWasm_OpCtz16(v *Value) bool {
                x := v_0
                v.reset(OpWasmI64Ctz)
                v0 := b.NewValue0(v.Pos, OpWasmI64Or, typ.Int64)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 0x10000
-               v0.AddArg(v1)
+               v0.AddArg2(x, v1)
                v.AddArg(v0)
                return true
        }
@@ -793,10 +787,9 @@ func rewriteValueWasm_OpCtz32(v *Value) bool {
                x := v_0
                v.reset(OpWasmI64Ctz)
                v0 := b.NewValue0(v.Pos, OpWasmI64Or, typ.Int64)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 0x100000000
-               v0.AddArg(v1)
+               v0.AddArg2(x, v1)
                v.AddArg(v0)
                return true
        }
@@ -811,10 +804,9 @@ func rewriteValueWasm_OpCtz8(v *Value) bool {
                x := v_0
                v.reset(OpWasmI64Ctz)
                v0 := b.NewValue0(v.Pos, OpWasmI64Or, typ.Int64)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 0x100
-               v0.AddArg(v1)
+               v0.AddArg2(x, v1)
                v.AddArg(v0)
                return true
        }
@@ -892,10 +884,9 @@ func rewriteValueWasm_OpDiv16(v *Value) bool {
                v.reset(OpWasmI64DivS)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -912,10 +903,9 @@ func rewriteValueWasm_OpDiv16u(v *Value) bool {
                v.reset(OpWasmI64DivU)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -932,10 +922,9 @@ func rewriteValueWasm_OpDiv32(v *Value) bool {
                v.reset(OpWasmI64DivS)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -952,10 +941,9 @@ func rewriteValueWasm_OpDiv32u(v *Value) bool {
                v.reset(OpWasmI64DivU)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -972,10 +960,9 @@ func rewriteValueWasm_OpDiv8(v *Value) bool {
                v.reset(OpWasmI64DivS)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -992,10 +979,9 @@ func rewriteValueWasm_OpDiv8u(v *Value) bool {
                v.reset(OpWasmI64DivU)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1012,10 +998,9 @@ func rewriteValueWasm_OpEq16(v *Value) bool {
                v.reset(OpWasmI64Eq)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1032,10 +1017,9 @@ func rewriteValueWasm_OpEq32(v *Value) bool {
                v.reset(OpWasmI64Eq)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1052,10 +1036,9 @@ func rewriteValueWasm_OpEq8(v *Value) bool {
                v.reset(OpWasmI64Eq)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1087,10 +1070,9 @@ func rewriteValueWasm_OpLeq16(v *Value) bool {
                v.reset(OpWasmI64LeS)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1107,10 +1089,9 @@ func rewriteValueWasm_OpLeq16U(v *Value) bool {
                v.reset(OpWasmI64LeU)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1127,10 +1108,9 @@ func rewriteValueWasm_OpLeq32(v *Value) bool {
                v.reset(OpWasmI64LeS)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1147,10 +1127,9 @@ func rewriteValueWasm_OpLeq32U(v *Value) bool {
                v.reset(OpWasmI64LeU)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1167,10 +1146,9 @@ func rewriteValueWasm_OpLeq8(v *Value) bool {
                v.reset(OpWasmI64LeS)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1187,10 +1165,9 @@ func rewriteValueWasm_OpLeq8U(v *Value) bool {
                v.reset(OpWasmI64LeU)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1207,10 +1184,9 @@ func rewriteValueWasm_OpLess16(v *Value) bool {
                v.reset(OpWasmI64LtS)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1227,10 +1203,9 @@ func rewriteValueWasm_OpLess16U(v *Value) bool {
                v.reset(OpWasmI64LtU)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1247,10 +1222,9 @@ func rewriteValueWasm_OpLess32(v *Value) bool {
                v.reset(OpWasmI64LtS)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1267,10 +1241,9 @@ func rewriteValueWasm_OpLess32U(v *Value) bool {
                v.reset(OpWasmI64LtU)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1287,10 +1260,9 @@ func rewriteValueWasm_OpLess8(v *Value) bool {
                v.reset(OpWasmI64LtS)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1307,10 +1279,9 @@ func rewriteValueWasm_OpLess8U(v *Value) bool {
                v.reset(OpWasmI64LtU)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1328,8 +1299,7 @@ func rewriteValueWasm_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpWasmF32Load)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1343,8 +1313,7 @@ func rewriteValueWasm_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpWasmF64Load)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1358,8 +1327,7 @@ func rewriteValueWasm_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Load)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1373,8 +1341,7 @@ func rewriteValueWasm_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Load32U)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1388,8 +1355,7 @@ func rewriteValueWasm_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Load32S)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1403,8 +1369,7 @@ func rewriteValueWasm_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Load16U)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1418,8 +1383,7 @@ func rewriteValueWasm_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Load16S)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1433,8 +1397,7 @@ func rewriteValueWasm_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Load8U)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -1448,8 +1411,7 @@ func rewriteValueWasm_OpLoad(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Load8S)
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -1480,10 +1442,9 @@ func rewriteValueWasm_OpLsh16x16(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1500,10 +1461,9 @@ func rewriteValueWasm_OpLsh16x32(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1520,10 +1480,9 @@ func rewriteValueWasm_OpLsh16x8(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1540,10 +1499,9 @@ func rewriteValueWasm_OpLsh32x16(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1560,10 +1518,9 @@ func rewriteValueWasm_OpLsh32x32(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1580,10 +1537,9 @@ func rewriteValueWasm_OpLsh32x8(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1600,10 +1556,9 @@ func rewriteValueWasm_OpLsh64x16(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1620,10 +1575,9 @@ func rewriteValueWasm_OpLsh64x32(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1642,8 +1596,7 @@ func rewriteValueWasm_OpLsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Shl)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Lsh64x64 x (I64Const [c]))
@@ -1659,10 +1612,9 @@ func rewriteValueWasm_OpLsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Shl)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = c
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh64x64 x (I64Const [c]))
@@ -1687,18 +1639,14 @@ func rewriteValueWasm_OpLsh64x64(v *Value) bool {
                y := v_1
                v.reset(OpWasmSelect)
                v0 := b.NewValue0(v.Pos, OpWasmI64Shl, typ.Int64)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64LtU, typ.Bool)
-               v2.AddArg(y)
                v3 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v3.AuxInt = 64
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(y, v3)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -1715,10 +1663,9 @@ func rewriteValueWasm_OpLsh64x8(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1735,10 +1682,9 @@ func rewriteValueWasm_OpLsh8x16(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1755,10 +1701,9 @@ func rewriteValueWasm_OpLsh8x32(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1775,10 +1720,9 @@ func rewriteValueWasm_OpLsh8x8(v *Value) bool {
                y := v_1
                v.reset(OpLsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -1795,10 +1739,9 @@ func rewriteValueWasm_OpMod16(v *Value) bool {
                v.reset(OpWasmI64RemS)
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1815,10 +1758,9 @@ func rewriteValueWasm_OpMod16u(v *Value) bool {
                v.reset(OpWasmI64RemU)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1835,10 +1777,9 @@ func rewriteValueWasm_OpMod32(v *Value) bool {
                v.reset(OpWasmI64RemS)
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1855,10 +1796,9 @@ func rewriteValueWasm_OpMod32u(v *Value) bool {
                v.reset(OpWasmI64RemU)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1875,10 +1815,9 @@ func rewriteValueWasm_OpMod8(v *Value) bool {
                v.reset(OpWasmI64RemS)
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1895,10 +1834,9 @@ func rewriteValueWasm_OpMod8u(v *Value) bool {
                v.reset(OpWasmI64RemU)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -1930,12 +1868,9 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpWasmI64Store8)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpWasmI64Load8U, typ.UInt8)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [2] dst src mem)
@@ -1948,12 +1883,9 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpWasmI64Store16)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpWasmI64Load16U, typ.UInt16)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [4] dst src mem)
@@ -1966,12 +1898,9 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpWasmI64Store32)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpWasmI64Load32U, typ.UInt32)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [8] dst src mem)
@@ -1984,12 +1913,9 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                src := v_1
                mem := v_2
                v.reset(OpWasmI64Store)
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpWasmI64Load, typ.UInt64)
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v0.AddArg2(src, mem)
+               v.AddArg3(dst, v0, mem)
                return true
        }
        // match: (Move [16] dst src mem)
@@ -2003,20 +1929,14 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpWasmI64Store)
                v.AuxInt = 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpWasmI64Load, typ.UInt64)
                v0.AuxInt = 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpWasmI64Load, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [3] dst src mem)
@@ -2030,20 +1950,14 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpWasmI64Store8)
                v.AuxInt = 2
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpWasmI64Load8U, typ.UInt8)
                v0.AuxInt = 2
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store16, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpWasmI64Load16U, typ.UInt16)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [5] dst src mem)
@@ -2057,20 +1971,14 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpWasmI64Store8)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpWasmI64Load8U, typ.UInt8)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store32, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpWasmI64Load32U, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [6] dst src mem)
@@ -2084,20 +1992,14 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpWasmI64Store16)
                v.AuxInt = 4
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpWasmI64Load16U, typ.UInt16)
                v0.AuxInt = 4
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store32, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpWasmI64Load32U, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [7] dst src mem)
@@ -2111,20 +2013,14 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                mem := v_2
                v.reset(OpWasmI64Store32)
                v.AuxInt = 3
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpWasmI64Load32U, typ.UInt32)
                v0.AuxInt = 3
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store32, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpWasmI64Load32U, typ.UInt32)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -2140,20 +2036,14 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                }
                v.reset(OpWasmI64Store)
                v.AuxInt = s - 8
-               v.AddArg(dst)
                v0 := b.NewValue0(v.Pos, OpWasmI64Load, typ.UInt64)
                v0.AuxInt = s - 8
-               v0.AddArg(src)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(src, mem)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
-               v1.AddArg(dst)
                v2 := b.NewValue0(v.Pos, OpWasmI64Load, typ.UInt64)
-               v2.AddArg(src)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v2.AddArg2(src, mem)
+               v1.AddArg3(dst, v2, mem)
+               v.AddArg3(dst, v0, v1)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -2172,19 +2062,14 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, dst.Type)
                v0.AuxInt = s % 16
                v0.AddArg(dst)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, src.Type)
                v1.AuxInt = s % 16
                v1.AddArg(src)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
-               v2.AddArg(dst)
                v3 := b.NewValue0(v.Pos, OpWasmI64Load, typ.UInt64)
-               v3.AddArg(src)
-               v3.AddArg(mem)
-               v2.AddArg(v3)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v3.AddArg2(src, mem)
+               v2.AddArg3(dst, v3, mem)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -2203,28 +2088,20 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, dst.Type)
                v0.AuxInt = s % 16
                v0.AddArg(dst)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpOffPtr, src.Type)
                v1.AuxInt = s % 16
                v1.AddArg(src)
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
                v2.AuxInt = 8
-               v2.AddArg(dst)
                v3 := b.NewValue0(v.Pos, OpWasmI64Load, typ.UInt64)
                v3.AuxInt = 8
-               v3.AddArg(src)
-               v3.AddArg(mem)
-               v2.AddArg(v3)
+               v3.AddArg2(src, mem)
                v4 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
-               v4.AddArg(dst)
                v5 := b.NewValue0(v.Pos, OpWasmI64Load, typ.UInt64)
-               v5.AddArg(src)
-               v5.AddArg(mem)
-               v4.AddArg(v5)
-               v4.AddArg(mem)
-               v2.AddArg(v4)
-               v.AddArg(v2)
+               v5.AddArg2(src, mem)
+               v4.AddArg3(dst, v5, mem)
+               v2.AddArg3(dst, v3, v4)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Move [s] dst src mem)
@@ -2240,9 +2117,7 @@ func rewriteValueWasm_OpMove(v *Value) bool {
                }
                v.reset(OpWasmLoweredMove)
                v.AuxInt = s / 8
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        return false
@@ -2258,8 +2133,7 @@ func rewriteValueWasm_OpNeg16(v *Value) bool {
                v.reset(OpWasmI64Sub)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -2274,8 +2148,7 @@ func rewriteValueWasm_OpNeg32(v *Value) bool {
                v.reset(OpWasmI64Sub)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -2290,8 +2163,7 @@ func rewriteValueWasm_OpNeg64(v *Value) bool {
                v.reset(OpWasmI64Sub)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -2306,8 +2178,7 @@ func rewriteValueWasm_OpNeg8(v *Value) bool {
                v.reset(OpWasmI64Sub)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -2324,10 +2195,9 @@ func rewriteValueWasm_OpNeq16(v *Value) bool {
                v.reset(OpWasmI64Ne)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2344,10 +2214,9 @@ func rewriteValueWasm_OpNeq32(v *Value) bool {
                v.reset(OpWasmI64Ne)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2364,10 +2233,9 @@ func rewriteValueWasm_OpNeq8(v *Value) bool {
                v.reset(OpWasmI64Ne)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2432,17 +2300,14 @@ func rewriteValueWasm_OpRotateLeft16(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr16)
                v0 := b.NewValue0(v.Pos, OpLsh16x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = c & 15
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh16Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v3.AuxInt = -c & 15
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -2463,17 +2328,14 @@ func rewriteValueWasm_OpRotateLeft8(v *Value) bool {
                c := v_1.AuxInt
                v.reset(OpOr8)
                v0 := b.NewValue0(v.Pos, OpLsh8x64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = c & 7
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpRsh8Ux64, t)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v3.AuxInt = -c & 7
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(x, v3)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -2493,10 +2355,9 @@ func rewriteValueWasm_OpRsh16Ux16(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2515,10 +2376,9 @@ func rewriteValueWasm_OpRsh16Ux32(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2537,8 +2397,7 @@ func rewriteValueWasm_OpRsh16Ux64(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -2557,10 +2416,9 @@ func rewriteValueWasm_OpRsh16Ux8(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2579,10 +2437,9 @@ func rewriteValueWasm_OpRsh16x16(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2601,10 +2458,9 @@ func rewriteValueWasm_OpRsh16x32(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2623,8 +2479,7 @@ func rewriteValueWasm_OpRsh16x64(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -2643,10 +2498,9 @@ func rewriteValueWasm_OpRsh16x8(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt16to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2665,10 +2519,9 @@ func rewriteValueWasm_OpRsh32Ux16(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2687,10 +2540,9 @@ func rewriteValueWasm_OpRsh32Ux32(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2709,8 +2561,7 @@ func rewriteValueWasm_OpRsh32Ux64(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -2729,10 +2580,9 @@ func rewriteValueWasm_OpRsh32Ux8(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2751,10 +2601,9 @@ func rewriteValueWasm_OpRsh32x16(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2773,10 +2622,9 @@ func rewriteValueWasm_OpRsh32x32(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2795,8 +2643,7 @@ func rewriteValueWasm_OpRsh32x64(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -2815,10 +2662,9 @@ func rewriteValueWasm_OpRsh32x8(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2835,10 +2681,9 @@ func rewriteValueWasm_OpRsh64Ux16(v *Value) bool {
                y := v_1
                v.reset(OpRsh64Ux64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2855,10 +2700,9 @@ func rewriteValueWasm_OpRsh64Ux32(v *Value) bool {
                y := v_1
                v.reset(OpRsh64Ux64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2877,8 +2721,7 @@ func rewriteValueWasm_OpRsh64Ux64(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64ShrU)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64Ux64 x (I64Const [c]))
@@ -2894,10 +2737,9 @@ func rewriteValueWasm_OpRsh64Ux64(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64ShrU)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = c
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64Ux64 x (I64Const [c]))
@@ -2922,18 +2764,14 @@ func rewriteValueWasm_OpRsh64Ux64(v *Value) bool {
                y := v_1
                v.reset(OpWasmSelect)
                v0 := b.NewValue0(v.Pos, OpWasmI64ShrU, typ.Int64)
-               v0.AddArg(x)
-               v0.AddArg(y)
-               v.AddArg(v0)
+               v0.AddArg2(x, y)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64LtU, typ.Bool)
-               v2.AddArg(y)
                v3 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v3.AuxInt = 64
-               v2.AddArg(v3)
-               v.AddArg(v2)
+               v2.AddArg2(y, v3)
+               v.AddArg3(v0, v1, v2)
                return true
        }
 }
@@ -2950,10 +2788,9 @@ func rewriteValueWasm_OpRsh64Ux8(v *Value) bool {
                y := v_1
                v.reset(OpRsh64Ux64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2970,10 +2807,9 @@ func rewriteValueWasm_OpRsh64x16(v *Value) bool {
                y := v_1
                v.reset(OpRsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -2990,10 +2826,9 @@ func rewriteValueWasm_OpRsh64x32(v *Value) bool {
                y := v_1
                v.reset(OpRsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3012,8 +2847,7 @@ func rewriteValueWasm_OpRsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64ShrS)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Rsh64x64 x (I64Const [c]))
@@ -3029,10 +2863,9 @@ func rewriteValueWasm_OpRsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64ShrS)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = c
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x64 x (I64Const [c]))
@@ -3048,10 +2881,9 @@ func rewriteValueWasm_OpRsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64ShrS)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 63
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x64 x y)
@@ -3060,19 +2892,15 @@ func rewriteValueWasm_OpRsh64x64(v *Value) bool {
                x := v_0
                y := v_1
                v.reset(OpWasmI64ShrS)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmSelect, typ.Int64)
-               v0.AddArg(y)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 63
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64LtU, typ.Bool)
-               v2.AddArg(y)
                v3 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v3.AuxInt = 64
-               v2.AddArg(v3)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v2.AddArg2(y, v3)
+               v0.AddArg3(y, v1, v2)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3089,10 +2917,9 @@ func rewriteValueWasm_OpRsh64x8(v *Value) bool {
                y := v_1
                v.reset(OpRsh64x64)
                v.AuxInt = c
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(y)
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -3111,10 +2938,9 @@ func rewriteValueWasm_OpRsh8Ux16(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3133,10 +2959,9 @@ func rewriteValueWasm_OpRsh8Ux32(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3155,8 +2980,7 @@ func rewriteValueWasm_OpRsh8Ux64(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -3175,10 +2999,9 @@ func rewriteValueWasm_OpRsh8Ux8(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3197,10 +3020,9 @@ func rewriteValueWasm_OpRsh8x16(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3219,10 +3041,9 @@ func rewriteValueWasm_OpRsh8x32(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3241,8 +3062,7 @@ func rewriteValueWasm_OpRsh8x64(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(y)
+               v.AddArg2(v0, y)
                return true
        }
 }
@@ -3261,10 +3081,9 @@ func rewriteValueWasm_OpRsh8x8(v *Value) bool {
                v.AuxInt = c
                v0 := b.NewValue0(v.Pos, OpSignExt8to64, typ.Int64)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -3303,14 +3122,12 @@ func rewriteValueWasm_OpSignExt16to32(v *Value) bool {
                x := v_0
                v.reset(OpWasmI64ShrS)
                v0 := b.NewValue0(v.Pos, OpWasmI64Shl, typ.Int64)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 48
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 48
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3349,14 +3166,12 @@ func rewriteValueWasm_OpSignExt16to64(v *Value) bool {
                x := v_0
                v.reset(OpWasmI64ShrS)
                v0 := b.NewValue0(v.Pos, OpWasmI64Shl, typ.Int64)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 48
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 48
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3395,14 +3210,12 @@ func rewriteValueWasm_OpSignExt32to64(v *Value) bool {
                x := v_0
                v.reset(OpWasmI64ShrS)
                v0 := b.NewValue0(v.Pos, OpWasmI64Shl, typ.Int64)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 32
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 32
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3441,14 +3254,12 @@ func rewriteValueWasm_OpSignExt8to16(v *Value) bool {
                x := v_0
                v.reset(OpWasmI64ShrS)
                v0 := b.NewValue0(v.Pos, OpWasmI64Shl, typ.Int64)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 56
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 56
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3487,14 +3298,12 @@ func rewriteValueWasm_OpSignExt8to32(v *Value) bool {
                x := v_0
                v.reset(OpWasmI64ShrS)
                v0 := b.NewValue0(v.Pos, OpWasmI64Shl, typ.Int64)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 56
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 56
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3533,14 +3342,12 @@ func rewriteValueWasm_OpSignExt8to64(v *Value) bool {
                x := v_0
                v.reset(OpWasmI64ShrS)
                v0 := b.NewValue0(v.Pos, OpWasmI64Shl, typ.Int64)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 56
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 56
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3556,12 +3363,10 @@ func rewriteValueWasm_OpSlicemask(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpWasmI64Sub, typ.Int64)
                v1 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v1.AuxInt = 0
-               v0.AddArg(v1)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(v1, x)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 63
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -3581,9 +3386,7 @@ func rewriteValueWasm_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpWasmF64Store)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -3598,9 +3401,7 @@ func rewriteValueWasm_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpWasmF32Store)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -3615,9 +3416,7 @@ func rewriteValueWasm_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Store)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -3632,9 +3431,7 @@ func rewriteValueWasm_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Store32)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -3649,9 +3446,7 @@ func rewriteValueWasm_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Store16)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        // match: (Store {t} ptr val mem)
@@ -3666,9 +3461,7 @@ func rewriteValueWasm_OpStore(v *Value) bool {
                        break
                }
                v.reset(OpWasmI64Store8)
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -3702,10 +3495,9 @@ func rewriteValueWasm_OpWasmF64Add(v *Value) bool {
                x := v_0.AuxInt
                y := v_1
                v.reset(OpWasmF64Add)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpWasmF64Const, typ.Float64)
                v0.AuxInt = x
-               v.AddArg(v0)
+               v.AddArg2(y, v0)
                return true
        }
        return false
@@ -3739,10 +3531,9 @@ func rewriteValueWasm_OpWasmF64Mul(v *Value) bool {
                x := v_0.AuxInt
                y := v_1
                v.reset(OpWasmF64Mul)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpWasmF64Const, typ.Float64)
                v0.AuxInt = x
-               v.AddArg(v0)
+               v.AddArg2(y, v0)
                return true
        }
        return false
@@ -3776,10 +3567,9 @@ func rewriteValueWasm_OpWasmI64Add(v *Value) bool {
                x := v_0.AuxInt
                y := v_1
                v.reset(OpWasmI64Add)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = x
-               v.AddArg(v0)
+               v.AddArg2(y, v0)
                return true
        }
        // match: (I64Add x (I64Const [y]))
@@ -3862,10 +3652,9 @@ func rewriteValueWasm_OpWasmI64And(v *Value) bool {
                x := v_0.AuxInt
                y := v_1
                v.reset(OpWasmI64And)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = x
-               v.AddArg(v0)
+               v.AddArg2(y, v0)
                return true
        }
        return false
@@ -3922,10 +3711,9 @@ func rewriteValueWasm_OpWasmI64Eq(v *Value) bool {
                x := v_0.AuxInt
                y := v_1
                v.reset(OpWasmI64Eq)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = x
-               v.AddArg(v0)
+               v.AddArg2(y, v0)
                return true
        }
        // match: (I64Eq x (I64Const [0]))
@@ -3981,8 +3769,7 @@ func rewriteValueWasm_OpWasmI64Load(v *Value) bool {
                }
                v.reset(OpWasmI64Load)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (I64Load [off] (LoweredAddr {sym} [off2] (SB)) _)
@@ -4024,8 +3811,7 @@ func rewriteValueWasm_OpWasmI64Load16S(v *Value) bool {
                }
                v.reset(OpWasmI64Load16S)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -4051,8 +3837,7 @@ func rewriteValueWasm_OpWasmI64Load16U(v *Value) bool {
                }
                v.reset(OpWasmI64Load16U)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (I64Load16U [off] (LoweredAddr {sym} [off2] (SB)) _)
@@ -4094,8 +3879,7 @@ func rewriteValueWasm_OpWasmI64Load32S(v *Value) bool {
                }
                v.reset(OpWasmI64Load32S)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -4121,8 +3905,7 @@ func rewriteValueWasm_OpWasmI64Load32U(v *Value) bool {
                }
                v.reset(OpWasmI64Load32U)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (I64Load32U [off] (LoweredAddr {sym} [off2] (SB)) _)
@@ -4164,8 +3947,7 @@ func rewriteValueWasm_OpWasmI64Load8S(v *Value) bool {
                }
                v.reset(OpWasmI64Load8S)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        return false
@@ -4189,8 +3971,7 @@ func rewriteValueWasm_OpWasmI64Load8U(v *Value) bool {
                }
                v.reset(OpWasmI64Load8U)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(mem)
+               v.AddArg2(ptr, mem)
                return true
        }
        // match: (I64Load8U [off] (LoweredAddr {sym} [off2] (SB)) _)
@@ -4242,10 +4023,9 @@ func rewriteValueWasm_OpWasmI64Mul(v *Value) bool {
                x := v_0.AuxInt
                y := v_1
                v.reset(OpWasmI64Mul)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = x
-               v.AddArg(v0)
+               v.AddArg2(y, v0)
                return true
        }
        return false
@@ -4302,10 +4082,9 @@ func rewriteValueWasm_OpWasmI64Ne(v *Value) bool {
                x := v_0.AuxInt
                y := v_1
                v.reset(OpWasmI64Ne)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = x
-               v.AddArg(v0)
+               v.AddArg2(y, v0)
                return true
        }
        // match: (I64Ne x (I64Const [0]))
@@ -4352,10 +4131,9 @@ func rewriteValueWasm_OpWasmI64Or(v *Value) bool {
                x := v_0.AuxInt
                y := v_1
                v.reset(OpWasmI64Or)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = x
-               v.AddArg(v0)
+               v.AddArg2(y, v0)
                return true
        }
        return false
@@ -4441,9 +4219,7 @@ func rewriteValueWasm_OpWasmI64Store(v *Value) bool {
                }
                v.reset(OpWasmI64Store)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -4469,9 +4245,7 @@ func rewriteValueWasm_OpWasmI64Store16(v *Value) bool {
                }
                v.reset(OpWasmI64Store16)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -4497,9 +4271,7 @@ func rewriteValueWasm_OpWasmI64Store32(v *Value) bool {
                }
                v.reset(OpWasmI64Store32)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -4525,9 +4297,7 @@ func rewriteValueWasm_OpWasmI64Store8(v *Value) bool {
                }
                v.reset(OpWasmI64Store8)
                v.AuxInt = off + off2
-               v.AddArg(ptr)
-               v.AddArg(val)
-               v.AddArg(mem)
+               v.AddArg3(ptr, val, mem)
                return true
        }
        return false
@@ -4561,10 +4331,9 @@ func rewriteValueWasm_OpWasmI64Xor(v *Value) bool {
                x := v_0.AuxInt
                y := v_1
                v.reset(OpWasmI64Xor)
-               v.AddArg(y)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = x
-               v.AddArg(v0)
+               v.AddArg2(y, v0)
                return true
        }
        return false
@@ -4595,11 +4364,9 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                destptr := v_0
                mem := v_1
                v.reset(OpWasmI64Store8)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(destptr, v0, mem)
                return true
        }
        // match: (Zero [2] destptr mem)
@@ -4611,11 +4378,9 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                destptr := v_0
                mem := v_1
                v.reset(OpWasmI64Store16)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(destptr, v0, mem)
                return true
        }
        // match: (Zero [4] destptr mem)
@@ -4627,11 +4392,9 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                destptr := v_0
                mem := v_1
                v.reset(OpWasmI64Store32)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(destptr, v0, mem)
                return true
        }
        // match: (Zero [8] destptr mem)
@@ -4643,11 +4406,9 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                destptr := v_0
                mem := v_1
                v.reset(OpWasmI64Store)
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(mem)
+               v.AddArg3(destptr, v0, mem)
                return true
        }
        // match: (Zero [3] destptr mem)
@@ -4660,17 +4421,13 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpWasmI64Store8)
                v.AuxInt = 2
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store16, types.TypeMem)
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(destptr, v2, mem)
+               v.AddArg3(destptr, v0, v1)
                return true
        }
        // match: (Zero [5] destptr mem)
@@ -4683,17 +4440,13 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpWasmI64Store8)
                v.AuxInt = 4
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store32, types.TypeMem)
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(destptr, v2, mem)
+               v.AddArg3(destptr, v0, v1)
                return true
        }
        // match: (Zero [6] destptr mem)
@@ -4706,17 +4459,13 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpWasmI64Store16)
                v.AuxInt = 4
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store32, types.TypeMem)
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(destptr, v2, mem)
+               v.AddArg3(destptr, v0, v1)
                return true
        }
        // match: (Zero [7] destptr mem)
@@ -4729,17 +4478,13 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpWasmI64Store32)
                v.AuxInt = 3
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store32, types.TypeMem)
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(destptr, v2, mem)
+               v.AddArg3(destptr, v0, v1)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -4757,14 +4502,11 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, destptr.Type)
                v0.AuxInt = s % 8
                v0.AddArg(destptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(destptr, v2, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Zero [16] destptr mem)
@@ -4777,17 +4519,13 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpWasmI64Store)
                v.AuxInt = 8
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(destptr, v2, mem)
+               v.AddArg3(destptr, v0, v1)
                return true
        }
        // match: (Zero [24] destptr mem)
@@ -4800,24 +4538,18 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpWasmI64Store)
                v.AuxInt = 16
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
                v1.AuxInt = 8
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
-               v3.AddArg(destptr)
                v4 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(destptr, v4, mem)
+               v1.AddArg3(destptr, v2, v3)
+               v.AddArg3(destptr, v0, v1)
                return true
        }
        // match: (Zero [32] destptr mem)
@@ -4830,31 +4562,23 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                mem := v_1
                v.reset(OpWasmI64Store)
                v.AuxInt = 24
-               v.AddArg(destptr)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
                v1.AuxInt = 16
-               v1.AddArg(destptr)
                v2 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v2.AuxInt = 0
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
                v3.AuxInt = 8
-               v3.AddArg(destptr)
                v4 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v4.AuxInt = 0
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpWasmI64Store, types.TypeMem)
-               v5.AddArg(destptr)
                v6 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v6.AuxInt = 0
-               v5.AddArg(v6)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg3(destptr, v6, mem)
+               v3.AddArg3(destptr, v4, v5)
+               v1.AddArg3(destptr, v2, v3)
+               v.AddArg3(destptr, v0, v1)
                return true
        }
        // match: (Zero [s] destptr mem)
@@ -4869,8 +4593,7 @@ func rewriteValueWasm_OpZero(v *Value) bool {
                }
                v.reset(OpWasmLoweredZero)
                v.AuxInt = s / 8
-               v.AddArg(destptr)
-               v.AddArg(mem)
+               v.AddArg2(destptr, mem)
                return true
        }
        return false
@@ -4897,10 +4620,9 @@ func rewriteValueWasm_OpZeroExt16to32(v *Value) bool {
        for {
                x := v_0
                v.reset(OpWasmI64And)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0xffff
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -4926,10 +4648,9 @@ func rewriteValueWasm_OpZeroExt16to64(v *Value) bool {
        for {
                x := v_0
                v.reset(OpWasmI64And)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0xffff
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -4955,10 +4676,9 @@ func rewriteValueWasm_OpZeroExt32to64(v *Value) bool {
        for {
                x := v_0
                v.reset(OpWasmI64And)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0xffffffff
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -4984,10 +4704,9 @@ func rewriteValueWasm_OpZeroExt8to16(v *Value) bool {
        for {
                x := v_0
                v.reset(OpWasmI64And)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0xff
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -5013,10 +4732,9 @@ func rewriteValueWasm_OpZeroExt8to32(v *Value) bool {
        for {
                x := v_0
                v.reset(OpWasmI64And)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0xff
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
@@ -5042,10 +4760,9 @@ func rewriteValueWasm_OpZeroExt8to64(v *Value) bool {
        for {
                x := v_0
                v.reset(OpWasmI64And)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpWasmI64Const, typ.Int64)
                v0.AuxInt = 0xff
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
 }
index 9393cade620ecdab95665d517d681f363f849b6a..a031fca4add614a32cacae85df903c29569c593e 100644 (file)
@@ -116,16 +116,13 @@ func rewriteValuedec_OpLoad(v *Value) bool {
                }
                v.reset(OpComplexMake)
                v0 := b.NewValue0(v.Pos, OpLoad, typ.Float32)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(ptr, mem)
                v1 := b.NewValue0(v.Pos, OpLoad, typ.Float32)
                v2 := b.NewValue0(v.Pos, OpOffPtr, typ.Float32Ptr)
                v2.AuxInt = 4
                v2.AddArg(ptr)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(v2, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -140,16 +137,13 @@ func rewriteValuedec_OpLoad(v *Value) bool {
                }
                v.reset(OpComplexMake)
                v0 := b.NewValue0(v.Pos, OpLoad, typ.Float64)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(ptr, mem)
                v1 := b.NewValue0(v.Pos, OpLoad, typ.Float64)
                v2 := b.NewValue0(v.Pos, OpOffPtr, typ.Float64Ptr)
                v2.AuxInt = 8
                v2.AddArg(ptr)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(v2, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -164,16 +158,13 @@ func rewriteValuedec_OpLoad(v *Value) bool {
                }
                v.reset(OpStringMake)
                v0 := b.NewValue0(v.Pos, OpLoad, typ.BytePtr)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(ptr, mem)
                v1 := b.NewValue0(v.Pos, OpLoad, typ.Int)
                v2 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
                v2.AuxInt = config.PtrSize
                v2.AddArg(ptr)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(v2, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -188,23 +179,18 @@ func rewriteValuedec_OpLoad(v *Value) bool {
                }
                v.reset(OpSliceMake)
                v0 := b.NewValue0(v.Pos, OpLoad, t.Elem().PtrTo())
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(ptr, mem)
                v1 := b.NewValue0(v.Pos, OpLoad, typ.Int)
                v2 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
                v2.AuxInt = config.PtrSize
                v2.AddArg(ptr)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(v2, mem)
                v3 := b.NewValue0(v.Pos, OpLoad, typ.Int)
                v4 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
                v4.AuxInt = 2 * config.PtrSize
                v4.AddArg(ptr)
-               v3.AddArg(v4)
-               v3.AddArg(mem)
-               v.AddArg(v3)
+               v3.AddArg2(v4, mem)
+               v.AddArg3(v0, v1, v3)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -219,16 +205,13 @@ func rewriteValuedec_OpLoad(v *Value) bool {
                }
                v.reset(OpIMake)
                v0 := b.NewValue0(v.Pos, OpLoad, typ.Uintptr)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(ptr, mem)
                v1 := b.NewValue0(v.Pos, OpLoad, typ.BytePtr)
                v2 := b.NewValue0(v.Pos, OpOffPtr, typ.BytePtrPtr)
                v2.AuxInt = config.PtrSize
                v2.AddArg(ptr)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(v2, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        return false
@@ -310,14 +293,10 @@ func rewriteValuedec_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, typ.Float32Ptr)
                v0.AuxInt = 4
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(imag)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = typ.Float32
-               v1.AddArg(dst)
-               v1.AddArg(real)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(dst, real, mem)
+               v.AddArg3(v0, imag, v1)
                return true
        }
        // match: (Store {t} dst (ComplexMake real imag) mem)
@@ -340,14 +319,10 @@ func rewriteValuedec_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, typ.Float64Ptr)
                v0.AuxInt = 8
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(imag)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = typ.Float64
-               v1.AddArg(dst)
-               v1.AddArg(real)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(dst, real, mem)
+               v.AddArg3(v0, imag, v1)
                return true
        }
        // match: (Store dst (StringMake ptr len) mem)
@@ -365,14 +340,10 @@ func rewriteValuedec_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
                v0.AuxInt = config.PtrSize
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(len)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = typ.BytePtr
-               v1.AddArg(dst)
-               v1.AddArg(ptr)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(dst, ptr, mem)
+               v.AddArg3(v0, len, v1)
                return true
        }
        // match: (Store dst (SliceMake ptr len cap) mem)
@@ -391,22 +362,16 @@ func rewriteValuedec_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
                v0.AuxInt = 2 * config.PtrSize
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(cap)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = typ.Int
                v2 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
                v2.AuxInt = config.PtrSize
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(len)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = typ.BytePtr
-               v3.AddArg(dst)
-               v3.AddArg(ptr)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(dst, ptr, mem)
+               v1.AddArg3(v2, len, v3)
+               v.AddArg3(v0, cap, v1)
                return true
        }
        // match: (Store dst (IMake itab data) mem)
@@ -424,14 +389,10 @@ func rewriteValuedec_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, typ.BytePtrPtr)
                v0.AuxInt = config.PtrSize
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(data)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = typ.Uintptr
-               v1.AddArg(dst)
-               v1.AddArg(itab)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(dst, itab, mem)
+               v.AddArg3(v0, data, v1)
                return true
        }
        return false
index 96a23afd8da95221b7edf723417d1ecfb35a820b..3beaf8e99fa3af4072a00d42fc841f593f14e4fd 100644 (file)
@@ -133,31 +133,26 @@ func rewriteValuedec64_OpAdd64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAdd32withcarry, typ.Int32)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v4 := b.NewValue0(v.Pos, OpAdd32carry, types.NewTuple(typ.UInt32, types.TypeFlags))
                v5 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v6.AddArg(y)
-               v4.AddArg(v6)
+               v4.AddArg2(v5, v6)
                v3.AddArg(v4)
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg3(v1, v2, v3)
                v7 := b.NewValue0(v.Pos, OpSelect0, typ.UInt32)
                v8 := b.NewValue0(v.Pos, OpAdd32carry, types.NewTuple(typ.UInt32, types.TypeFlags))
                v9 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v9.AddArg(x)
-               v8.AddArg(v9)
                v10 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v10.AddArg(y)
-               v8.AddArg(v10)
+               v8.AddArg2(v9, v10)
                v7.AddArg(v8)
-               v.AddArg(v7)
+               v.AddArg2(v0, v7)
                return true
        }
 }
@@ -175,19 +170,16 @@ func rewriteValuedec64_OpAnd64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpAnd32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpAnd32, typ.UInt32)
                v4 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v4.AddArg(x)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v5.AddArg(y)
-               v3.AddArg(v5)
-               v.AddArg(v3)
+               v3.AddArg2(v4, v5)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -208,11 +200,10 @@ func rewriteValuedec64_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, typ.Int32)
                v0.AuxInt = off + 4
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, typ.UInt32)
                v1.AuxInt = off
                v1.Aux = n
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Arg {n} [off])
@@ -228,11 +219,10 @@ func rewriteValuedec64_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, typ.UInt32)
                v0.AuxInt = off + 4
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, typ.UInt32)
                v1.AuxInt = off
                v1.Aux = n
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Arg {n} [off])
@@ -248,11 +238,10 @@ func rewriteValuedec64_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, typ.Int32)
                v0.AuxInt = off
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, typ.UInt32)
                v1.AuxInt = off + 4
                v1.Aux = n
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Arg {n} [off])
@@ -268,11 +257,10 @@ func rewriteValuedec64_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, typ.UInt32)
                v0.AuxInt = off
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, typ.UInt32)
                v1.AuxInt = off + 4
                v1.Aux = n
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        return false
@@ -291,19 +279,17 @@ func rewriteValuedec64_OpBitLen64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v2 := b.NewValue0(v.Pos, OpBitLen32, typ.Int)
                v3 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v4 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v4.AddArg(x)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v6 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v6.AddArg(x)
                v5.AddArg(v6)
-               v3.AddArg(v5)
+               v3.AddArg2(v4, v5)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -320,12 +306,11 @@ func rewriteValuedec64_OpBswap64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v1.AddArg(x)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v2 := b.NewValue0(v.Pos, OpBswap32, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v3.AddArg(x)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -342,12 +327,11 @@ func rewriteValuedec64_OpCom64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v2 := b.NewValue0(v.Pos, OpCom32, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v3.AddArg(x)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -366,10 +350,9 @@ func rewriteValuedec64_OpConst64(v *Value) bool {
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpConst32, typ.Int32)
                v0.AuxInt = c >> 32
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v1.AuxInt = int64(int32(c))
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Const64 <t> [c])
@@ -384,10 +367,9 @@ func rewriteValuedec64_OpConst64(v *Value) bool {
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v0.AuxInt = c >> 32
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v1.AuxInt = int64(int32(c))
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        return false
@@ -406,7 +388,6 @@ func rewriteValuedec64_OpCtz64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v1.AddArg(x)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v2 := b.NewValue0(v.Pos, OpAnd32, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpCom32, typ.UInt32)
                v4 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
@@ -414,13 +395,12 @@ func rewriteValuedec64_OpCtz64(v *Value) bool {
                v5.AddArg(x)
                v4.AddArg(v5)
                v3.AddArg(v4)
-               v2.AddArg(v3)
                v6 := b.NewValue0(v.Pos, OpCtz32, typ.UInt32)
                v7 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v7.AddArg(x)
                v6.AddArg(v7)
-               v2.AddArg(v6)
-               v.AddArg(v2)
+               v2.AddArg2(v3, v6)
+               v.AddArg2(v0, v2)
                return true
        }
 }
@@ -438,19 +418,16 @@ func rewriteValuedec64_OpEq64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpEq32, typ.Bool)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpEq32, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v4.AddArg(x)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v5.AddArg(y)
-               v3.AddArg(v5)
-               v.AddArg(v3)
+               v3.AddArg2(v4, v5)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -501,29 +478,24 @@ func rewriteValuedec64_OpLeq64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpLess32, typ.Bool)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpAndB, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpEq32, typ.Bool)
                v5 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v3.AddArg(v4)
+               v4.AddArg2(v5, v6)
                v7 := b.NewValue0(v.Pos, OpLeq32U, typ.Bool)
                v8 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v8.AddArg(x)
-               v7.AddArg(v8)
                v9 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v9.AddArg(y)
-               v7.AddArg(v9)
-               v3.AddArg(v7)
-               v.AddArg(v3)
+               v7.AddArg2(v8, v9)
+               v3.AddArg2(v4, v7)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -541,29 +513,24 @@ func rewriteValuedec64_OpLeq64U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpLess32U, typ.Bool)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpAndB, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpEq32, typ.Bool)
                v5 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v3.AddArg(v4)
+               v4.AddArg2(v5, v6)
                v7 := b.NewValue0(v.Pos, OpLeq32U, typ.Bool)
                v8 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v8.AddArg(x)
-               v7.AddArg(v8)
                v9 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v9.AddArg(y)
-               v7.AddArg(v9)
-               v3.AddArg(v7)
-               v.AddArg(v3)
+               v7.AddArg2(v8, v9)
+               v3.AddArg2(v4, v7)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -581,29 +548,24 @@ func rewriteValuedec64_OpLess64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpLess32, typ.Bool)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpAndB, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpEq32, typ.Bool)
                v5 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v3.AddArg(v4)
+               v4.AddArg2(v5, v6)
                v7 := b.NewValue0(v.Pos, OpLess32U, typ.Bool)
                v8 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v8.AddArg(x)
-               v7.AddArg(v8)
                v9 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v9.AddArg(y)
-               v7.AddArg(v9)
-               v3.AddArg(v7)
-               v.AddArg(v3)
+               v7.AddArg2(v8, v9)
+               v3.AddArg2(v4, v7)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -621,29 +583,24 @@ func rewriteValuedec64_OpLess64U(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpLess32U, typ.Bool)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpAndB, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpEq32, typ.Bool)
                v5 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v6.AddArg(y)
-               v4.AddArg(v6)
-               v3.AddArg(v4)
+               v4.AddArg2(v5, v6)
                v7 := b.NewValue0(v.Pos, OpLess32U, typ.Bool)
                v8 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v8.AddArg(x)
-               v7.AddArg(v8)
                v9 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v9.AddArg(y)
-               v7.AddArg(v9)
-               v3.AddArg(v7)
-               v.AddArg(v3)
+               v7.AddArg2(v8, v9)
+               v3.AddArg2(v4, v7)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -668,13 +625,10 @@ func rewriteValuedec64_OpLoad(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, typ.Int32Ptr)
                v1.AuxInt = 4
                v1.AddArg(ptr)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(v1, mem)
                v2 := b.NewValue0(v.Pos, OpLoad, typ.UInt32)
-               v2.AddArg(ptr)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg2(ptr, mem)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -692,13 +646,10 @@ func rewriteValuedec64_OpLoad(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, typ.UInt32Ptr)
                v1.AuxInt = 4
                v1.AddArg(ptr)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(v1, mem)
                v2 := b.NewValue0(v.Pos, OpLoad, typ.UInt32)
-               v2.AddArg(ptr)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg2(ptr, mem)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -713,16 +664,13 @@ func rewriteValuedec64_OpLoad(v *Value) bool {
                }
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpLoad, typ.Int32)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(ptr, mem)
                v1 := b.NewValue0(v.Pos, OpLoad, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpOffPtr, typ.UInt32Ptr)
                v2.AuxInt = 4
                v2.AddArg(ptr)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(v2, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -737,16 +685,13 @@ func rewriteValuedec64_OpLoad(v *Value) bool {
                }
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpLoad, typ.UInt32)
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(ptr, mem)
                v1 := b.NewValue0(v.Pos, OpLoad, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpOffPtr, typ.UInt32Ptr)
                v2.AuxInt = 4
                v2.AddArg(ptr)
-               v1.AddArg(v2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(v2, mem)
+               v.AddArg2(v0, v1)
                return true
        }
        return false
@@ -791,8 +736,7 @@ func rewriteValuedec64_OpLsh16x64(v *Value) bool {
                }
                v.reset(OpLsh16x32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Lsh16x64 x (Int64Make hi lo))
@@ -809,13 +753,11 @@ func rewriteValuedec64_OpLsh16x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh16x32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -860,8 +802,7 @@ func rewriteValuedec64_OpLsh32x64(v *Value) bool {
                }
                v.reset(OpLsh32x32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Lsh32x64 x (Int64Make hi lo))
@@ -878,13 +819,11 @@ func rewriteValuedec64_OpLsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh32x32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -907,33 +846,24 @@ func rewriteValuedec64_OpLsh64x16(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpLsh32x16, typ.UInt32)
-               v2.AddArg(hi)
-               v2.AddArg(s)
-               v1.AddArg(v2)
+               v2.AddArg2(hi, s)
                v3 := b.NewValue0(v.Pos, OpRsh32Ux16, typ.UInt32)
-               v3.AddArg(lo)
                v4 := b.NewValue0(v.Pos, OpSub16, typ.UInt16)
                v5 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                v5.AuxInt = 32
-               v4.AddArg(v5)
-               v4.AddArg(s)
-               v3.AddArg(v4)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v4.AddArg2(v5, s)
+               v3.AddArg2(lo, v4)
+               v1.AddArg2(v2, v3)
                v6 := b.NewValue0(v.Pos, OpLsh32x16, typ.UInt32)
-               v6.AddArg(lo)
                v7 := b.NewValue0(v.Pos, OpSub16, typ.UInt16)
-               v7.AddArg(s)
                v8 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                v8.AuxInt = 32
-               v7.AddArg(v8)
-               v6.AddArg(v7)
-               v0.AddArg(v6)
-               v.AddArg(v0)
+               v7.AddArg2(s, v8)
+               v6.AddArg2(lo, v7)
+               v0.AddArg2(v1, v6)
                v9 := b.NewValue0(v.Pos, OpLsh32x16, typ.UInt32)
-               v9.AddArg(lo)
-               v9.AddArg(s)
-               v.AddArg(v9)
+               v9.AddArg2(lo, s)
+               v.AddArg2(v0, v9)
                return true
        }
        return false
@@ -956,33 +886,24 @@ func rewriteValuedec64_OpLsh64x32(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpLsh32x32, typ.UInt32)
-               v2.AddArg(hi)
-               v2.AddArg(s)
-               v1.AddArg(v2)
+               v2.AddArg2(hi, s)
                v3 := b.NewValue0(v.Pos, OpRsh32Ux32, typ.UInt32)
-               v3.AddArg(lo)
                v4 := b.NewValue0(v.Pos, OpSub32, typ.UInt32)
                v5 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v5.AuxInt = 32
-               v4.AddArg(v5)
-               v4.AddArg(s)
-               v3.AddArg(v4)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v4.AddArg2(v5, s)
+               v3.AddArg2(lo, v4)
+               v1.AddArg2(v2, v3)
                v6 := b.NewValue0(v.Pos, OpLsh32x32, typ.UInt32)
-               v6.AddArg(lo)
                v7 := b.NewValue0(v.Pos, OpSub32, typ.UInt32)
-               v7.AddArg(s)
                v8 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v8.AuxInt = 32
-               v7.AddArg(v8)
-               v6.AddArg(v7)
-               v0.AddArg(v6)
-               v.AddArg(v0)
+               v7.AddArg2(s, v8)
+               v6.AddArg2(lo, v7)
+               v0.AddArg2(v1, v6)
                v9 := b.NewValue0(v.Pos, OpLsh32x32, typ.UInt32)
-               v9.AddArg(lo)
-               v9.AddArg(s)
-               v.AddArg(v9)
+               v9.AddArg2(lo, s)
+               v.AddArg2(v0, v9)
                return true
        }
        return false
@@ -1027,8 +948,7 @@ func rewriteValuedec64_OpLsh64x64(v *Value) bool {
                }
                v.reset(OpLsh64x32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Lsh64x64 x (Int64Make hi lo))
@@ -1045,13 +965,11 @@ func rewriteValuedec64_OpLsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh64x32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -1074,33 +992,24 @@ func rewriteValuedec64_OpLsh64x8(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpLsh32x8, typ.UInt32)
-               v2.AddArg(hi)
-               v2.AddArg(s)
-               v1.AddArg(v2)
+               v2.AddArg2(hi, s)
                v3 := b.NewValue0(v.Pos, OpRsh32Ux8, typ.UInt32)
-               v3.AddArg(lo)
                v4 := b.NewValue0(v.Pos, OpSub8, typ.UInt8)
                v5 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                v5.AuxInt = 32
-               v4.AddArg(v5)
-               v4.AddArg(s)
-               v3.AddArg(v4)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v4.AddArg2(v5, s)
+               v3.AddArg2(lo, v4)
+               v1.AddArg2(v2, v3)
                v6 := b.NewValue0(v.Pos, OpLsh32x8, typ.UInt32)
-               v6.AddArg(lo)
                v7 := b.NewValue0(v.Pos, OpSub8, typ.UInt8)
-               v7.AddArg(s)
                v8 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                v8.AuxInt = 32
-               v7.AddArg(v8)
-               v6.AddArg(v7)
-               v0.AddArg(v6)
-               v.AddArg(v0)
+               v7.AddArg2(s, v8)
+               v6.AddArg2(lo, v7)
+               v0.AddArg2(v1, v6)
                v9 := b.NewValue0(v.Pos, OpLsh32x8, typ.UInt32)
-               v9.AddArg(lo)
-               v9.AddArg(s)
-               v.AddArg(v9)
+               v9.AddArg2(lo, s)
+               v.AddArg2(v0, v9)
                return true
        }
        return false
@@ -1145,8 +1054,7 @@ func rewriteValuedec64_OpLsh8x64(v *Value) bool {
                }
                v.reset(OpLsh8x32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Lsh8x64 x (Int64Make hi lo))
@@ -1163,13 +1071,11 @@ func rewriteValuedec64_OpLsh8x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh8x32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -1189,42 +1095,35 @@ func rewriteValuedec64_OpMul64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v2.AddArg(x)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v3.AddArg(y)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v1.AddArg2(v2, v3)
                v4 := b.NewValue0(v.Pos, OpAdd32, typ.UInt32)
                v5 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                v6 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v6.AddArg(x)
-               v5.AddArg(v6)
                v7 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v7.AddArg(y)
-               v5.AddArg(v7)
-               v4.AddArg(v5)
+               v5.AddArg2(v6, v7)
                v8 := b.NewValue0(v.Pos, OpSelect0, typ.UInt32)
                v9 := b.NewValue0(v.Pos, OpMul32uhilo, types.NewTuple(typ.UInt32, typ.UInt32))
                v10 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v10.AddArg(x)
-               v9.AddArg(v10)
                v11 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v11.AddArg(y)
-               v9.AddArg(v11)
+               v9.AddArg2(v10, v11)
                v8.AddArg(v9)
-               v4.AddArg(v8)
-               v0.AddArg(v4)
-               v.AddArg(v0)
+               v4.AddArg2(v5, v8)
+               v0.AddArg2(v1, v4)
                v12 := b.NewValue0(v.Pos, OpSelect1, typ.UInt32)
                v13 := b.NewValue0(v.Pos, OpMul32uhilo, types.NewTuple(typ.UInt32, typ.UInt32))
                v14 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v14.AddArg(x)
-               v13.AddArg(v14)
                v15 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v15.AddArg(y)
-               v13.AddArg(v15)
+               v13.AddArg2(v14, v15)
                v12.AddArg(v13)
-               v.AddArg(v12)
+               v.AddArg2(v0, v12)
                return true
        }
 }
@@ -1239,8 +1138,7 @@ func rewriteValuedec64_OpNeg64(v *Value) bool {
                v.reset(OpSub64)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -1258,19 +1156,16 @@ func rewriteValuedec64_OpNeq64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpNeq32, typ.Bool)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpNeq32, typ.Bool)
                v4 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v4.AddArg(x)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v5.AddArg(y)
-               v3.AddArg(v5)
-               v.AddArg(v3)
+               v3.AddArg2(v4, v5)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -1288,19 +1183,16 @@ func rewriteValuedec64_OpOr64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v4 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v4.AddArg(x)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v5.AddArg(y)
-               v3.AddArg(v5)
-               v.AddArg(v3)
+               v3.AddArg2(v4, v5)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -1344,8 +1236,7 @@ func rewriteValuedec64_OpRsh16Ux64(v *Value) bool {
                }
                v.reset(OpRsh16Ux32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Rsh16Ux64 x (Int64Make hi lo))
@@ -1362,13 +1253,11 @@ func rewriteValuedec64_OpRsh16Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh16Ux32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -1416,8 +1305,7 @@ func rewriteValuedec64_OpRsh16x64(v *Value) bool {
                }
                v.reset(OpRsh16x32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Rsh16x64 x (Int64Make hi lo))
@@ -1434,13 +1322,11 @@ func rewriteValuedec64_OpRsh16x64(v *Value) bool {
                        break
                }
                v.reset(OpRsh16x32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -1485,8 +1371,7 @@ func rewriteValuedec64_OpRsh32Ux64(v *Value) bool {
                }
                v.reset(OpRsh32Ux32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Rsh32Ux64 x (Int64Make hi lo))
@@ -1503,13 +1388,11 @@ func rewriteValuedec64_OpRsh32Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh32Ux32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -1555,8 +1438,7 @@ func rewriteValuedec64_OpRsh32x64(v *Value) bool {
                }
                v.reset(OpRsh32x32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Rsh32x64 x (Int64Make hi lo))
@@ -1573,13 +1455,11 @@ func rewriteValuedec64_OpRsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpRsh32x32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -1600,35 +1480,26 @@ func rewriteValuedec64_OpRsh64Ux16(v *Value) bool {
                s := v_1
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpRsh32Ux16, typ.UInt32)
-               v0.AddArg(hi)
-               v0.AddArg(s)
-               v.AddArg(v0)
+               v0.AddArg2(hi, s)
                v1 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpRsh32Ux16, typ.UInt32)
-               v3.AddArg(lo)
-               v3.AddArg(s)
-               v2.AddArg(v3)
+               v3.AddArg2(lo, s)
                v4 := b.NewValue0(v.Pos, OpLsh32x16, typ.UInt32)
-               v4.AddArg(hi)
                v5 := b.NewValue0(v.Pos, OpSub16, typ.UInt16)
                v6 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                v6.AuxInt = 32
-               v5.AddArg(v6)
-               v5.AddArg(s)
-               v4.AddArg(v5)
-               v2.AddArg(v4)
-               v1.AddArg(v2)
+               v5.AddArg2(v6, s)
+               v4.AddArg2(hi, v5)
+               v2.AddArg2(v3, v4)
                v7 := b.NewValue0(v.Pos, OpRsh32Ux16, typ.UInt32)
-               v7.AddArg(hi)
                v8 := b.NewValue0(v.Pos, OpSub16, typ.UInt16)
-               v8.AddArg(s)
                v9 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                v9.AuxInt = 32
-               v8.AddArg(v9)
-               v7.AddArg(v8)
-               v1.AddArg(v7)
-               v.AddArg(v1)
+               v8.AddArg2(s, v9)
+               v7.AddArg2(hi, v8)
+               v1.AddArg2(v2, v7)
+               v.AddArg2(v0, v1)
                return true
        }
        return false
@@ -1649,35 +1520,26 @@ func rewriteValuedec64_OpRsh64Ux32(v *Value) bool {
                s := v_1
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpRsh32Ux32, typ.UInt32)
-               v0.AddArg(hi)
-               v0.AddArg(s)
-               v.AddArg(v0)
+               v0.AddArg2(hi, s)
                v1 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpRsh32Ux32, typ.UInt32)
-               v3.AddArg(lo)
-               v3.AddArg(s)
-               v2.AddArg(v3)
+               v3.AddArg2(lo, s)
                v4 := b.NewValue0(v.Pos, OpLsh32x32, typ.UInt32)
-               v4.AddArg(hi)
                v5 := b.NewValue0(v.Pos, OpSub32, typ.UInt32)
                v6 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v6.AuxInt = 32
-               v5.AddArg(v6)
-               v5.AddArg(s)
-               v4.AddArg(v5)
-               v2.AddArg(v4)
-               v1.AddArg(v2)
+               v5.AddArg2(v6, s)
+               v4.AddArg2(hi, v5)
+               v2.AddArg2(v3, v4)
                v7 := b.NewValue0(v.Pos, OpRsh32Ux32, typ.UInt32)
-               v7.AddArg(hi)
                v8 := b.NewValue0(v.Pos, OpSub32, typ.UInt32)
-               v8.AddArg(s)
                v9 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v9.AuxInt = 32
-               v8.AddArg(v9)
-               v7.AddArg(v8)
-               v1.AddArg(v7)
-               v.AddArg(v1)
+               v8.AddArg2(s, v9)
+               v7.AddArg2(hi, v8)
+               v1.AddArg2(v2, v7)
+               v.AddArg2(v0, v1)
                return true
        }
        return false
@@ -1722,8 +1584,7 @@ func rewriteValuedec64_OpRsh64Ux64(v *Value) bool {
                }
                v.reset(OpRsh64Ux32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Rsh64Ux64 x (Int64Make hi lo))
@@ -1740,13 +1601,11 @@ func rewriteValuedec64_OpRsh64Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh64Ux32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -1767,35 +1626,26 @@ func rewriteValuedec64_OpRsh64Ux8(v *Value) bool {
                s := v_1
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpRsh32Ux8, typ.UInt32)
-               v0.AddArg(hi)
-               v0.AddArg(s)
-               v.AddArg(v0)
+               v0.AddArg2(hi, s)
                v1 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpRsh32Ux8, typ.UInt32)
-               v3.AddArg(lo)
-               v3.AddArg(s)
-               v2.AddArg(v3)
+               v3.AddArg2(lo, s)
                v4 := b.NewValue0(v.Pos, OpLsh32x8, typ.UInt32)
-               v4.AddArg(hi)
                v5 := b.NewValue0(v.Pos, OpSub8, typ.UInt8)
                v6 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                v6.AuxInt = 32
-               v5.AddArg(v6)
-               v5.AddArg(s)
-               v4.AddArg(v5)
-               v2.AddArg(v4)
-               v1.AddArg(v2)
+               v5.AddArg2(v6, s)
+               v4.AddArg2(hi, v5)
+               v2.AddArg2(v3, v4)
                v7 := b.NewValue0(v.Pos, OpRsh32Ux8, typ.UInt32)
-               v7.AddArg(hi)
                v8 := b.NewValue0(v.Pos, OpSub8, typ.UInt8)
-               v8.AddArg(s)
                v9 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                v9.AuxInt = 32
-               v8.AddArg(v9)
-               v7.AddArg(v8)
-               v1.AddArg(v7)
-               v.AddArg(v1)
+               v8.AddArg2(s, v9)
+               v7.AddArg2(hi, v8)
+               v1.AddArg2(v2, v7)
+               v.AddArg2(v0, v1)
                return true
        }
        return false
@@ -1816,47 +1666,36 @@ func rewriteValuedec64_OpRsh64x16(v *Value) bool {
                s := v_1
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpRsh32x16, typ.UInt32)
-               v0.AddArg(hi)
-               v0.AddArg(s)
-               v.AddArg(v0)
+               v0.AddArg2(hi, s)
                v1 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpRsh32Ux16, typ.UInt32)
-               v3.AddArg(lo)
-               v3.AddArg(s)
-               v2.AddArg(v3)
+               v3.AddArg2(lo, s)
                v4 := b.NewValue0(v.Pos, OpLsh32x16, typ.UInt32)
-               v4.AddArg(hi)
                v5 := b.NewValue0(v.Pos, OpSub16, typ.UInt16)
                v6 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                v6.AuxInt = 32
-               v5.AddArg(v6)
-               v5.AddArg(s)
-               v4.AddArg(v5)
-               v2.AddArg(v4)
-               v1.AddArg(v2)
+               v5.AddArg2(v6, s)
+               v4.AddArg2(hi, v5)
+               v2.AddArg2(v3, v4)
                v7 := b.NewValue0(v.Pos, OpAnd32, typ.UInt32)
                v8 := b.NewValue0(v.Pos, OpRsh32x16, typ.UInt32)
-               v8.AddArg(hi)
                v9 := b.NewValue0(v.Pos, OpSub16, typ.UInt16)
-               v9.AddArg(s)
                v10 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                v10.AuxInt = 32
-               v9.AddArg(v10)
-               v8.AddArg(v9)
-               v7.AddArg(v8)
+               v9.AddArg2(s, v10)
+               v8.AddArg2(hi, v9)
                v11 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v12 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v13 := b.NewValue0(v.Pos, OpRsh16Ux32, typ.UInt16)
-               v13.AddArg(s)
                v14 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v14.AuxInt = 5
-               v13.AddArg(v14)
+               v13.AddArg2(s, v14)
                v12.AddArg(v13)
                v11.AddArg(v12)
-               v7.AddArg(v11)
-               v1.AddArg(v7)
-               v.AddArg(v1)
+               v7.AddArg2(v8, v11)
+               v1.AddArg2(v2, v7)
+               v.AddArg2(v0, v1)
                return true
        }
        return false
@@ -1877,45 +1716,34 @@ func rewriteValuedec64_OpRsh64x32(v *Value) bool {
                s := v_1
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpRsh32x32, typ.UInt32)
-               v0.AddArg(hi)
-               v0.AddArg(s)
-               v.AddArg(v0)
+               v0.AddArg2(hi, s)
                v1 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpRsh32Ux32, typ.UInt32)
-               v3.AddArg(lo)
-               v3.AddArg(s)
-               v2.AddArg(v3)
+               v3.AddArg2(lo, s)
                v4 := b.NewValue0(v.Pos, OpLsh32x32, typ.UInt32)
-               v4.AddArg(hi)
                v5 := b.NewValue0(v.Pos, OpSub32, typ.UInt32)
                v6 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v6.AuxInt = 32
-               v5.AddArg(v6)
-               v5.AddArg(s)
-               v4.AddArg(v5)
-               v2.AddArg(v4)
-               v1.AddArg(v2)
+               v5.AddArg2(v6, s)
+               v4.AddArg2(hi, v5)
+               v2.AddArg2(v3, v4)
                v7 := b.NewValue0(v.Pos, OpAnd32, typ.UInt32)
                v8 := b.NewValue0(v.Pos, OpRsh32x32, typ.UInt32)
-               v8.AddArg(hi)
                v9 := b.NewValue0(v.Pos, OpSub32, typ.UInt32)
-               v9.AddArg(s)
                v10 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v10.AuxInt = 32
-               v9.AddArg(v10)
-               v8.AddArg(v9)
-               v7.AddArg(v8)
+               v9.AddArg2(s, v10)
+               v8.AddArg2(hi, v9)
                v11 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v12 := b.NewValue0(v.Pos, OpRsh32Ux32, typ.UInt32)
-               v12.AddArg(s)
                v13 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v13.AuxInt = 5
-               v12.AddArg(v13)
+               v12.AddArg2(s, v13)
                v11.AddArg(v12)
-               v7.AddArg(v11)
-               v1.AddArg(v7)
-               v.AddArg(v1)
+               v7.AddArg2(v8, v11)
+               v1.AddArg2(v2, v7)
+               v.AddArg2(v0, v1)
                return true
        }
        return false
@@ -1947,12 +1775,11 @@ func rewriteValuedec64_OpRsh64x64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v2 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v3 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v3.AddArg(x)
                v2.AddArg(v3)
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (Rsh64x64 [c] x (Int64Make (Const32 [0]) lo))
@@ -1970,8 +1797,7 @@ func rewriteValuedec64_OpRsh64x64(v *Value) bool {
                }
                v.reset(OpRsh64x32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Rsh64x64 x (Int64Make hi lo))
@@ -1988,13 +1814,11 @@ func rewriteValuedec64_OpRsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpRsh64x32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -2015,47 +1839,36 @@ func rewriteValuedec64_OpRsh64x8(v *Value) bool {
                s := v_1
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpRsh32x8, typ.UInt32)
-               v0.AddArg(hi)
-               v0.AddArg(s)
-               v.AddArg(v0)
+               v0.AddArg2(hi, s)
                v1 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpRsh32Ux8, typ.UInt32)
-               v3.AddArg(lo)
-               v3.AddArg(s)
-               v2.AddArg(v3)
+               v3.AddArg2(lo, s)
                v4 := b.NewValue0(v.Pos, OpLsh32x8, typ.UInt32)
-               v4.AddArg(hi)
                v5 := b.NewValue0(v.Pos, OpSub8, typ.UInt8)
                v6 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                v6.AuxInt = 32
-               v5.AddArg(v6)
-               v5.AddArg(s)
-               v4.AddArg(v5)
-               v2.AddArg(v4)
-               v1.AddArg(v2)
+               v5.AddArg2(v6, s)
+               v4.AddArg2(hi, v5)
+               v2.AddArg2(v3, v4)
                v7 := b.NewValue0(v.Pos, OpAnd32, typ.UInt32)
                v8 := b.NewValue0(v.Pos, OpRsh32x8, typ.UInt32)
-               v8.AddArg(hi)
                v9 := b.NewValue0(v.Pos, OpSub8, typ.UInt8)
-               v9.AddArg(s)
                v10 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                v10.AuxInt = 32
-               v9.AddArg(v10)
-               v8.AddArg(v9)
-               v7.AddArg(v8)
+               v9.AddArg2(s, v10)
+               v8.AddArg2(hi, v9)
                v11 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v12 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v13 := b.NewValue0(v.Pos, OpRsh8Ux32, typ.UInt8)
-               v13.AddArg(s)
                v14 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v14.AuxInt = 5
-               v13.AddArg(v14)
+               v13.AddArg2(s, v14)
                v12.AddArg(v13)
                v11.AddArg(v12)
-               v7.AddArg(v11)
-               v1.AddArg(v7)
-               v.AddArg(v1)
+               v7.AddArg2(v8, v11)
+               v1.AddArg2(v2, v7)
+               v.AddArg2(v0, v1)
                return true
        }
        return false
@@ -2100,8 +1913,7 @@ func rewriteValuedec64_OpRsh8Ux64(v *Value) bool {
                }
                v.reset(OpRsh8Ux32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Rsh8Ux64 x (Int64Make hi lo))
@@ -2118,13 +1930,11 @@ func rewriteValuedec64_OpRsh8Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh8Ux32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -2172,8 +1982,7 @@ func rewriteValuedec64_OpRsh8x64(v *Value) bool {
                }
                v.reset(OpRsh8x32)
                v.AuxInt = c
-               v.AddArg(x)
-               v.AddArg(lo)
+               v.AddArg2(x, lo)
                return true
        }
        // match: (Rsh8x64 x (Int64Make hi lo))
@@ -2190,13 +1999,11 @@ func rewriteValuedec64_OpRsh8x64(v *Value) bool {
                        break
                }
                v.reset(OpRsh8x32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpOr32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpZeromask, typ.UInt32)
                v1.AddArg(hi)
-               v0.AddArg(v1)
-               v0.AddArg(lo)
-               v.AddArg(v0)
+               v0.AddArg2(v1, lo)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -2227,8 +2034,7 @@ func rewriteValuedec64_OpSignExt32to64(v *Value) bool {
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpSignmask, typ.Int32)
                v0.AddArg(x)
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
@@ -2273,14 +2079,10 @@ func rewriteValuedec64_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, hi.Type.PtrTo())
                v0.AuxInt = 4
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(hi)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = lo.Type
-               v1.AddArg(dst)
-               v1.AddArg(lo)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(dst, lo, mem)
+               v.AddArg3(v0, hi, v1)
                return true
        }
        // match: (Store {t} dst (Int64Make hi lo) mem)
@@ -2303,14 +2105,10 @@ func rewriteValuedec64_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, lo.Type.PtrTo())
                v0.AuxInt = 4
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(lo)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = hi.Type
-               v1.AddArg(dst)
-               v1.AddArg(hi)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(dst, hi, mem)
+               v.AddArg3(v0, lo, v1)
                return true
        }
        return false
@@ -2329,31 +2127,26 @@ func rewriteValuedec64_OpSub64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpSub32withcarry, typ.Int32)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
                v4 := b.NewValue0(v.Pos, OpSub32carry, types.NewTuple(typ.UInt32, types.TypeFlags))
                v5 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v5.AddArg(x)
-               v4.AddArg(v5)
                v6 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v6.AddArg(y)
-               v4.AddArg(v6)
+               v4.AddArg2(v5, v6)
                v3.AddArg(v4)
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg3(v1, v2, v3)
                v7 := b.NewValue0(v.Pos, OpSelect0, typ.UInt32)
                v8 := b.NewValue0(v.Pos, OpSub32carry, types.NewTuple(typ.UInt32, types.TypeFlags))
                v9 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v9.AddArg(x)
-               v8.AddArg(v9)
                v10 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v10.AddArg(y)
-               v8.AddArg(v10)
+               v8.AddArg2(v9, v10)
                v7.AddArg(v8)
-               v.AddArg(v7)
+               v.AddArg2(v0, v7)
                return true
        }
 }
@@ -2417,19 +2210,16 @@ func rewriteValuedec64_OpXor64(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpXor32, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v1.AddArg(x)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpInt64Hi, typ.UInt32)
                v2.AddArg(y)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v2)
                v3 := b.NewValue0(v.Pos, OpXor32, typ.UInt32)
                v4 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v4.AddArg(x)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpInt64Lo, typ.UInt32)
                v5.AddArg(y)
-               v3.AddArg(v5)
-               v.AddArg(v3)
+               v3.AddArg2(v4, v5)
+               v.AddArg2(v0, v3)
                return true
        }
 }
@@ -2459,8 +2249,7 @@ func rewriteValuedec64_OpZeroExt32to64(v *Value) bool {
                v.reset(OpInt64Make)
                v0 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v0.AuxInt = 0
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
 }
index 9a9e522554616c44ce9f77300f999bd99a3894a1..eec3acfcdaef525f90b3db41a889c318702355cc 100644 (file)
@@ -28,11 +28,10 @@ func rewriteValuedecArgs_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, typ.BytePtr)
                v0.AuxInt = off
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, typ.Int)
                v1.AuxInt = off + config.PtrSize
                v1.Aux = n
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Arg {n} [off])
@@ -48,15 +47,13 @@ func rewriteValuedecArgs_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, v.Type.Elem().PtrTo())
                v0.AuxInt = off
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, typ.Int)
                v1.AuxInt = off + config.PtrSize
                v1.Aux = n
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpArg, typ.Int)
                v2.AuxInt = off + 2*config.PtrSize
                v2.Aux = n
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Arg {n} [off])
@@ -72,11 +69,10 @@ func rewriteValuedecArgs_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, typ.Uintptr)
                v0.AuxInt = off
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, typ.BytePtr)
                v1.AuxInt = off + config.PtrSize
                v1.Aux = n
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Arg {n} [off])
@@ -92,11 +88,10 @@ func rewriteValuedecArgs_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, typ.Float64)
                v0.AuxInt = off
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, typ.Float64)
                v1.AuxInt = off + 8
                v1.Aux = n
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Arg {n} [off])
@@ -112,11 +107,10 @@ func rewriteValuedecArgs_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, typ.Float32)
                v0.AuxInt = off
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, typ.Float32)
                v1.AuxInt = off + 4
                v1.Aux = n
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Arg <t>)
@@ -161,11 +155,10 @@ func rewriteValuedecArgs_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, t.FieldType(0))
                v0.AuxInt = off + t.FieldOff(0)
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, t.FieldType(1))
                v1.AuxInt = off + t.FieldOff(1)
                v1.Aux = n
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (Arg <t> {n} [off])
@@ -182,15 +175,13 @@ func rewriteValuedecArgs_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, t.FieldType(0))
                v0.AuxInt = off + t.FieldOff(0)
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, t.FieldType(1))
                v1.AuxInt = off + t.FieldOff(1)
                v1.Aux = n
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpArg, t.FieldType(2))
                v2.AuxInt = off + t.FieldOff(2)
                v2.Aux = n
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (Arg <t> {n} [off])
@@ -207,19 +198,16 @@ func rewriteValuedecArgs_OpArg(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpArg, t.FieldType(0))
                v0.AuxInt = off + t.FieldOff(0)
                v0.Aux = n
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpArg, t.FieldType(1))
                v1.AuxInt = off + t.FieldOff(1)
                v1.Aux = n
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpArg, t.FieldType(2))
                v2.AuxInt = off + t.FieldOff(2)
                v2.Aux = n
-               v.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpArg, t.FieldType(3))
                v3.AuxInt = off + t.FieldOff(3)
                v3.Aux = n
-               v.AddArg(v3)
+               v.AddArg4(v0, v1, v2, v3)
                return true
        }
        // match: (Arg <t>)
index 94c2353fd97a58ee13206a7148506e787c7a1946..5a9dd7ed5b9bf5fb786813c3f56433f586f49737 100644 (file)
@@ -491,11 +491,9 @@ func rewriteValuegeneric_OpAdd16(v *Value) bool {
                                        }
                                        z := v_1_1
                                        v.reset(OpMul16)
-                                       v.AddArg(x)
                                        v0 := b.NewValue0(v.Pos, OpAdd16, t)
-                                       v0.AddArg(y)
-                                       v0.AddArg(z)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(y, z)
+                                       v.AddArg2(x, v0)
                                        return true
                                }
                        }
@@ -554,11 +552,9 @@ func rewriteValuegeneric_OpAdd16(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAdd16)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpAdd16, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -583,11 +579,9 @@ func rewriteValuegeneric_OpAdd16(v *Value) bool {
                                continue
                        }
                        v.reset(OpAdd16)
-                       v.AddArg(i)
                        v0 := b.NewValue0(v.Pos, OpSub16, t)
-                       v0.AddArg(x)
-                       v0.AddArg(z)
-                       v.AddArg(v0)
+                       v0.AddArg2(x, z)
+                       v.AddArg2(i, v0)
                        return true
                }
                break
@@ -613,10 +607,8 @@ func rewriteValuegeneric_OpAdd16(v *Value) bool {
                        }
                        v.reset(OpSub16)
                        v0 := b.NewValue0(v.Pos, OpAdd16, t)
-                       v0.AddArg(x)
-                       v0.AddArg(z)
-                       v.AddArg(v0)
-                       v.AddArg(i)
+                       v0.AddArg2(x, z)
+                       v.AddArg2(v0, i)
                        return true
                }
                break
@@ -645,8 +637,7 @@ func rewriteValuegeneric_OpAdd16(v *Value) bool {
                                v.reset(OpAdd16)
                                v0 := b.NewValue0(v.Pos, OpConst16, t)
                                v0.AuxInt = int64(int16(c + d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -673,8 +664,7 @@ func rewriteValuegeneric_OpAdd16(v *Value) bool {
                        v.reset(OpSub16)
                        v0 := b.NewValue0(v.Pos, OpConst16, t)
                        v0.AuxInt = int64(int16(c + d))
-                       v.AddArg(v0)
-                       v.AddArg(x)
+                       v.AddArg2(v0, x)
                        return true
                }
                break
@@ -701,8 +691,7 @@ func rewriteValuegeneric_OpAdd16(v *Value) bool {
                        v.reset(OpAdd16)
                        v0 := b.NewValue0(v.Pos, OpConst16, t)
                        v0.AuxInt = int64(int16(c - d))
-                       v.AddArg(v0)
-                       v.AddArg(x)
+                       v.AddArg2(v0, x)
                        return true
                }
                break
@@ -757,11 +746,9 @@ func rewriteValuegeneric_OpAdd32(v *Value) bool {
                                        }
                                        z := v_1_1
                                        v.reset(OpMul32)
-                                       v.AddArg(x)
                                        v0 := b.NewValue0(v.Pos, OpAdd32, t)
-                                       v0.AddArg(y)
-                                       v0.AddArg(z)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(y, z)
+                                       v.AddArg2(x, v0)
                                        return true
                                }
                        }
@@ -820,11 +807,9 @@ func rewriteValuegeneric_OpAdd32(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAdd32)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpAdd32, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -849,11 +834,9 @@ func rewriteValuegeneric_OpAdd32(v *Value) bool {
                                continue
                        }
                        v.reset(OpAdd32)
-                       v.AddArg(i)
                        v0 := b.NewValue0(v.Pos, OpSub32, t)
-                       v0.AddArg(x)
-                       v0.AddArg(z)
-                       v.AddArg(v0)
+                       v0.AddArg2(x, z)
+                       v.AddArg2(i, v0)
                        return true
                }
                break
@@ -879,10 +862,8 @@ func rewriteValuegeneric_OpAdd32(v *Value) bool {
                        }
                        v.reset(OpSub32)
                        v0 := b.NewValue0(v.Pos, OpAdd32, t)
-                       v0.AddArg(x)
-                       v0.AddArg(z)
-                       v.AddArg(v0)
-                       v.AddArg(i)
+                       v0.AddArg2(x, z)
+                       v.AddArg2(v0, i)
                        return true
                }
                break
@@ -911,8 +892,7 @@ func rewriteValuegeneric_OpAdd32(v *Value) bool {
                                v.reset(OpAdd32)
                                v0 := b.NewValue0(v.Pos, OpConst32, t)
                                v0.AuxInt = int64(int32(c + d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -939,8 +919,7 @@ func rewriteValuegeneric_OpAdd32(v *Value) bool {
                        v.reset(OpSub32)
                        v0 := b.NewValue0(v.Pos, OpConst32, t)
                        v0.AuxInt = int64(int32(c + d))
-                       v.AddArg(v0)
-                       v.AddArg(x)
+                       v.AddArg2(v0, x)
                        return true
                }
                break
@@ -967,8 +946,7 @@ func rewriteValuegeneric_OpAdd32(v *Value) bool {
                        v.reset(OpAdd32)
                        v0 := b.NewValue0(v.Pos, OpConst32, t)
                        v0.AuxInt = int64(int32(c - d))
-                       v.AddArg(v0)
-                       v.AddArg(x)
+                       v.AddArg2(v0, x)
                        return true
                }
                break
@@ -1046,11 +1024,9 @@ func rewriteValuegeneric_OpAdd64(v *Value) bool {
                                        }
                                        z := v_1_1
                                        v.reset(OpMul64)
-                                       v.AddArg(x)
                                        v0 := b.NewValue0(v.Pos, OpAdd64, t)
-                                       v0.AddArg(y)
-                                       v0.AddArg(z)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(y, z)
+                                       v.AddArg2(x, v0)
                                        return true
                                }
                        }
@@ -1109,11 +1085,9 @@ func rewriteValuegeneric_OpAdd64(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAdd64)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpAdd64, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -1138,11 +1112,9 @@ func rewriteValuegeneric_OpAdd64(v *Value) bool {
                                continue
                        }
                        v.reset(OpAdd64)
-                       v.AddArg(i)
                        v0 := b.NewValue0(v.Pos, OpSub64, t)
-                       v0.AddArg(x)
-                       v0.AddArg(z)
-                       v.AddArg(v0)
+                       v0.AddArg2(x, z)
+                       v.AddArg2(i, v0)
                        return true
                }
                break
@@ -1168,10 +1140,8 @@ func rewriteValuegeneric_OpAdd64(v *Value) bool {
                        }
                        v.reset(OpSub64)
                        v0 := b.NewValue0(v.Pos, OpAdd64, t)
-                       v0.AddArg(x)
-                       v0.AddArg(z)
-                       v.AddArg(v0)
-                       v.AddArg(i)
+                       v0.AddArg2(x, z)
+                       v.AddArg2(v0, i)
                        return true
                }
                break
@@ -1200,8 +1170,7 @@ func rewriteValuegeneric_OpAdd64(v *Value) bool {
                                v.reset(OpAdd64)
                                v0 := b.NewValue0(v.Pos, OpConst64, t)
                                v0.AuxInt = c + d
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -1228,8 +1197,7 @@ func rewriteValuegeneric_OpAdd64(v *Value) bool {
                        v.reset(OpSub64)
                        v0 := b.NewValue0(v.Pos, OpConst64, t)
                        v0.AuxInt = c + d
-                       v.AddArg(v0)
-                       v.AddArg(x)
+                       v.AddArg2(v0, x)
                        return true
                }
                break
@@ -1256,8 +1224,7 @@ func rewriteValuegeneric_OpAdd64(v *Value) bool {
                        v.reset(OpAdd64)
                        v0 := b.NewValue0(v.Pos, OpConst64, t)
                        v0.AuxInt = c - d
-                       v.AddArg(v0)
-                       v.AddArg(x)
+                       v.AddArg2(v0, x)
                        return true
                }
                break
@@ -1335,11 +1302,9 @@ func rewriteValuegeneric_OpAdd8(v *Value) bool {
                                        }
                                        z := v_1_1
                                        v.reset(OpMul8)
-                                       v.AddArg(x)
                                        v0 := b.NewValue0(v.Pos, OpAdd8, t)
-                                       v0.AddArg(y)
-                                       v0.AddArg(z)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(y, z)
+                                       v.AddArg2(x, v0)
                                        return true
                                }
                        }
@@ -1398,11 +1363,9 @@ func rewriteValuegeneric_OpAdd8(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAdd8)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpAdd8, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -1427,11 +1390,9 @@ func rewriteValuegeneric_OpAdd8(v *Value) bool {
                                continue
                        }
                        v.reset(OpAdd8)
-                       v.AddArg(i)
                        v0 := b.NewValue0(v.Pos, OpSub8, t)
-                       v0.AddArg(x)
-                       v0.AddArg(z)
-                       v.AddArg(v0)
+                       v0.AddArg2(x, z)
+                       v.AddArg2(i, v0)
                        return true
                }
                break
@@ -1457,10 +1418,8 @@ func rewriteValuegeneric_OpAdd8(v *Value) bool {
                        }
                        v.reset(OpSub8)
                        v0 := b.NewValue0(v.Pos, OpAdd8, t)
-                       v0.AddArg(x)
-                       v0.AddArg(z)
-                       v.AddArg(v0)
-                       v.AddArg(i)
+                       v0.AddArg2(x, z)
+                       v.AddArg2(v0, i)
                        return true
                }
                break
@@ -1489,8 +1448,7 @@ func rewriteValuegeneric_OpAdd8(v *Value) bool {
                                v.reset(OpAdd8)
                                v0 := b.NewValue0(v.Pos, OpConst8, t)
                                v0.AuxInt = int64(int8(c + d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -1517,8 +1475,7 @@ func rewriteValuegeneric_OpAdd8(v *Value) bool {
                        v.reset(OpSub8)
                        v0 := b.NewValue0(v.Pos, OpConst8, t)
                        v0.AuxInt = int64(int8(c + d))
-                       v.AddArg(v0)
-                       v.AddArg(x)
+                       v.AddArg2(v0, x)
                        return true
                }
                break
@@ -1545,8 +1502,7 @@ func rewriteValuegeneric_OpAdd8(v *Value) bool {
                        v.reset(OpAdd8)
                        v0 := b.NewValue0(v.Pos, OpConst8, t)
                        v0.AuxInt = int64(int8(c - d))
-                       v.AddArg(v0)
-                       v.AddArg(x)
+                       v.AddArg2(v0, x)
                        return true
                }
                break
@@ -1721,8 +1677,7 @@ func rewriteValuegeneric_OpAnd16(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(OpAnd16)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -1751,11 +1706,9 @@ func rewriteValuegeneric_OpAnd16(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAnd16)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpAnd16, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -1785,8 +1738,7 @@ func rewriteValuegeneric_OpAnd16(v *Value) bool {
                                v.reset(OpAnd16)
                                v0 := b.NewValue0(v.Pos, OpConst16, t)
                                v0.AuxInt = int64(int16(c & d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -1927,8 +1879,7 @@ func rewriteValuegeneric_OpAnd32(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(OpAnd32)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -1957,11 +1908,9 @@ func rewriteValuegeneric_OpAnd32(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAnd32)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpAnd32, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -1991,8 +1940,7 @@ func rewriteValuegeneric_OpAnd32(v *Value) bool {
                                v.reset(OpAnd32)
                                v0 := b.NewValue0(v.Pos, OpConst32, t)
                                v0.AuxInt = int64(int32(c & d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -2133,8 +2081,7 @@ func rewriteValuegeneric_OpAnd64(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(OpAnd64)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -2163,11 +2110,9 @@ func rewriteValuegeneric_OpAnd64(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAnd64)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpAnd64, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -2197,8 +2142,7 @@ func rewriteValuegeneric_OpAnd64(v *Value) bool {
                                v.reset(OpAnd64)
                                v0 := b.NewValue0(v.Pos, OpConst64, t)
                                v0.AuxInt = c & d
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -2339,8 +2283,7 @@ func rewriteValuegeneric_OpAnd8(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(OpAnd8)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -2369,11 +2312,9 @@ func rewriteValuegeneric_OpAnd8(v *Value) bool {
                                        continue
                                }
                                v.reset(OpAnd8)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpAnd8, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -2403,8 +2344,7 @@ func rewriteValuegeneric_OpAnd8(v *Value) bool {
                                v.reset(OpAnd8)
                                v0 := b.NewValue0(v.Pos, OpConst8, t)
                                v0.AuxInt = int64(int8(c & d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -2635,9 +2575,8 @@ func rewriteValuegeneric_OpConstInterface(v *Value) bool {
        for {
                v.reset(OpIMake)
                v0 := b.NewValue0(v.Pos, OpConstNil, typ.Uintptr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpConstNil, typ.BytePtr)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -2654,13 +2593,11 @@ func rewriteValuegeneric_OpConstSlice(v *Value) bool {
                }
                v.reset(OpSliceMake)
                v0 := b.NewValue0(v.Pos, OpConstNil, v.Type.Elem().PtrTo())
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpConst32, typ.Int)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpConst32, typ.Int)
                v2.AuxInt = 0
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        // match: (ConstSlice)
@@ -2672,13 +2609,11 @@ func rewriteValuegeneric_OpConstSlice(v *Value) bool {
                }
                v.reset(OpSliceMake)
                v0 := b.NewValue0(v.Pos, OpConstNil, v.Type.Elem().PtrTo())
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpConst64, typ.Int)
                v1.AuxInt = 0
-               v.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.Int)
                v2.AuxInt = 0
-               v.AddArg(v2)
+               v.AddArg3(v0, v1, v2)
                return true
        }
        return false
@@ -2698,10 +2633,9 @@ func rewriteValuegeneric_OpConstString(v *Value) bool {
                }
                v.reset(OpStringMake)
                v0 := b.NewValue0(v.Pos, OpConstNil, typ.BytePtr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpConst32, typ.Int)
                v1.AuxInt = 0
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (ConstString {s})
@@ -2714,10 +2648,9 @@ func rewriteValuegeneric_OpConstString(v *Value) bool {
                }
                v.reset(OpStringMake)
                v0 := b.NewValue0(v.Pos, OpConstNil, typ.BytePtr)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpConst64, typ.Int)
                v1.AuxInt = 0
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
        // match: (ConstString {s})
@@ -2733,10 +2666,9 @@ func rewriteValuegeneric_OpConstString(v *Value) bool {
                v0.Aux = fe.StringData(s.(string))
                v1 := b.NewValue0(v.Pos, OpSB, typ.Uintptr)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v2 := b.NewValue0(v.Pos, OpConst32, typ.Int)
                v2.AuxInt = int64(len(s.(string)))
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (ConstString {s})
@@ -2752,10 +2684,9 @@ func rewriteValuegeneric_OpConstString(v *Value) bool {
                v0.Aux = fe.StringData(s.(string))
                v1 := b.NewValue0(v.Pos, OpSB, typ.Uintptr)
                v0.AddArg(v1)
-               v.AddArg(v0)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.Int)
                v2.AuxInt = int64(len(s.(string)))
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        return false
@@ -2783,8 +2714,7 @@ func rewriteValuegeneric_OpConvert(v *Value) bool {
                                continue
                        }
                        v.reset(OpAdd64)
-                       v.AddArg(ptr)
-                       v.AddArg(off)
+                       v.AddArg2(ptr, off)
                        return true
                }
                break
@@ -2809,8 +2739,7 @@ func rewriteValuegeneric_OpConvert(v *Value) bool {
                                continue
                        }
                        v.reset(OpAdd32)
-                       v.AddArg(ptr)
-                       v.AddArg(off)
+                       v.AddArg2(ptr, off)
                        return true
                }
                break
@@ -3035,10 +2964,9 @@ func rewriteValuegeneric_OpDiv16(v *Value) bool {
                        break
                }
                v.reset(OpRsh16Ux64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = log2(c & 0xffff)
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Div16 <t> n (Const16 [c]))
@@ -3056,10 +2984,9 @@ func rewriteValuegeneric_OpDiv16(v *Value) bool {
                }
                v.reset(OpNeg16)
                v0 := b.NewValue0(v.Pos, OpDiv16, t)
-               v0.AddArg(n)
                v1 := b.NewValue0(v.Pos, OpConst16, t)
                v1.AuxInt = -c
-               v0.AddArg(v1)
+               v0.AddArg2(n, v1)
                v.AddArg(v0)
                return true
        }
@@ -3073,14 +3000,12 @@ func rewriteValuegeneric_OpDiv16(v *Value) bool {
                }
                v.reset(OpRsh16Ux64)
                v0 := b.NewValue0(v.Pos, OpAnd16, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpNeg16, t)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = 15
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (Div16 <t> n (Const16 [c]))
@@ -3098,22 +3023,18 @@ func rewriteValuegeneric_OpDiv16(v *Value) bool {
                }
                v.reset(OpRsh16x64)
                v0 := b.NewValue0(v.Pos, OpAdd16, t)
-               v0.AddArg(n)
                v1 := b.NewValue0(v.Pos, OpRsh16Ux64, t)
                v2 := b.NewValue0(v.Pos, OpRsh16x64, t)
-               v2.AddArg(n)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = 15
-               v2.AddArg(v3)
-               v1.AddArg(v2)
+               v2.AddArg2(n, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 16 - log2(c)
-               v1.AddArg(v4)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(v2, v4)
+               v0.AddArg2(n, v1)
                v5 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v5.AuxInt = log2(c)
-               v.AddArg(v5)
+               v.AddArg2(v0, v5)
                return true
        }
        // match: (Div16 <t> x (Const16 [c]))
@@ -3135,23 +3056,19 @@ func rewriteValuegeneric_OpDiv16(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v2.AuxInt = int64(smagic(16, c).m)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v3.AddArg(x)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v1.AddArg2(v2, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 16 + smagic(16, c).s
-               v0.AddArg(v4)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v4)
                v5 := b.NewValue0(v.Pos, OpRsh32x64, t)
                v6 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                v6.AddArg(x)
-               v5.AddArg(v6)
                v7 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v7.AuxInt = 31
-               v5.AddArg(v7)
-               v.AddArg(v5)
+               v5.AddArg2(v6, v7)
+               v.AddArg2(v0, v5)
                return true
        }
        return false
@@ -3194,10 +3111,9 @@ func rewriteValuegeneric_OpDiv16u(v *Value) bool {
                        break
                }
                v.reset(OpRsh16Ux64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = log2(c & 0xffff)
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Div16u x (Const16 [c]))
@@ -3217,14 +3133,12 @@ func rewriteValuegeneric_OpDiv16u(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMul64, typ.UInt64)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = int64(1<<16 + umagic(16, c).m)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
                v3.AddArg(x)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v1.AddArg2(v2, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 16 + umagic(16, c).s
-               v0.AddArg(v4)
+               v0.AddArg2(v1, v4)
                v.AddArg(v0)
                return true
        }
@@ -3245,14 +3159,12 @@ func rewriteValuegeneric_OpDiv16u(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v2.AuxInt = int64(1<<15 + umagic(16, c).m/2)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v3.AddArg(x)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v1.AddArg2(v2, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 16 + umagic(16, c).s - 1
-               v0.AddArg(v4)
+               v0.AddArg2(v1, v4)
                v.AddArg(v0)
                return true
        }
@@ -3273,19 +3185,16 @@ func rewriteValuegeneric_OpDiv16u(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v2.AuxInt = int64(1<<15 + (umagic(16, c).m+1)/2)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpRsh32Ux64, typ.UInt32)
                v4 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v4.AddArg(x)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v5.AuxInt = 1
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v3.AddArg2(v4, v5)
+               v1.AddArg2(v2, v3)
                v6 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v6.AuxInt = 16 + umagic(16, c).s - 2
-               v0.AddArg(v6)
+               v0.AddArg2(v1, v6)
                v.AddArg(v0)
                return true
        }
@@ -3307,23 +3216,19 @@ func rewriteValuegeneric_OpDiv16u(v *Value) bool {
                v2 := b.NewValue0(v.Pos, OpLsh32x64, typ.UInt32)
                v3 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 16
-               v2.AddArg(v4)
-               v1.AddArg(v2)
+               v2.AddArg2(v3, v4)
                v5 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                v6 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v6.AuxInt = int64(umagic(16, c).m)
-               v5.AddArg(v6)
                v7 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                v7.AddArg(x)
-               v5.AddArg(v7)
-               v1.AddArg(v5)
-               v0.AddArg(v1)
+               v5.AddArg2(v6, v7)
+               v1.AddArg2(v2, v5)
                v8 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v8.AuxInt = 16 + umagic(16, c).s - 1
-               v0.AddArg(v8)
+               v0.AddArg2(v1, v8)
                v.AddArg(v0)
                return true
        }
@@ -3367,10 +3272,9 @@ func rewriteValuegeneric_OpDiv32(v *Value) bool {
                        break
                }
                v.reset(OpRsh32Ux64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = log2(c & 0xffffffff)
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Div32 <t> n (Const32 [c]))
@@ -3388,10 +3292,9 @@ func rewriteValuegeneric_OpDiv32(v *Value) bool {
                }
                v.reset(OpNeg32)
                v0 := b.NewValue0(v.Pos, OpDiv32, t)
-               v0.AddArg(n)
                v1 := b.NewValue0(v.Pos, OpConst32, t)
                v1.AuxInt = -c
-               v0.AddArg(v1)
+               v0.AddArg2(n, v1)
                v.AddArg(v0)
                return true
        }
@@ -3405,14 +3308,12 @@ func rewriteValuegeneric_OpDiv32(v *Value) bool {
                }
                v.reset(OpRsh32Ux64)
                v0 := b.NewValue0(v.Pos, OpAnd32, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpNeg32, t)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = 31
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (Div32 <t> n (Const32 [c]))
@@ -3430,22 +3331,18 @@ func rewriteValuegeneric_OpDiv32(v *Value) bool {
                }
                v.reset(OpRsh32x64)
                v0 := b.NewValue0(v.Pos, OpAdd32, t)
-               v0.AddArg(n)
                v1 := b.NewValue0(v.Pos, OpRsh32Ux64, t)
                v2 := b.NewValue0(v.Pos, OpRsh32x64, t)
-               v2.AddArg(n)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = 31
-               v2.AddArg(v3)
-               v1.AddArg(v2)
+               v2.AddArg2(n, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 32 - log2(c)
-               v1.AddArg(v4)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(v2, v4)
+               v0.AddArg2(n, v1)
                v5 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v5.AuxInt = log2(c)
-               v.AddArg(v5)
+               v.AddArg2(v0, v5)
                return true
        }
        // match: (Div32 <t> x (Const32 [c]))
@@ -3467,23 +3364,19 @@ func rewriteValuegeneric_OpDiv32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMul64, typ.UInt64)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = int64(smagic(32, c).m)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v3.AddArg(x)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v1.AddArg2(v2, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 32 + smagic(32, c).s
-               v0.AddArg(v4)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v4)
                v5 := b.NewValue0(v.Pos, OpRsh64x64, t)
                v6 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
                v6.AddArg(x)
-               v5.AddArg(v6)
                v7 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v7.AuxInt = 63
-               v5.AddArg(v7)
-               v.AddArg(v5)
+               v5.AddArg2(v6, v7)
+               v.AddArg2(v0, v5)
                return true
        }
        // match: (Div32 <t> x (Const32 [c]))
@@ -3505,19 +3398,15 @@ func rewriteValuegeneric_OpDiv32(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpHmul32, t)
                v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v2.AuxInt = int64(int32(smagic(32, c).m / 2))
-               v1.AddArg(v2)
-               v1.AddArg(x)
-               v0.AddArg(v1)
+               v1.AddArg2(v2, x)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = smagic(32, c).s - 1
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v3)
                v4 := b.NewValue0(v.Pos, OpRsh32x64, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v5.AuxInt = 31
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
        // match: (Div32 <t> x (Const32 [c]))
@@ -3540,21 +3429,16 @@ func rewriteValuegeneric_OpDiv32(v *Value) bool {
                v2 := b.NewValue0(v.Pos, OpHmul32, t)
                v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v3.AuxInt = int64(int32(smagic(32, c).m))
-               v2.AddArg(v3)
-               v2.AddArg(x)
-               v1.AddArg(v2)
-               v1.AddArg(x)
-               v0.AddArg(v1)
+               v2.AddArg2(v3, x)
+               v1.AddArg2(v2, x)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = smagic(32, c).s
-               v0.AddArg(v4)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v4)
                v5 := b.NewValue0(v.Pos, OpRsh32x64, t)
-               v5.AddArg(x)
                v6 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v6.AuxInt = 31
-               v5.AddArg(v6)
-               v.AddArg(v5)
+               v5.AddArg2(x, v6)
+               v.AddArg2(v0, v5)
                return true
        }
        return false
@@ -3592,10 +3476,9 @@ func rewriteValuegeneric_OpDiv32F(v *Value) bool {
                        break
                }
                v.reset(OpMul32F)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst32F, t)
                v0.AuxInt = auxFrom32F(1 / auxTo32F(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -3638,10 +3521,9 @@ func rewriteValuegeneric_OpDiv32u(v *Value) bool {
                        break
                }
                v.reset(OpRsh32Ux64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = log2(c & 0xffffffff)
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Div32u x (Const32 [c]))
@@ -3661,12 +3543,10 @@ func rewriteValuegeneric_OpDiv32u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpHmul32u, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v1.AuxInt = int64(int32(1<<31 + umagic(32, c).m/2))
-               v0.AddArg(v1)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(v1, x)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = umagic(32, c).s - 1
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (Div32u x (Const32 [c]))
@@ -3686,17 +3566,14 @@ func rewriteValuegeneric_OpDiv32u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpHmul32u, typ.UInt32)
                v1 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v1.AuxInt = int64(int32(1<<31 + (umagic(32, c).m+1)/2))
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpRsh32Ux64, typ.UInt32)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = 1
-               v2.AddArg(v3)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v2.AddArg2(x, v3)
+               v0.AddArg2(v1, v2)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = umagic(32, c).s - 2
-               v.AddArg(v4)
+               v.AddArg2(v0, v4)
                return true
        }
        // match: (Div32u x (Const32 [c]))
@@ -3714,17 +3591,14 @@ func rewriteValuegeneric_OpDiv32u(v *Value) bool {
                v.reset(OpRsh32Ux64)
                v.Type = typ.UInt32
                v0 := b.NewValue0(v.Pos, OpAvg32u, typ.UInt32)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpHmul32u, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v2.AuxInt = int64(int32(umagic(32, c).m))
-               v1.AddArg(v2)
-               v1.AddArg(x)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(v2, x)
+               v0.AddArg2(x, v1)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = umagic(32, c).s - 1
-               v.AddArg(v3)
+               v.AddArg2(v0, v3)
                return true
        }
        // match: (Div32u x (Const32 [c]))
@@ -3744,14 +3618,12 @@ func rewriteValuegeneric_OpDiv32u(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMul64, typ.UInt64)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = int64(1<<31 + umagic(32, c).m/2)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(x)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v1.AddArg2(v2, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 32 + umagic(32, c).s - 1
-               v0.AddArg(v4)
+               v0.AddArg2(v1, v4)
                v.AddArg(v0)
                return true
        }
@@ -3772,19 +3644,16 @@ func rewriteValuegeneric_OpDiv32u(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMul64, typ.UInt64)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = int64(1<<31 + (umagic(32, c).m+1)/2)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpRsh64Ux64, typ.UInt64)
                v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v4.AddArg(x)
-               v3.AddArg(v4)
                v5 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v5.AuxInt = 1
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v3.AddArg2(v4, v5)
+               v1.AddArg2(v2, v3)
                v6 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v6.AuxInt = 32 + umagic(32, c).s - 2
-               v0.AddArg(v6)
+               v0.AddArg2(v1, v6)
                v.AddArg(v0)
                return true
        }
@@ -3806,23 +3675,19 @@ func rewriteValuegeneric_OpDiv32u(v *Value) bool {
                v2 := b.NewValue0(v.Pos, OpLsh64x64, typ.UInt64)
                v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v3.AddArg(x)
-               v2.AddArg(v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 32
-               v2.AddArg(v4)
-               v1.AddArg(v2)
+               v2.AddArg2(v3, v4)
                v5 := b.NewValue0(v.Pos, OpMul64, typ.UInt64)
                v6 := b.NewValue0(v.Pos, OpConst64, typ.UInt32)
                v6.AuxInt = int64(umagic(32, c).m)
-               v5.AddArg(v6)
                v7 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
                v7.AddArg(x)
-               v5.AddArg(v7)
-               v1.AddArg(v5)
-               v0.AddArg(v1)
+               v5.AddArg2(v6, v7)
+               v1.AddArg2(v2, v5)
                v8 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v8.AuxInt = 32 + umagic(32, c).s - 1
-               v0.AddArg(v8)
+               v0.AddArg2(v1, v8)
                v.AddArg(v0)
                return true
        }
@@ -3866,10 +3731,9 @@ func rewriteValuegeneric_OpDiv64(v *Value) bool {
                        break
                }
                v.reset(OpRsh64Ux64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = log2(c)
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Div64 n (Const64 [-1<<63]))
@@ -3899,10 +3763,9 @@ func rewriteValuegeneric_OpDiv64(v *Value) bool {
                }
                v.reset(OpNeg64)
                v0 := b.NewValue0(v.Pos, OpDiv64, t)
-               v0.AddArg(n)
                v1 := b.NewValue0(v.Pos, OpConst64, t)
                v1.AuxInt = -c
-               v0.AddArg(v1)
+               v0.AddArg2(n, v1)
                v.AddArg(v0)
                return true
        }
@@ -3916,14 +3779,12 @@ func rewriteValuegeneric_OpDiv64(v *Value) bool {
                }
                v.reset(OpRsh64Ux64)
                v0 := b.NewValue0(v.Pos, OpAnd64, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpNeg64, t)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = 63
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (Div64 <t> n (Const64 [c]))
@@ -3941,22 +3802,18 @@ func rewriteValuegeneric_OpDiv64(v *Value) bool {
                }
                v.reset(OpRsh64x64)
                v0 := b.NewValue0(v.Pos, OpAdd64, t)
-               v0.AddArg(n)
                v1 := b.NewValue0(v.Pos, OpRsh64Ux64, t)
                v2 := b.NewValue0(v.Pos, OpRsh64x64, t)
-               v2.AddArg(n)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = 63
-               v2.AddArg(v3)
-               v1.AddArg(v2)
+               v2.AddArg2(n, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 64 - log2(c)
-               v1.AddArg(v4)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(v2, v4)
+               v0.AddArg2(n, v1)
                v5 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v5.AuxInt = log2(c)
-               v.AddArg(v5)
+               v.AddArg2(v0, v5)
                return true
        }
        // match: (Div64 <t> x (Const64 [c]))
@@ -3978,19 +3835,15 @@ func rewriteValuegeneric_OpDiv64(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpHmul64, t)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = int64(smagic(64, c).m / 2)
-               v1.AddArg(v2)
-               v1.AddArg(x)
-               v0.AddArg(v1)
+               v1.AddArg2(v2, x)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = smagic(64, c).s - 1
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v3)
                v4 := b.NewValue0(v.Pos, OpRsh64x64, t)
-               v4.AddArg(x)
                v5 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v5.AuxInt = 63
-               v4.AddArg(v5)
-               v.AddArg(v4)
+               v4.AddArg2(x, v5)
+               v.AddArg2(v0, v4)
                return true
        }
        // match: (Div64 <t> x (Const64 [c]))
@@ -4013,21 +3866,16 @@ func rewriteValuegeneric_OpDiv64(v *Value) bool {
                v2 := b.NewValue0(v.Pos, OpHmul64, t)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = int64(smagic(64, c).m)
-               v2.AddArg(v3)
-               v2.AddArg(x)
-               v1.AddArg(v2)
-               v1.AddArg(x)
-               v0.AddArg(v1)
+               v2.AddArg2(v3, x)
+               v1.AddArg2(v2, x)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = smagic(64, c).s
-               v0.AddArg(v4)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v4)
                v5 := b.NewValue0(v.Pos, OpRsh64x64, t)
-               v5.AddArg(x)
                v6 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v6.AuxInt = 63
-               v5.AddArg(v6)
-               v.AddArg(v5)
+               v5.AddArg2(x, v6)
+               v.AddArg2(v0, v5)
                return true
        }
        return false
@@ -4065,10 +3913,9 @@ func rewriteValuegeneric_OpDiv64F(v *Value) bool {
                        break
                }
                v.reset(OpMul64F)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64F, t)
                v0.AuxInt = auxFrom64F(1 / auxTo64F(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -4111,10 +3958,9 @@ func rewriteValuegeneric_OpDiv64u(v *Value) bool {
                        break
                }
                v.reset(OpRsh64Ux64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = log2(c)
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Div64u n (Const64 [-1<<63]))
@@ -4125,10 +3971,9 @@ func rewriteValuegeneric_OpDiv64u(v *Value) bool {
                        break
                }
                v.reset(OpRsh64Ux64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = 63
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Div64u x (Const64 [c]))
@@ -4148,12 +3993,10 @@ func rewriteValuegeneric_OpDiv64u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpHmul64u, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v1.AuxInt = int64(1<<63 + umagic(64, c).m/2)
-               v0.AddArg(v1)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v0.AddArg2(v1, x)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = umagic(64, c).s - 1
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (Div64u x (Const64 [c]))
@@ -4173,17 +4016,14 @@ func rewriteValuegeneric_OpDiv64u(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpHmul64u, typ.UInt64)
                v1 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v1.AuxInt = int64(1<<63 + (umagic(64, c).m+1)/2)
-               v0.AddArg(v1)
                v2 := b.NewValue0(v.Pos, OpRsh64Ux64, typ.UInt64)
-               v2.AddArg(x)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = 1
-               v2.AddArg(v3)
-               v0.AddArg(v2)
-               v.AddArg(v0)
+               v2.AddArg2(x, v3)
+               v0.AddArg2(v1, v2)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = umagic(64, c).s - 2
-               v.AddArg(v4)
+               v.AddArg2(v0, v4)
                return true
        }
        // match: (Div64u x (Const64 [c]))
@@ -4201,17 +4041,14 @@ func rewriteValuegeneric_OpDiv64u(v *Value) bool {
                v.reset(OpRsh64Ux64)
                v.Type = typ.UInt64
                v0 := b.NewValue0(v.Pos, OpAvg64u, typ.UInt64)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpHmul64u, typ.UInt64)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = int64(umagic(64, c).m)
-               v1.AddArg(v2)
-               v1.AddArg(x)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(v2, x)
+               v0.AddArg2(x, v1)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = umagic(64, c).s - 1
-               v.AddArg(v3)
+               v.AddArg2(v0, v3)
                return true
        }
        return false
@@ -4253,10 +4090,9 @@ func rewriteValuegeneric_OpDiv8(v *Value) bool {
                        break
                }
                v.reset(OpRsh8Ux64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = log2(c & 0xff)
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Div8 <t> n (Const8 [c]))
@@ -4274,10 +4110,9 @@ func rewriteValuegeneric_OpDiv8(v *Value) bool {
                }
                v.reset(OpNeg8)
                v0 := b.NewValue0(v.Pos, OpDiv8, t)
-               v0.AddArg(n)
                v1 := b.NewValue0(v.Pos, OpConst8, t)
                v1.AuxInt = -c
-               v0.AddArg(v1)
+               v0.AddArg2(n, v1)
                v.AddArg(v0)
                return true
        }
@@ -4291,14 +4126,12 @@ func rewriteValuegeneric_OpDiv8(v *Value) bool {
                }
                v.reset(OpRsh8Ux64)
                v0 := b.NewValue0(v.Pos, OpAnd8, t)
-               v0.AddArg(x)
                v1 := b.NewValue0(v.Pos, OpNeg8, t)
                v1.AddArg(x)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(x, v1)
                v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v2.AuxInt = 7
-               v.AddArg(v2)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (Div8 <t> n (Const8 [c]))
@@ -4316,22 +4149,18 @@ func rewriteValuegeneric_OpDiv8(v *Value) bool {
                }
                v.reset(OpRsh8x64)
                v0 := b.NewValue0(v.Pos, OpAdd8, t)
-               v0.AddArg(n)
                v1 := b.NewValue0(v.Pos, OpRsh8Ux64, t)
                v2 := b.NewValue0(v.Pos, OpRsh8x64, t)
-               v2.AddArg(n)
                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v3.AuxInt = 7
-               v2.AddArg(v3)
-               v1.AddArg(v2)
+               v2.AddArg2(n, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 8 - log2(c)
-               v1.AddArg(v4)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg2(v2, v4)
+               v0.AddArg2(n, v1)
                v5 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v5.AuxInt = log2(c)
-               v.AddArg(v5)
+               v.AddArg2(v0, v5)
                return true
        }
        // match: (Div8 <t> x (Const8 [c]))
@@ -4353,23 +4182,19 @@ func rewriteValuegeneric_OpDiv8(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v2.AuxInt = int64(smagic(8, c).m)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v3.AddArg(x)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v1.AddArg2(v2, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 8 + smagic(8, c).s
-               v0.AddArg(v4)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v4)
                v5 := b.NewValue0(v.Pos, OpRsh32x64, t)
                v6 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                v6.AddArg(x)
-               v5.AddArg(v6)
                v7 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v7.AuxInt = 31
-               v5.AddArg(v7)
-               v.AddArg(v5)
+               v5.AddArg2(v6, v7)
+               v.AddArg2(v0, v5)
                return true
        }
        return false
@@ -4411,10 +4236,9 @@ func rewriteValuegeneric_OpDiv8u(v *Value) bool {
                        break
                }
                v.reset(OpRsh8Ux64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = log2(c & 0xff)
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Div8u x (Const8 [c]))
@@ -4434,14 +4258,12 @@ func rewriteValuegeneric_OpDiv8u(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                v2.AuxInt = int64(1<<8 + umagic(8, c).m)
-               v1.AddArg(v2)
                v3 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                v3.AddArg(x)
-               v1.AddArg(v3)
-               v0.AddArg(v1)
+               v1.AddArg2(v2, v3)
                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v4.AuxInt = 8 + umagic(8, c).s
-               v0.AddArg(v4)
+               v0.AddArg2(v1, v4)
                v.AddArg(v0)
                return true
        }
@@ -4488,8 +4310,7 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                                v.reset(OpEq16)
                                v0 := b.NewValue0(v.Pos, OpConst16, t)
                                v0.AuxInt = int64(int16(c - d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -4535,14 +4356,12 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpMod32u, typ.UInt32)
                        v1 := b.NewValue0(v.Pos, OpZeroExt16to32, typ.UInt32)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                        v2.AuxInt = c & 0xffff
-                       v0.AddArg(v2)
-                       v.AddArg(v0)
+                       v0.AddArg2(v1, v2)
                        v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                        v3.AuxInt = 0
-                       v.AddArg(v3)
+                       v.AddArg2(v0, v3)
                        return true
                }
                break
@@ -4569,14 +4388,12 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpMod32, typ.Int32)
                        v1 := b.NewValue0(v.Pos, OpSignExt16to32, typ.Int32)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpConst32, typ.Int32)
                        v2.AuxInt = c
-                       v0.AddArg(v2)
-                       v.AddArg(v0)
+                       v0.AddArg2(v1, v2)
                        v3 := b.NewValue0(v.Pos, OpConst32, typ.Int32)
                        v3.AuxInt = 0
-                       v.AddArg(v3)
+                       v.AddArg2(v0, v3)
                        return true
                }
                break
@@ -4634,16 +4451,13 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul16, typ.UInt16)
                                        v2 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v2.AuxInt = int64(int16(udivisible(16, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v3.AuxInt = int64(16 - udivisible(16, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v4.AuxInt = int64(int16(udivisible(16, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -4703,16 +4517,13 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul16, typ.UInt16)
                                        v2 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v2.AuxInt = int64(int16(udivisible(16, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v3.AuxInt = int64(16 - udivisible(16, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v4.AuxInt = int64(int16(udivisible(16, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -4781,16 +4592,13 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul16, typ.UInt16)
                                        v2 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v2.AuxInt = int64(int16(udivisible(16, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v3.AuxInt = int64(16 - udivisible(16, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v4.AuxInt = int64(int16(udivisible(16, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -4868,16 +4676,13 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul16, typ.UInt16)
                                        v2 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v2.AuxInt = int64(int16(udivisible(16, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v3.AuxInt = int64(16 - udivisible(16, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v4.AuxInt = int64(int16(udivisible(16, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -4949,20 +4754,16 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                                        v2 := b.NewValue0(v.Pos, OpMul16, typ.UInt16)
                                        v3 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v3.AuxInt = int64(int16(sdivisible(16, c).m))
-                                       v2.AddArg(v3)
-                                       v2.AddArg(x)
-                                       v1.AddArg(v2)
+                                       v2.AddArg2(v3, x)
                                        v4 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v4.AuxInt = int64(int16(sdivisible(16, c).a))
-                                       v1.AddArg(v4)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, v4)
                                        v5 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v5.AuxInt = int64(16 - sdivisible(16, c).k)
-                                       v0.AddArg(v5)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v5)
                                        v6 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
                                        v6.AuxInt = int64(int16(sdivisible(16, c).max))
-                                       v.AddArg(v6)
+                                       v.AddArg2(v0, v6)
                                        return true
                                }
                        }
@@ -5025,14 +4826,12 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                                }
                                v.reset(OpEq16)
                                v0 := b.NewValue0(v.Pos, OpAnd16, t)
-                               v0.AddArg(n)
                                v1 := b.NewValue0(v.Pos, OpConst16, t)
                                v1.AuxInt = int64(1<<uint(k) - 1)
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(n, v1)
                                v2 := b.NewValue0(v.Pos, OpConst16, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -5053,8 +4852,7 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                                continue
                        }
                        v.reset(OpEq16)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -5082,14 +4880,12 @@ func rewriteValuegeneric_OpEq16(v *Value) bool {
                                }
                                v.reset(OpNeq16)
                                v0 := b.NewValue0(v.Pos, OpAnd16, t)
-                               v0.AddArg(x)
                                v1 := b.NewValue0(v.Pos, OpConst16, t)
                                v1.AuxInt = y
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(x, v1)
                                v2 := b.NewValue0(v.Pos, OpConst16, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -5137,8 +4933,7 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                v.reset(OpEq32)
                                v0 := b.NewValue0(v.Pos, OpConst32, t)
                                v0.AuxInt = int64(int32(c - d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -5211,16 +5006,13 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                                        v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v2.AuxInt = int64(int32(udivisible(32, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v3.AuxInt = int64(32 - udivisible(32, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v4.AuxInt = int64(int32(udivisible(32, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -5284,16 +5076,13 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                                        v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v2.AuxInt = int64(int32(udivisible(32, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v3.AuxInt = int64(32 - udivisible(32, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v4.AuxInt = int64(int32(udivisible(32, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -5357,16 +5146,13 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                                        v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v2.AuxInt = int64(int32(udivisible(32, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v3.AuxInt = int64(32 - udivisible(32, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v4.AuxInt = int64(int32(udivisible(32, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -5426,16 +5212,13 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                                        v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v2.AuxInt = int64(int32(udivisible(32, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v3.AuxInt = int64(32 - udivisible(32, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v4.AuxInt = int64(int32(udivisible(32, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -5504,16 +5287,13 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                                        v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v2.AuxInt = int64(int32(udivisible(32, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v3.AuxInt = int64(32 - udivisible(32, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v4.AuxInt = int64(int32(udivisible(32, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -5591,16 +5371,13 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                                        v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v2.AuxInt = int64(int32(udivisible(32, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v3.AuxInt = int64(32 - udivisible(32, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v4.AuxInt = int64(int32(udivisible(32, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -5672,20 +5449,16 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                        v2 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                                        v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v3.AuxInt = int64(int32(sdivisible(32, c).m))
-                                       v2.AddArg(v3)
-                                       v2.AddArg(x)
-                                       v1.AddArg(v2)
+                                       v2.AddArg2(v3, x)
                                        v4 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v4.AuxInt = int64(int32(sdivisible(32, c).a))
-                                       v1.AddArg(v4)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, v4)
                                        v5 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v5.AuxInt = int64(32 - sdivisible(32, c).k)
-                                       v0.AddArg(v5)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v5)
                                        v6 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v6.AuxInt = int64(int32(sdivisible(32, c).max))
-                                       v.AddArg(v6)
+                                       v.AddArg2(v0, v6)
                                        return true
                                }
                        }
@@ -5756,20 +5529,16 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                        v2 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                                        v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v3.AuxInt = int64(int32(sdivisible(32, c).m))
-                                       v2.AddArg(v3)
-                                       v2.AddArg(x)
-                                       v1.AddArg(v2)
+                                       v2.AddArg2(v3, x)
                                        v4 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v4.AuxInt = int64(int32(sdivisible(32, c).a))
-                                       v1.AddArg(v4)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, v4)
                                        v5 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v5.AuxInt = int64(32 - sdivisible(32, c).k)
-                                       v0.AddArg(v5)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v5)
                                        v6 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                        v6.AuxInt = int64(int32(sdivisible(32, c).max))
-                                       v.AddArg(v6)
+                                       v.AddArg2(v0, v6)
                                        return true
                                }
                        }
@@ -5848,20 +5617,16 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                                v2 := b.NewValue0(v.Pos, OpMul32, typ.UInt32)
                                                v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                                v3.AuxInt = int64(int32(sdivisible(32, c).m))
-                                               v2.AddArg(v3)
-                                               v2.AddArg(x)
-                                               v1.AddArg(v2)
+                                               v2.AddArg2(v3, x)
                                                v4 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                                v4.AuxInt = int64(int32(sdivisible(32, c).a))
-                                               v1.AddArg(v4)
-                                               v0.AddArg(v1)
+                                               v1.AddArg2(v2, v4)
                                                v5 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                                v5.AuxInt = int64(32 - sdivisible(32, c).k)
-                                               v0.AddArg(v5)
-                                               v.AddArg(v0)
+                                               v0.AddArg2(v1, v5)
                                                v6 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                                                v6.AuxInt = int64(int32(sdivisible(32, c).max))
-                                               v.AddArg(v6)
+                                               v.AddArg2(v0, v6)
                                                return true
                                        }
                                }
@@ -5925,14 +5690,12 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                }
                                v.reset(OpEq32)
                                v0 := b.NewValue0(v.Pos, OpAnd32, t)
-                               v0.AddArg(n)
                                v1 := b.NewValue0(v.Pos, OpConst32, t)
                                v1.AuxInt = int64(1<<uint(k) - 1)
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(n, v1)
                                v2 := b.NewValue0(v.Pos, OpConst32, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -5953,8 +5716,7 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                continue
                        }
                        v.reset(OpEq32)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -5982,14 +5744,12 @@ func rewriteValuegeneric_OpEq32(v *Value) bool {
                                }
                                v.reset(OpNeq32)
                                v0 := b.NewValue0(v.Pos, OpAnd32, t)
-                               v0.AddArg(x)
                                v1 := b.NewValue0(v.Pos, OpConst32, t)
                                v1.AuxInt = y
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(x, v1)
                                v2 := b.NewValue0(v.Pos, OpConst32, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -6060,8 +5820,7 @@ func rewriteValuegeneric_OpEq64(v *Value) bool {
                                v.reset(OpEq64)
                                v0 := b.NewValue0(v.Pos, OpConst64, t)
                                v0.AuxInt = c - d
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -6134,16 +5893,13 @@ func rewriteValuegeneric_OpEq64(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul64, typ.UInt64)
                                        v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v2.AuxInt = int64(udivisible(64, c).m)
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v3.AuxInt = int64(64 - udivisible(64, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v4.AuxInt = int64(udivisible(64, c).max)
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -6207,16 +5963,13 @@ func rewriteValuegeneric_OpEq64(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul64, typ.UInt64)
                                        v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v2.AuxInt = int64(udivisible(64, c).m)
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v3.AuxInt = int64(64 - udivisible(64, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v4.AuxInt = int64(udivisible(64, c).max)
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -6280,16 +6033,13 @@ func rewriteValuegeneric_OpEq64(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul64, typ.UInt64)
                                        v2 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v2.AuxInt = int64(udivisible(64, c).m)
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v3.AuxInt = int64(64 - udivisible(64, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v4.AuxInt = int64(udivisible(64, c).max)
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -6360,20 +6110,16 @@ func rewriteValuegeneric_OpEq64(v *Value) bool {
                                        v2 := b.NewValue0(v.Pos, OpMul64, typ.UInt64)
                                        v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v3.AuxInt = int64(sdivisible(64, c).m)
-                                       v2.AddArg(v3)
-                                       v2.AddArg(x)
-                                       v1.AddArg(v2)
+                                       v2.AddArg2(v3, x)
                                        v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v4.AuxInt = int64(sdivisible(64, c).a)
-                                       v1.AddArg(v4)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, v4)
                                        v5 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v5.AuxInt = int64(64 - sdivisible(64, c).k)
-                                       v0.AddArg(v5)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v5)
                                        v6 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                        v6.AuxInt = int64(sdivisible(64, c).max)
-                                       v.AddArg(v6)
+                                       v.AddArg2(v0, v6)
                                        return true
                                }
                        }
@@ -6452,20 +6198,16 @@ func rewriteValuegeneric_OpEq64(v *Value) bool {
                                                v2 := b.NewValue0(v.Pos, OpMul64, typ.UInt64)
                                                v3 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                                v3.AuxInt = int64(sdivisible(64, c).m)
-                                               v2.AddArg(v3)
-                                               v2.AddArg(x)
-                                               v1.AddArg(v2)
+                                               v2.AddArg2(v3, x)
                                                v4 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                                v4.AuxInt = int64(sdivisible(64, c).a)
-                                               v1.AddArg(v4)
-                                               v0.AddArg(v1)
+                                               v1.AddArg2(v2, v4)
                                                v5 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                                v5.AuxInt = int64(64 - sdivisible(64, c).k)
-                                               v0.AddArg(v5)
-                                               v.AddArg(v0)
+                                               v0.AddArg2(v1, v5)
                                                v6 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                                                v6.AuxInt = int64(sdivisible(64, c).max)
-                                               v.AddArg(v6)
+                                               v.AddArg2(v0, v6)
                                                return true
                                        }
                                }
@@ -6529,14 +6271,12 @@ func rewriteValuegeneric_OpEq64(v *Value) bool {
                                }
                                v.reset(OpEq64)
                                v0 := b.NewValue0(v.Pos, OpAnd64, t)
-                               v0.AddArg(n)
                                v1 := b.NewValue0(v.Pos, OpConst64, t)
                                v1.AuxInt = int64(1<<uint(k) - 1)
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(n, v1)
                                v2 := b.NewValue0(v.Pos, OpConst64, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -6557,8 +6297,7 @@ func rewriteValuegeneric_OpEq64(v *Value) bool {
                                continue
                        }
                        v.reset(OpEq64)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -6586,14 +6325,12 @@ func rewriteValuegeneric_OpEq64(v *Value) bool {
                                }
                                v.reset(OpNeq64)
                                v0 := b.NewValue0(v.Pos, OpAnd64, t)
-                               v0.AddArg(x)
                                v1 := b.NewValue0(v.Pos, OpConst64, t)
                                v1.AuxInt = y
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(x, v1)
                                v2 := b.NewValue0(v.Pos, OpConst64, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -6665,8 +6402,7 @@ func rewriteValuegeneric_OpEq8(v *Value) bool {
                                v.reset(OpEq8)
                                v0 := b.NewValue0(v.Pos, OpConst8, t)
                                v0.AuxInt = int64(int8(c - d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -6712,14 +6448,12 @@ func rewriteValuegeneric_OpEq8(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpMod32u, typ.UInt32)
                        v1 := b.NewValue0(v.Pos, OpZeroExt8to32, typ.UInt32)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                        v2.AuxInt = c & 0xff
-                       v0.AddArg(v2)
-                       v.AddArg(v0)
+                       v0.AddArg2(v1, v2)
                        v3 := b.NewValue0(v.Pos, OpConst32, typ.UInt32)
                        v3.AuxInt = 0
-                       v.AddArg(v3)
+                       v.AddArg2(v0, v3)
                        return true
                }
                break
@@ -6746,14 +6480,12 @@ func rewriteValuegeneric_OpEq8(v *Value) bool {
                        v0 := b.NewValue0(v.Pos, OpMod32, typ.Int32)
                        v1 := b.NewValue0(v.Pos, OpSignExt8to32, typ.Int32)
                        v1.AddArg(x)
-                       v0.AddArg(v1)
                        v2 := b.NewValue0(v.Pos, OpConst32, typ.Int32)
                        v2.AuxInt = c
-                       v0.AddArg(v2)
-                       v.AddArg(v0)
+                       v0.AddArg2(v1, v2)
                        v3 := b.NewValue0(v.Pos, OpConst32, typ.Int32)
                        v3.AuxInt = 0
-                       v.AddArg(v3)
+                       v.AddArg2(v0, v3)
                        return true
                }
                break
@@ -6811,16 +6543,13 @@ func rewriteValuegeneric_OpEq8(v *Value) bool {
                                        v1 := b.NewValue0(v.Pos, OpMul8, typ.UInt8)
                                        v2 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                                        v2.AuxInt = int64(int8(udivisible(8, c).m))
-                                       v1.AddArg(v2)
-                                       v1.AddArg(x)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, x)
                                        v3 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                                        v3.AuxInt = int64(8 - udivisible(8, c).k)
-                                       v0.AddArg(v3)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v3)
                                        v4 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                                        v4.AuxInt = int64(int8(udivisible(8, c).max))
-                                       v.AddArg(v4)
+                                       v.AddArg2(v0, v4)
                                        return true
                                }
                        }
@@ -6892,20 +6621,16 @@ func rewriteValuegeneric_OpEq8(v *Value) bool {
                                        v2 := b.NewValue0(v.Pos, OpMul8, typ.UInt8)
                                        v3 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                                        v3.AuxInt = int64(int8(sdivisible(8, c).m))
-                                       v2.AddArg(v3)
-                                       v2.AddArg(x)
-                                       v1.AddArg(v2)
+                                       v2.AddArg2(v3, x)
                                        v4 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                                        v4.AuxInt = int64(int8(sdivisible(8, c).a))
-                                       v1.AddArg(v4)
-                                       v0.AddArg(v1)
+                                       v1.AddArg2(v2, v4)
                                        v5 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                                        v5.AuxInt = int64(8 - sdivisible(8, c).k)
-                                       v0.AddArg(v5)
-                                       v.AddArg(v0)
+                                       v0.AddArg2(v1, v5)
                                        v6 := b.NewValue0(v.Pos, OpConst8, typ.UInt8)
                                        v6.AuxInt = int64(int8(sdivisible(8, c).max))
-                                       v.AddArg(v6)
+                                       v.AddArg2(v0, v6)
                                        return true
                                }
                        }
@@ -6968,14 +6693,12 @@ func rewriteValuegeneric_OpEq8(v *Value) bool {
                                }
                                v.reset(OpEq8)
                                v0 := b.NewValue0(v.Pos, OpAnd8, t)
-                               v0.AddArg(n)
                                v1 := b.NewValue0(v.Pos, OpConst8, t)
                                v1.AuxInt = int64(1<<uint(k) - 1)
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(n, v1)
                                v2 := b.NewValue0(v.Pos, OpConst8, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -6996,8 +6719,7 @@ func rewriteValuegeneric_OpEq8(v *Value) bool {
                                continue
                        }
                        v.reset(OpEq8)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -7025,14 +6747,12 @@ func rewriteValuegeneric_OpEq8(v *Value) bool {
                                }
                                v.reset(OpNeq8)
                                v0 := b.NewValue0(v.Pos, OpAnd8, t)
-                               v0.AddArg(x)
                                v1 := b.NewValue0(v.Pos, OpConst8, t)
                                v1.AuxInt = y
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(x, v1)
                                v2 := b.NewValue0(v.Pos, OpConst8, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -7105,10 +6825,9 @@ func rewriteValuegeneric_OpEqInter(v *Value) bool {
                v.reset(OpEqPtr)
                v0 := b.NewValue0(v.Pos, OpITab, typ.Uintptr)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpITab, typ.Uintptr)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -7521,10 +7240,9 @@ func rewriteValuegeneric_OpEqSlice(v *Value) bool {
                v.reset(OpEqPtr)
                v0 := b.NewValue0(v.Pos, OpSlicePtr, typ.BytePtr)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSlicePtr, typ.BytePtr)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -7620,8 +7338,7 @@ func rewriteValuegeneric_OpIMake(v *Value) bool {
                }
                val := v_1.Args[0]
                v.reset(OpIMake)
-               v.AddArg(typ)
-               v.AddArg(val)
+               v.AddArg2(typ, val)
                return true
        }
        // match: (IMake typ (ArrayMake1 val))
@@ -7633,8 +7350,7 @@ func rewriteValuegeneric_OpIMake(v *Value) bool {
                }
                val := v_1.Args[0]
                v.reset(OpIMake)
-               v.AddArg(typ)
-               v.AddArg(val)
+               v.AddArg2(typ, val)
                return true
        }
        return false
@@ -9418,8 +9134,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, op.Type)
                v1.AuxInt = o1
                v1.AddArg(p3)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg2(v1, mem)
                return true
        }
        // match: (Load <t1> op:(OffPtr [o1] p1) (Store {t2} p2 _ (Store {t3} p3 _ mem:(Zero [n] p4 _))))
@@ -9463,8 +9178,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, op.Type)
                v1.AuxInt = o1
                v1.AddArg(p4)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg2(v1, mem)
                return true
        }
        // match: (Load <t1> op:(OffPtr [o1] p1) (Store {t2} p2 _ (Store {t3} p3 _ (Store {t4} p4 _ mem:(Zero [n] p5 _)))))
@@ -9515,8 +9229,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, op.Type)
                v1.AuxInt = o1
                v1.AddArg(p5)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg2(v1, mem)
                return true
        }
        // match: (Load <t1> op:(OffPtr [o1] p1) (Store {t2} p2 _ (Store {t3} p3 _ (Store {t4} p4 _ (Store {t5} p5 _ mem:(Zero [n] p6 _))))))
@@ -9574,8 +9287,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, op.Type)
                v1.AuxInt = o1
                v1.AddArg(p6)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg2(v1, mem)
                return true
        }
        // match: (Load <t1> (OffPtr [o] p1) (Zero [n] p2 _))
@@ -9765,8 +9477,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(0).PtrTo())
                v1.AuxInt = 0
                v1.AddArg(ptr)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg2(v1, mem)
                v.AddArg(v0)
                return true
        }
@@ -9785,16 +9496,13 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(0).PtrTo())
                v1.AuxInt = 0
                v1.AddArg(ptr)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(v1, mem)
                v2 := b.NewValue0(v.Pos, OpLoad, t.FieldType(1))
                v3 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(1).PtrTo())
                v3.AuxInt = t.FieldOff(1)
                v3.AddArg(ptr)
-               v2.AddArg(v3)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg2(v3, mem)
+               v.AddArg2(v0, v2)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -9812,23 +9520,18 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(0).PtrTo())
                v1.AuxInt = 0
                v1.AddArg(ptr)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(v1, mem)
                v2 := b.NewValue0(v.Pos, OpLoad, t.FieldType(1))
                v3 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(1).PtrTo())
                v3.AuxInt = t.FieldOff(1)
                v3.AddArg(ptr)
-               v2.AddArg(v3)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg2(v3, mem)
                v4 := b.NewValue0(v.Pos, OpLoad, t.FieldType(2))
                v5 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(2).PtrTo())
                v5.AuxInt = t.FieldOff(2)
                v5.AddArg(ptr)
-               v4.AddArg(v5)
-               v4.AddArg(mem)
-               v.AddArg(v4)
+               v4.AddArg2(v5, mem)
+               v.AddArg3(v0, v2, v4)
                return true
        }
        // match: (Load <t> ptr mem)
@@ -9846,30 +9549,23 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(0).PtrTo())
                v1.AuxInt = 0
                v1.AddArg(ptr)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg2(v1, mem)
                v2 := b.NewValue0(v.Pos, OpLoad, t.FieldType(1))
                v3 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(1).PtrTo())
                v3.AuxInt = t.FieldOff(1)
                v3.AddArg(ptr)
-               v2.AddArg(v3)
-               v2.AddArg(mem)
-               v.AddArg(v2)
+               v2.AddArg2(v3, mem)
                v4 := b.NewValue0(v.Pos, OpLoad, t.FieldType(2))
                v5 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(2).PtrTo())
                v5.AuxInt = t.FieldOff(2)
                v5.AddArg(ptr)
-               v4.AddArg(v5)
-               v4.AddArg(mem)
-               v.AddArg(v4)
+               v4.AddArg2(v5, mem)
                v6 := b.NewValue0(v.Pos, OpLoad, t.FieldType(3))
                v7 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(3).PtrTo())
                v7.AuxInt = t.FieldOff(3)
                v7.AddArg(ptr)
-               v6.AddArg(v7)
-               v6.AddArg(mem)
-               v.AddArg(v6)
+               v6.AddArg2(v7, mem)
+               v.AddArg4(v0, v2, v4, v6)
                return true
        }
        // match: (Load <t> _ _)
@@ -9895,8 +9591,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
                }
                v.reset(OpArrayMake1)
                v0 := b.NewValue0(v.Pos, OpLoad, t.Elem())
-               v0.AddArg(ptr)
-               v0.AddArg(mem)
+               v0.AddArg2(ptr, mem)
                v.AddArg(v0)
                return true
        }
@@ -9916,10 +9611,9 @@ func rewriteValuegeneric_OpLsh16x16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh16x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh16x16 (Const16 [0]) _)
@@ -9948,10 +9642,9 @@ func rewriteValuegeneric_OpLsh16x32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh16x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh16x32 (Const16 [0]) _)
@@ -10046,10 +9739,9 @@ func rewriteValuegeneric_OpLsh16x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh16x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh16x64 (Rsh16Ux64 (Lsh16x64 x (Const64 [c1])) (Const64 [c2])) (Const64 [c3]))
@@ -10084,10 +9776,9 @@ func rewriteValuegeneric_OpLsh16x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh16x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = c1 - c2 + c3
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -10106,10 +9797,9 @@ func rewriteValuegeneric_OpLsh16x8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh16x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh16x8 (Const16 [0]) _)
@@ -10138,10 +9828,9 @@ func rewriteValuegeneric_OpLsh32x16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh32x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh32x16 (Const32 [0]) _)
@@ -10170,10 +9859,9 @@ func rewriteValuegeneric_OpLsh32x32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh32x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh32x32 (Const32 [0]) _)
@@ -10268,10 +9956,9 @@ func rewriteValuegeneric_OpLsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh32x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh32x64 (Rsh32Ux64 (Lsh32x64 x (Const64 [c1])) (Const64 [c2])) (Const64 [c3]))
@@ -10306,10 +9993,9 @@ func rewriteValuegeneric_OpLsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh32x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = c1 - c2 + c3
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -10328,10 +10014,9 @@ func rewriteValuegeneric_OpLsh32x8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh32x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh32x8 (Const32 [0]) _)
@@ -10360,10 +10045,9 @@ func rewriteValuegeneric_OpLsh64x16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh64x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh64x16 (Const64 [0]) _)
@@ -10392,10 +10076,9 @@ func rewriteValuegeneric_OpLsh64x32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh64x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh64x32 (Const64 [0]) _)
@@ -10490,10 +10173,9 @@ func rewriteValuegeneric_OpLsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh64x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh64x64 (Rsh64Ux64 (Lsh64x64 x (Const64 [c1])) (Const64 [c2])) (Const64 [c3]))
@@ -10528,10 +10210,9 @@ func rewriteValuegeneric_OpLsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh64x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = c1 - c2 + c3
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -10550,10 +10231,9 @@ func rewriteValuegeneric_OpLsh64x8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh64x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh64x8 (Const64 [0]) _)
@@ -10582,10 +10262,9 @@ func rewriteValuegeneric_OpLsh8x16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh8x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh8x16 (Const8 [0]) _)
@@ -10614,10 +10293,9 @@ func rewriteValuegeneric_OpLsh8x32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh8x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh8x32 (Const8 [0]) _)
@@ -10712,10 +10390,9 @@ func rewriteValuegeneric_OpLsh8x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh8x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh8x64 (Rsh8Ux64 (Lsh8x64 x (Const64 [c1])) (Const64 [c2])) (Const64 [c3]))
@@ -10750,10 +10427,9 @@ func rewriteValuegeneric_OpLsh8x64(v *Value) bool {
                        break
                }
                v.reset(OpLsh8x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = c1 - c2 + c3
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -10772,10 +10448,9 @@ func rewriteValuegeneric_OpLsh8x8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpLsh8x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Lsh8x8 (Const8 [0]) _)
@@ -10827,10 +10502,9 @@ func rewriteValuegeneric_OpMod16(v *Value) bool {
                        break
                }
                v.reset(OpAnd16)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst16, t)
                v0.AuxInt = (c & 0xffff) - 1
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod16 <t> n (Const16 [c]))
@@ -10848,10 +10522,9 @@ func rewriteValuegeneric_OpMod16(v *Value) bool {
                }
                v.reset(OpMod16)
                v.Type = t
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst16, t)
                v0.AuxInt = -c
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod16 <t> x (Const16 [c]))
@@ -10868,18 +10541,15 @@ func rewriteValuegeneric_OpMod16(v *Value) bool {
                        break
                }
                v.reset(OpSub16)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMul16, t)
                v1 := b.NewValue0(v.Pos, OpDiv16, t)
-               v1.AddArg(x)
                v2 := b.NewValue0(v.Pos, OpConst16, t)
                v2.AuxInt = c
-               v1.AddArg(v2)
-               v0.AddArg(v1)
+               v1.AddArg2(x, v2)
                v3 := b.NewValue0(v.Pos, OpConst16, t)
                v3.AuxInt = c
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v3)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -10921,10 +10591,9 @@ func rewriteValuegeneric_OpMod16u(v *Value) bool {
                        break
                }
                v.reset(OpAnd16)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst16, t)
                v0.AuxInt = (c & 0xffff) - 1
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod16u <t> x (Const16 [c]))
@@ -10941,18 +10610,15 @@ func rewriteValuegeneric_OpMod16u(v *Value) bool {
                        break
                }
                v.reset(OpSub16)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMul16, t)
                v1 := b.NewValue0(v.Pos, OpDiv16u, t)
-               v1.AddArg(x)
                v2 := b.NewValue0(v.Pos, OpConst16, t)
                v2.AuxInt = c
-               v1.AddArg(v2)
-               v0.AddArg(v1)
+               v1.AddArg2(x, v2)
                v3 := b.NewValue0(v.Pos, OpConst16, t)
                v3.AuxInt = c
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v3)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -10994,10 +10660,9 @@ func rewriteValuegeneric_OpMod32(v *Value) bool {
                        break
                }
                v.reset(OpAnd32)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst32, t)
                v0.AuxInt = (c & 0xffffffff) - 1
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod32 <t> n (Const32 [c]))
@@ -11015,10 +10680,9 @@ func rewriteValuegeneric_OpMod32(v *Value) bool {
                }
                v.reset(OpMod32)
                v.Type = t
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst32, t)
                v0.AuxInt = -c
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod32 <t> x (Const32 [c]))
@@ -11035,18 +10699,15 @@ func rewriteValuegeneric_OpMod32(v *Value) bool {
                        break
                }
                v.reset(OpSub32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMul32, t)
                v1 := b.NewValue0(v.Pos, OpDiv32, t)
-               v1.AddArg(x)
                v2 := b.NewValue0(v.Pos, OpConst32, t)
                v2.AuxInt = c
-               v1.AddArg(v2)
-               v0.AddArg(v1)
+               v1.AddArg2(x, v2)
                v3 := b.NewValue0(v.Pos, OpConst32, t)
                v3.AuxInt = c
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v3)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -11088,10 +10749,9 @@ func rewriteValuegeneric_OpMod32u(v *Value) bool {
                        break
                }
                v.reset(OpAnd32)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst32, t)
                v0.AuxInt = (c & 0xffffffff) - 1
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod32u <t> x (Const32 [c]))
@@ -11108,18 +10768,15 @@ func rewriteValuegeneric_OpMod32u(v *Value) bool {
                        break
                }
                v.reset(OpSub32)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMul32, t)
                v1 := b.NewValue0(v.Pos, OpDiv32u, t)
-               v1.AddArg(x)
                v2 := b.NewValue0(v.Pos, OpConst32, t)
                v2.AuxInt = c
-               v1.AddArg(v2)
-               v0.AddArg(v1)
+               v1.AddArg2(x, v2)
                v3 := b.NewValue0(v.Pos, OpConst32, t)
                v3.AuxInt = c
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v3)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -11161,10 +10818,9 @@ func rewriteValuegeneric_OpMod64(v *Value) bool {
                        break
                }
                v.reset(OpAnd64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c - 1
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod64 n (Const64 [-1<<63]))
@@ -11195,10 +10851,9 @@ func rewriteValuegeneric_OpMod64(v *Value) bool {
                }
                v.reset(OpMod64)
                v.Type = t
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = -c
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod64 <t> x (Const64 [c]))
@@ -11215,18 +10870,15 @@ func rewriteValuegeneric_OpMod64(v *Value) bool {
                        break
                }
                v.reset(OpSub64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMul64, t)
                v1 := b.NewValue0(v.Pos, OpDiv64, t)
-               v1.AddArg(x)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = c
-               v1.AddArg(v2)
-               v0.AddArg(v1)
+               v1.AddArg2(x, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = c
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v3)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -11268,10 +10920,9 @@ func rewriteValuegeneric_OpMod64u(v *Value) bool {
                        break
                }
                v.reset(OpAnd64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c - 1
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod64u <t> n (Const64 [-1<<63]))
@@ -11283,10 +10934,9 @@ func rewriteValuegeneric_OpMod64u(v *Value) bool {
                        break
                }
                v.reset(OpAnd64)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = 1<<63 - 1
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod64u <t> x (Const64 [c]))
@@ -11303,18 +10953,15 @@ func rewriteValuegeneric_OpMod64u(v *Value) bool {
                        break
                }
                v.reset(OpSub64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMul64, t)
                v1 := b.NewValue0(v.Pos, OpDiv64u, t)
-               v1.AddArg(x)
                v2 := b.NewValue0(v.Pos, OpConst64, t)
                v2.AuxInt = c
-               v1.AddArg(v2)
-               v0.AddArg(v1)
+               v1.AddArg2(x, v2)
                v3 := b.NewValue0(v.Pos, OpConst64, t)
                v3.AuxInt = c
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v3)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -11356,10 +11003,9 @@ func rewriteValuegeneric_OpMod8(v *Value) bool {
                        break
                }
                v.reset(OpAnd8)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst8, t)
                v0.AuxInt = (c & 0xff) - 1
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod8 <t> n (Const8 [c]))
@@ -11377,10 +11023,9 @@ func rewriteValuegeneric_OpMod8(v *Value) bool {
                }
                v.reset(OpMod8)
                v.Type = t
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst8, t)
                v0.AuxInt = -c
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod8 <t> x (Const8 [c]))
@@ -11397,18 +11042,15 @@ func rewriteValuegeneric_OpMod8(v *Value) bool {
                        break
                }
                v.reset(OpSub8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMul8, t)
                v1 := b.NewValue0(v.Pos, OpDiv8, t)
-               v1.AddArg(x)
                v2 := b.NewValue0(v.Pos, OpConst8, t)
                v2.AuxInt = c
-               v1.AddArg(v2)
-               v0.AddArg(v1)
+               v1.AddArg2(x, v2)
                v3 := b.NewValue0(v.Pos, OpConst8, t)
                v3.AuxInt = c
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v3)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -11450,10 +11092,9 @@ func rewriteValuegeneric_OpMod8u(v *Value) bool {
                        break
                }
                v.reset(OpAnd8)
-               v.AddArg(n)
                v0 := b.NewValue0(v.Pos, OpConst8, t)
                v0.AuxInt = (c & 0xff) - 1
-               v.AddArg(v0)
+               v.AddArg2(n, v0)
                return true
        }
        // match: (Mod8u <t> x (Const8 [c]))
@@ -11470,18 +11111,15 @@ func rewriteValuegeneric_OpMod8u(v *Value) bool {
                        break
                }
                v.reset(OpSub8)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpMul8, t)
                v1 := b.NewValue0(v.Pos, OpDiv8u, t)
-               v1.AddArg(x)
                v2 := b.NewValue0(v.Pos, OpConst8, t)
                v2.AuxInt = c
-               v1.AddArg(v2)
-               v0.AddArg(v1)
+               v1.AddArg2(x, v2)
                v3 := b.NewValue0(v.Pos, OpConst8, t)
                v3.AuxInt = c
-               v0.AddArg(v3)
-               v.AddArg(v0)
+               v0.AddArg2(v1, v3)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -11512,8 +11150,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v.reset(OpZero)
                v.AuxInt = n
                v.Aux = t
-               v.AddArg(dst1)
-               v.AddArg(mem)
+               v.AddArg2(dst1, mem)
                return true
        }
        // match: (Move {t} [n] dst1 src mem:(VarDef (Zero {t} [n] dst0 _)))
@@ -11540,8 +11177,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v.reset(OpZero)
                v.AuxInt = n
                v.Aux = t
-               v.AddArg(dst1)
-               v.AddArg(mem)
+               v.AddArg2(dst1, mem)
                return true
        }
        // match: (Move {t1} [n] dst1 src1 store:(Store {t2} op:(OffPtr [o2] dst2) _ mem))
@@ -11570,9 +11206,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = n
                v.Aux = t1
-               v.AddArg(dst1)
-               v.AddArg(src1)
-               v.AddArg(mem)
+               v.AddArg3(dst1, src1, mem)
                return true
        }
        // match: (Move {t} [n] dst1 src1 move:(Move {t} [n] dst2 _ mem))
@@ -11595,9 +11229,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = n
                v.Aux = t
-               v.AddArg(dst1)
-               v.AddArg(src1)
-               v.AddArg(mem)
+               v.AddArg3(dst1, src1, mem)
                return true
        }
        // match: (Move {t} [n] dst1 src1 vardef:(VarDef {x} move:(Move {t} [n] dst2 _ mem)))
@@ -11625,12 +11257,10 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = n
                v.Aux = t
-               v.AddArg(dst1)
-               v.AddArg(src1)
                v0 := b.NewValue0(v.Pos, OpVarDef, types.TypeMem)
                v0.Aux = x
                v0.AddArg(mem)
-               v.AddArg(v0)
+               v.AddArg3(dst1, src1, v0)
                return true
        }
        // match: (Move {t} [n] dst1 src1 zero:(Zero {t} [n] dst2 mem))
@@ -11653,9 +11283,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = n
                v.Aux = t
-               v.AddArg(dst1)
-               v.AddArg(src1)
-               v.AddArg(mem)
+               v.AddArg3(dst1, src1, mem)
                return true
        }
        // match: (Move {t} [n] dst1 src1 vardef:(VarDef {x} zero:(Zero {t} [n] dst2 mem)))
@@ -11683,12 +11311,10 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = n
                v.Aux = t
-               v.AddArg(dst1)
-               v.AddArg(src1)
                v0 := b.NewValue0(v.Pos, OpVarDef, types.TypeMem)
                v0.Aux = x
                v0.AddArg(mem)
-               v.AddArg(v0)
+               v.AddArg3(dst1, src1, v0)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(Store {t2} op2:(OffPtr <tt2> [o2] p2) d1 (Store {t3} op3:(OffPtr <tt3> [0] p3) d2 _)))
@@ -11737,17 +11363,13 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = 0
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(v2, d2, mem)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(Store {t2} op2:(OffPtr <tt2> [o2] p2) d1 (Store {t3} op3:(OffPtr <tt3> [o3] p3) d2 (Store {t4} op4:(OffPtr <tt4> [0] p4) d3 _))))
@@ -11810,25 +11432,19 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = o3
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = t4
                v4 := b.NewValue0(v.Pos, OpOffPtr, tt4)
                v4.AuxInt = 0
                v4.AddArg(dst)
-               v3.AddArg(v4)
-               v3.AddArg(d3)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(v4, d3, mem)
+               v1.AddArg3(v2, d2, v3)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(Store {t2} op2:(OffPtr <tt2> [o2] p2) d1 (Store {t3} op3:(OffPtr <tt3> [o3] p3) d2 (Store {t4} op4:(OffPtr <tt4> [o4] p4) d3 (Store {t5} op5:(OffPtr <tt5> [0] p5) d4 _)))))
@@ -11905,33 +11521,25 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = o3
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = t4
                v4 := b.NewValue0(v.Pos, OpOffPtr, tt4)
                v4.AuxInt = o4
                v4.AddArg(dst)
-               v3.AddArg(v4)
-               v3.AddArg(d3)
                v5 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v5.Aux = t5
                v6 := b.NewValue0(v.Pos, OpOffPtr, tt5)
                v6.AuxInt = 0
                v6.AddArg(dst)
-               v5.AddArg(v6)
-               v5.AddArg(d4)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg3(v6, d4, mem)
+               v3.AddArg3(v4, d3, v5)
+               v1.AddArg3(v2, d2, v3)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(VarDef (Store {t2} op2:(OffPtr <tt2> [o2] p2) d1 (Store {t3} op3:(OffPtr <tt3> [0] p3) d2 _))))
@@ -11984,17 +11592,13 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = 0
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(v2, d2, mem)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(VarDef (Store {t2} op2:(OffPtr <tt2> [o2] p2) d1 (Store {t3} op3:(OffPtr <tt3> [o3] p3) d2 (Store {t4} op4:(OffPtr <tt4> [0] p4) d3 _)))))
@@ -12061,25 +11665,19 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = o3
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = t4
                v4 := b.NewValue0(v.Pos, OpOffPtr, tt4)
                v4.AuxInt = 0
                v4.AddArg(dst)
-               v3.AddArg(v4)
-               v3.AddArg(d3)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(v4, d3, mem)
+               v1.AddArg3(v2, d2, v3)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(VarDef (Store {t2} op2:(OffPtr <tt2> [o2] p2) d1 (Store {t3} op3:(OffPtr <tt3> [o3] p3) d2 (Store {t4} op4:(OffPtr <tt4> [o4] p4) d3 (Store {t5} op5:(OffPtr <tt5> [0] p5) d4 _))))))
@@ -12160,33 +11758,25 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = o3
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = t4
                v4 := b.NewValue0(v.Pos, OpOffPtr, tt4)
                v4.AuxInt = o4
                v4.AddArg(dst)
-               v3.AddArg(v4)
-               v3.AddArg(d3)
                v5 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v5.Aux = t5
                v6 := b.NewValue0(v.Pos, OpOffPtr, tt5)
                v6.AuxInt = 0
                v6.AddArg(dst)
-               v5.AddArg(v6)
-               v5.AddArg(d4)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg3(v6, d4, mem)
+               v3.AddArg3(v4, d3, v5)
+               v1.AddArg3(v2, d2, v3)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(Store {t2} op2:(OffPtr <tt2> [o2] p2) d1 (Zero {t3} [n] p3 _)))
@@ -12226,14 +11816,11 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpZero, types.TypeMem)
                v1.AuxInt = n
                v1.Aux = t1
-               v1.AddArg(dst)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(dst, mem)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(Store {t2} (OffPtr <tt2> [o2] p2) d1 (Store {t3} (OffPtr <tt3> [o3] p3) d2 (Zero {t4} [n] p4 _))))
@@ -12287,22 +11874,17 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = o3
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
                v3 := b.NewValue0(v.Pos, OpZero, types.TypeMem)
                v3.AuxInt = n
                v3.Aux = t1
-               v3.AddArg(dst)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg2(dst, mem)
+               v1.AddArg3(v2, d2, v3)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(Store {t2} (OffPtr <tt2> [o2] p2) d1 (Store {t3} (OffPtr <tt3> [o3] p3) d2 (Store {t4} (OffPtr <tt4> [o4] p4) d3 (Zero {t5} [n] p5 _)))))
@@ -12370,30 +11952,23 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = o3
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = t4
                v4 := b.NewValue0(v.Pos, OpOffPtr, tt4)
                v4.AuxInt = o4
                v4.AddArg(dst)
-               v3.AddArg(v4)
-               v3.AddArg(d3)
                v5 := b.NewValue0(v.Pos, OpZero, types.TypeMem)
                v5.AuxInt = n
                v5.Aux = t1
-               v5.AddArg(dst)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg2(dst, mem)
+               v3.AddArg3(v4, d3, v5)
+               v1.AddArg3(v2, d2, v3)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(Store {t2} (OffPtr <tt2> [o2] p2) d1 (Store {t3} (OffPtr <tt3> [o3] p3) d2 (Store {t4} (OffPtr <tt4> [o4] p4) d3 (Store {t5} (OffPtr <tt5> [o5] p5) d4 (Zero {t6} [n] p6 _))))))
@@ -12475,38 +12050,29 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = o3
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = t4
                v4 := b.NewValue0(v.Pos, OpOffPtr, tt4)
                v4.AuxInt = o4
                v4.AddArg(dst)
-               v3.AddArg(v4)
-               v3.AddArg(d3)
                v5 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v5.Aux = t5
                v6 := b.NewValue0(v.Pos, OpOffPtr, tt5)
                v6.AuxInt = o5
                v6.AddArg(dst)
-               v5.AddArg(v6)
-               v5.AddArg(d4)
                v7 := b.NewValue0(v.Pos, OpZero, types.TypeMem)
                v7.AuxInt = n
                v7.Aux = t1
-               v7.AddArg(dst)
-               v7.AddArg(mem)
-               v5.AddArg(v7)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v7.AddArg2(dst, mem)
+               v5.AddArg3(v6, d4, v7)
+               v3.AddArg3(v4, d3, v5)
+               v1.AddArg3(v2, d2, v3)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(VarDef (Store {t2} op2:(OffPtr <tt2> [o2] p2) d1 (Zero {t3} [n] p3 _))))
@@ -12550,14 +12116,11 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpZero, types.TypeMem)
                v1.AuxInt = n
                v1.Aux = t1
-               v1.AddArg(dst)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg2(dst, mem)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(VarDef (Store {t2} (OffPtr <tt2> [o2] p2) d1 (Store {t3} (OffPtr <tt3> [o3] p3) d2 (Zero {t4} [n] p4 _)))))
@@ -12615,22 +12178,17 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = o3
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
                v3 := b.NewValue0(v.Pos, OpZero, types.TypeMem)
                v3.AuxInt = n
                v3.Aux = t1
-               v3.AddArg(dst)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg2(dst, mem)
+               v1.AddArg3(v2, d2, v3)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(VarDef (Store {t2} (OffPtr <tt2> [o2] p2) d1 (Store {t3} (OffPtr <tt3> [o3] p3) d2 (Store {t4} (OffPtr <tt4> [o4] p4) d3 (Zero {t5} [n] p5 _))))))
@@ -12702,30 +12260,23 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = o3
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = t4
                v4 := b.NewValue0(v.Pos, OpOffPtr, tt4)
                v4.AuxInt = o4
                v4.AddArg(dst)
-               v3.AddArg(v4)
-               v3.AddArg(d3)
                v5 := b.NewValue0(v.Pos, OpZero, types.TypeMem)
                v5.AuxInt = n
                v5.Aux = t1
-               v5.AddArg(dst)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg2(dst, mem)
+               v3.AddArg3(v4, d3, v5)
+               v1.AddArg3(v2, d2, v3)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [n] dst p1 mem:(VarDef (Store {t2} (OffPtr <tt2> [o2] p2) d1 (Store {t3} (OffPtr <tt3> [o3] p3) d2 (Store {t4} (OffPtr <tt4> [o4] p4) d3 (Store {t5} (OffPtr <tt5> [o5] p5) d4 (Zero {t6} [n] p6 _)))))))
@@ -12811,38 +12362,29 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, tt2)
                v0.AuxInt = o2
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(d1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
                v2 := b.NewValue0(v.Pos, OpOffPtr, tt3)
                v2.AuxInt = o3
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(d2)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = t4
                v4 := b.NewValue0(v.Pos, OpOffPtr, tt4)
                v4.AuxInt = o4
                v4.AddArg(dst)
-               v3.AddArg(v4)
-               v3.AddArg(d3)
                v5 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v5.Aux = t5
                v6 := b.NewValue0(v.Pos, OpOffPtr, tt5)
                v6.AuxInt = o5
                v6.AddArg(dst)
-               v5.AddArg(v6)
-               v5.AddArg(d4)
                v7 := b.NewValue0(v.Pos, OpZero, types.TypeMem)
                v7.AuxInt = n
                v7.Aux = t1
-               v7.AddArg(dst)
-               v7.AddArg(mem)
-               v5.AddArg(v7)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v7.AddArg2(dst, mem)
+               v5.AddArg3(v6, d4, v7)
+               v3.AddArg3(v4, d3, v5)
+               v1.AddArg3(v2, d2, v3)
+               v.AddArg3(v0, d1, v1)
                return true
        }
        // match: (Move {t1} [s] dst tmp1 midmem:(Move {t2} [s] tmp2 src _))
@@ -12867,9 +12409,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = s
                v.Aux = t1
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(midmem)
+               v.AddArg3(dst, src, midmem)
                return true
        }
        // match: (Move {t1} [s] dst tmp1 midmem:(VarDef (Move {t2} [s] tmp2 src _)))
@@ -12898,9 +12438,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = s
                v.Aux = t1
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(midmem)
+               v.AddArg3(dst, src, midmem)
                return true
        }
        // match: (Move dst src mem)
@@ -12988,10 +12526,9 @@ func rewriteValuegeneric_OpMul16(v *Value) bool {
                        }
                        v.reset(OpLsh16x64)
                        v.Type = t
-                       v.AddArg(n)
                        v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                        v0.AuxInt = log2(c)
-                       v.AddArg(v0)
+                       v.AddArg2(n, v0)
                        return true
                }
                break
@@ -13012,10 +12549,9 @@ func rewriteValuegeneric_OpMul16(v *Value) bool {
                        }
                        v.reset(OpNeg16)
                        v0 := b.NewValue0(v.Pos, OpLsh16x64, t)
-                       v0.AddArg(n)
                        v1 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                        v1.AuxInt = log2(-c)
-                       v0.AddArg(v1)
+                       v0.AddArg2(n, v1)
                        v.AddArg(v0)
                        return true
                }
@@ -13058,8 +12594,7 @@ func rewriteValuegeneric_OpMul16(v *Value) bool {
                                v.reset(OpMul16)
                                v0 := b.NewValue0(v.Pos, OpConst16, t)
                                v0.AuxInt = int64(int16(c * d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -13135,10 +12670,9 @@ func rewriteValuegeneric_OpMul32(v *Value) bool {
                        }
                        v.reset(OpLsh32x64)
                        v.Type = t
-                       v.AddArg(n)
                        v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                        v0.AuxInt = log2(c)
-                       v.AddArg(v0)
+                       v.AddArg2(n, v0)
                        return true
                }
                break
@@ -13159,10 +12693,9 @@ func rewriteValuegeneric_OpMul32(v *Value) bool {
                        }
                        v.reset(OpNeg32)
                        v0 := b.NewValue0(v.Pos, OpLsh32x64, t)
-                       v0.AddArg(n)
                        v1 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                        v1.AuxInt = log2(-c)
-                       v0.AddArg(v1)
+                       v0.AddArg2(n, v1)
                        v.AddArg(v0)
                        return true
                }
@@ -13192,13 +12725,11 @@ func rewriteValuegeneric_OpMul32(v *Value) bool {
                                v.reset(OpAdd32)
                                v0 := b.NewValue0(v.Pos, OpConst32, t)
                                v0.AuxInt = int64(int32(c * d))
-                               v.AddArg(v0)
                                v1 := b.NewValue0(v.Pos, OpMul32, t)
                                v2 := b.NewValue0(v.Pos, OpConst32, t)
                                v2.AuxInt = c
-                               v1.AddArg(v2)
-                               v1.AddArg(x)
-                               v.AddArg(v1)
+                               v1.AddArg2(v2, x)
+                               v.AddArg2(v0, v1)
                                return true
                        }
                }
@@ -13241,8 +12772,7 @@ func rewriteValuegeneric_OpMul32(v *Value) bool {
                                v.reset(OpMul32)
                                v0 := b.NewValue0(v.Pos, OpConst32, t)
                                v0.AuxInt = int64(int32(c * d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -13309,8 +12839,7 @@ func rewriteValuegeneric_OpMul32F(v *Value) bool {
                                continue
                        }
                        v.reset(OpAdd32F)
-                       v.AddArg(x)
-                       v.AddArg(x)
+                       v.AddArg2(x, x)
                        return true
                }
                break
@@ -13385,10 +12914,9 @@ func rewriteValuegeneric_OpMul64(v *Value) bool {
                        }
                        v.reset(OpLsh64x64)
                        v.Type = t
-                       v.AddArg(n)
                        v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                        v0.AuxInt = log2(c)
-                       v.AddArg(v0)
+                       v.AddArg2(n, v0)
                        return true
                }
                break
@@ -13409,10 +12937,9 @@ func rewriteValuegeneric_OpMul64(v *Value) bool {
                        }
                        v.reset(OpNeg64)
                        v0 := b.NewValue0(v.Pos, OpLsh64x64, t)
-                       v0.AddArg(n)
                        v1 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                        v1.AuxInt = log2(-c)
-                       v0.AddArg(v1)
+                       v0.AddArg2(n, v1)
                        v.AddArg(v0)
                        return true
                }
@@ -13442,13 +12969,11 @@ func rewriteValuegeneric_OpMul64(v *Value) bool {
                                v.reset(OpAdd64)
                                v0 := b.NewValue0(v.Pos, OpConst64, t)
                                v0.AuxInt = c * d
-                               v.AddArg(v0)
                                v1 := b.NewValue0(v.Pos, OpMul64, t)
                                v2 := b.NewValue0(v.Pos, OpConst64, t)
                                v2.AuxInt = c
-                               v1.AddArg(v2)
-                               v1.AddArg(x)
-                               v.AddArg(v1)
+                               v1.AddArg2(v2, x)
+                               v.AddArg2(v0, v1)
                                return true
                        }
                }
@@ -13491,8 +13016,7 @@ func rewriteValuegeneric_OpMul64(v *Value) bool {
                                v.reset(OpMul64)
                                v0 := b.NewValue0(v.Pos, OpConst64, t)
                                v0.AuxInt = c * d
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -13559,8 +13083,7 @@ func rewriteValuegeneric_OpMul64F(v *Value) bool {
                                continue
                        }
                        v.reset(OpAdd64F)
-                       v.AddArg(x)
-                       v.AddArg(x)
+                       v.AddArg2(x, x)
                        return true
                }
                break
@@ -13635,10 +13158,9 @@ func rewriteValuegeneric_OpMul8(v *Value) bool {
                        }
                        v.reset(OpLsh8x64)
                        v.Type = t
-                       v.AddArg(n)
                        v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                        v0.AuxInt = log2(c)
-                       v.AddArg(v0)
+                       v.AddArg2(n, v0)
                        return true
                }
                break
@@ -13659,10 +13181,9 @@ func rewriteValuegeneric_OpMul8(v *Value) bool {
                        }
                        v.reset(OpNeg8)
                        v0 := b.NewValue0(v.Pos, OpLsh8x64, t)
-                       v0.AddArg(n)
                        v1 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                        v1.AuxInt = log2(-c)
-                       v0.AddArg(v1)
+                       v0.AddArg2(n, v1)
                        v.AddArg(v0)
                        return true
                }
@@ -13705,8 +13226,7 @@ func rewriteValuegeneric_OpMul8(v *Value) bool {
                                v.reset(OpMul8)
                                v0 := b.NewValue0(v.Pos, OpConst8, t)
                                v0.AuxInt = int64(int8(c * d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -13737,8 +13257,7 @@ func rewriteValuegeneric_OpNeg16(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpSub16)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Neg16 (Neg16 x))
@@ -13764,8 +13283,7 @@ func rewriteValuegeneric_OpNeg16(v *Value) bool {
                v.reset(OpAdd16)
                v0 := b.NewValue0(v.Pos, OpConst16, t)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        return false
@@ -13793,8 +13311,7 @@ func rewriteValuegeneric_OpNeg32(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpSub32)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Neg32 (Neg32 x))
@@ -13820,8 +13337,7 @@ func rewriteValuegeneric_OpNeg32(v *Value) bool {
                v.reset(OpAdd32)
                v0 := b.NewValue0(v.Pos, OpConst32, t)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        return false
@@ -13868,8 +13384,7 @@ func rewriteValuegeneric_OpNeg64(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpSub64)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Neg64 (Neg64 x))
@@ -13895,8 +13410,7 @@ func rewriteValuegeneric_OpNeg64(v *Value) bool {
                v.reset(OpAdd64)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        return false
@@ -13943,8 +13457,7 @@ func rewriteValuegeneric_OpNeg8(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpSub8)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Neg8 (Neg8 x))
@@ -13970,8 +13483,7 @@ func rewriteValuegeneric_OpNeg8(v *Value) bool {
                v.reset(OpAdd8)
                v0 := b.NewValue0(v.Pos, OpConst8, t)
                v0.AuxInt = 1
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        return false
@@ -14016,8 +13528,7 @@ func rewriteValuegeneric_OpNeq16(v *Value) bool {
                                v.reset(OpNeq16)
                                v0 := b.NewValue0(v.Pos, OpConst16, t)
                                v0.AuxInt = int64(int16(c - d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -14097,14 +13608,12 @@ func rewriteValuegeneric_OpNeq16(v *Value) bool {
                                }
                                v.reset(OpNeq16)
                                v0 := b.NewValue0(v.Pos, OpAnd16, t)
-                               v0.AddArg(n)
                                v1 := b.NewValue0(v.Pos, OpConst16, t)
                                v1.AuxInt = int64(1<<uint(k) - 1)
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(n, v1)
                                v2 := b.NewValue0(v.Pos, OpConst16, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -14125,8 +13634,7 @@ func rewriteValuegeneric_OpNeq16(v *Value) bool {
                                continue
                        }
                        v.reset(OpNeq16)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -14154,14 +13662,12 @@ func rewriteValuegeneric_OpNeq16(v *Value) bool {
                                }
                                v.reset(OpEq16)
                                v0 := b.NewValue0(v.Pos, OpAnd16, t)
-                               v0.AddArg(x)
                                v1 := b.NewValue0(v.Pos, OpConst16, t)
                                v1.AuxInt = y
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(x, v1)
                                v2 := b.NewValue0(v.Pos, OpConst16, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -14209,8 +13715,7 @@ func rewriteValuegeneric_OpNeq32(v *Value) bool {
                                v.reset(OpNeq32)
                                v0 := b.NewValue0(v.Pos, OpConst32, t)
                                v0.AuxInt = int64(int32(c - d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -14290,14 +13795,12 @@ func rewriteValuegeneric_OpNeq32(v *Value) bool {
                                }
                                v.reset(OpNeq32)
                                v0 := b.NewValue0(v.Pos, OpAnd32, t)
-                               v0.AddArg(n)
                                v1 := b.NewValue0(v.Pos, OpConst32, t)
                                v1.AuxInt = int64(1<<uint(k) - 1)
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(n, v1)
                                v2 := b.NewValue0(v.Pos, OpConst32, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -14318,8 +13821,7 @@ func rewriteValuegeneric_OpNeq32(v *Value) bool {
                                continue
                        }
                        v.reset(OpNeq32)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -14347,14 +13849,12 @@ func rewriteValuegeneric_OpNeq32(v *Value) bool {
                                }
                                v.reset(OpEq32)
                                v0 := b.NewValue0(v.Pos, OpAnd32, t)
-                               v0.AddArg(x)
                                v1 := b.NewValue0(v.Pos, OpConst32, t)
                                v1.AuxInt = y
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(x, v1)
                                v2 := b.NewValue0(v.Pos, OpConst32, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -14425,8 +13925,7 @@ func rewriteValuegeneric_OpNeq64(v *Value) bool {
                                v.reset(OpNeq64)
                                v0 := b.NewValue0(v.Pos, OpConst64, t)
                                v0.AuxInt = c - d
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -14506,14 +14005,12 @@ func rewriteValuegeneric_OpNeq64(v *Value) bool {
                                }
                                v.reset(OpNeq64)
                                v0 := b.NewValue0(v.Pos, OpAnd64, t)
-                               v0.AddArg(n)
                                v1 := b.NewValue0(v.Pos, OpConst64, t)
                                v1.AuxInt = int64(1<<uint(k) - 1)
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(n, v1)
                                v2 := b.NewValue0(v.Pos, OpConst64, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -14534,8 +14031,7 @@ func rewriteValuegeneric_OpNeq64(v *Value) bool {
                                continue
                        }
                        v.reset(OpNeq64)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -14563,14 +14059,12 @@ func rewriteValuegeneric_OpNeq64(v *Value) bool {
                                }
                                v.reset(OpEq64)
                                v0 := b.NewValue0(v.Pos, OpAnd64, t)
-                               v0.AddArg(x)
                                v1 := b.NewValue0(v.Pos, OpConst64, t)
                                v1.AuxInt = y
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(x, v1)
                                v2 := b.NewValue0(v.Pos, OpConst64, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -14641,8 +14135,7 @@ func rewriteValuegeneric_OpNeq8(v *Value) bool {
                                v.reset(OpNeq8)
                                v0 := b.NewValue0(v.Pos, OpConst8, t)
                                v0.AuxInt = int64(int8(c - d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -14722,14 +14215,12 @@ func rewriteValuegeneric_OpNeq8(v *Value) bool {
                                }
                                v.reset(OpNeq8)
                                v0 := b.NewValue0(v.Pos, OpAnd8, t)
-                               v0.AddArg(n)
                                v1 := b.NewValue0(v.Pos, OpConst8, t)
                                v1.AuxInt = int64(1<<uint(k) - 1)
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(n, v1)
                                v2 := b.NewValue0(v.Pos, OpConst8, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -14750,8 +14241,7 @@ func rewriteValuegeneric_OpNeq8(v *Value) bool {
                                continue
                        }
                        v.reset(OpNeq8)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -14779,14 +14269,12 @@ func rewriteValuegeneric_OpNeq8(v *Value) bool {
                                }
                                v.reset(OpEq8)
                                v0 := b.NewValue0(v.Pos, OpAnd8, t)
-                               v0.AddArg(x)
                                v1 := b.NewValue0(v.Pos, OpConst8, t)
                                v1.AuxInt = y
-                               v0.AddArg(v1)
-                               v.AddArg(v0)
+                               v0.AddArg2(x, v1)
                                v2 := b.NewValue0(v.Pos, OpConst8, t)
                                v2.AuxInt = 0
-                               v.AddArg(v2)
+                               v.AddArg2(v0, v2)
                                return true
                        }
                }
@@ -14857,8 +14345,7 @@ func rewriteValuegeneric_OpNeqB(v *Value) bool {
                        }
                        y := v_1.Args[0]
                        v.reset(OpNeqB)
-                       v.AddArg(x)
-                       v.AddArg(y)
+                       v.AddArg2(x, y)
                        return true
                }
                break
@@ -14878,10 +14365,9 @@ func rewriteValuegeneric_OpNeqInter(v *Value) bool {
                v.reset(OpNeqPtr)
                v0 := b.NewValue0(v.Pos, OpITab, typ.Uintptr)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpITab, typ.Uintptr)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15284,10 +14770,9 @@ func rewriteValuegeneric_OpNeqSlice(v *Value) bool {
                v.reset(OpNeqPtr)
                v0 := b.NewValue0(v.Pos, OpSlicePtr, typ.BytePtr)
                v0.AddArg(x)
-               v.AddArg(v0)
                v1 := b.NewValue0(v.Pos, OpSlicePtr, typ.BytePtr)
                v1.AddArg(y)
-               v.AddArg(v1)
+               v.AddArg2(v0, v1)
                return true
        }
 }
@@ -15396,8 +14881,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpNeq64)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Eq32 x y))
@@ -15409,8 +14893,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpNeq32)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Eq16 x y))
@@ -15422,8 +14905,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpNeq16)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Eq8 x y))
@@ -15435,8 +14917,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpNeq8)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (EqB x y))
@@ -15448,8 +14929,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpNeqB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (EqPtr x y))
@@ -15461,8 +14941,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpNeqPtr)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Eq64F x y))
@@ -15474,8 +14953,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpNeq64F)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Eq32F x y))
@@ -15487,8 +14965,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpNeq32F)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Neq64 x y))
@@ -15500,8 +14977,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpEq64)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Neq32 x y))
@@ -15513,8 +14989,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpEq32)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Neq16 x y))
@@ -15526,8 +15001,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpEq16)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Neq8 x y))
@@ -15539,8 +15013,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpEq8)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (NeqB x y))
@@ -15552,8 +15025,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpEqB)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (NeqPtr x y))
@@ -15565,8 +15037,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpEqPtr)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Neq64F x y))
@@ -15578,8 +15049,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpEq64F)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Neq32F x y))
@@ -15591,8 +15061,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpEq32F)
-               v.AddArg(x)
-               v.AddArg(y)
+               v.AddArg2(x, y)
                return true
        }
        // match: (Not (Less64 x y))
@@ -15604,8 +15073,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLeq64)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Less32 x y))
@@ -15617,8 +15085,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLeq32)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Less16 x y))
@@ -15630,8 +15097,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLeq16)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Less8 x y))
@@ -15643,8 +15109,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLeq8)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Less64U x y))
@@ -15656,8 +15121,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLeq64U)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Less32U x y))
@@ -15669,8 +15133,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLeq32U)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Less16U x y))
@@ -15682,8 +15145,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLeq16U)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Less8U x y))
@@ -15695,8 +15157,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLeq8U)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Leq64 x y))
@@ -15708,8 +15169,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLess64)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Leq32 x y))
@@ -15721,8 +15181,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLess32)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Leq16 x y))
@@ -15734,8 +15193,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLess16)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Leq8 x y))
@@ -15747,8 +15205,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLess8)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Leq64U x y))
@@ -15760,8 +15217,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLess64U)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Leq32U x y))
@@ -15773,8 +15229,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLess32U)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Leq16U x y))
@@ -15786,8 +15241,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLess16U)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        // match: (Not (Leq8U x y))
@@ -15799,8 +15253,7 @@ func rewriteValuegeneric_OpNot(v *Value) bool {
                y := v_0.Args[1]
                x := v_0.Args[0]
                v.reset(OpLess8U)
-               v.AddArg(y)
-               v.AddArg(x)
+               v.AddArg2(y, x)
                return true
        }
        return false
@@ -15918,8 +15371,7 @@ func rewriteValuegeneric_OpOr16(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(OpOr16)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -15953,8 +15405,7 @@ func rewriteValuegeneric_OpOr16(v *Value) bool {
                                v.reset(OpOr16)
                                v0 := b.NewValue0(v.Pos, OpConst16, t)
                                v0.AuxInt = c1
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -15983,11 +15434,9 @@ func rewriteValuegeneric_OpOr16(v *Value) bool {
                                        continue
                                }
                                v.reset(OpOr16)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpOr16, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -16017,8 +15466,7 @@ func rewriteValuegeneric_OpOr16(v *Value) bool {
                                v.reset(OpOr16)
                                v0 := b.NewValue0(v.Pos, OpConst16, t)
                                v0.AuxInt = int64(int16(c | d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -16105,8 +15553,7 @@ func rewriteValuegeneric_OpOr32(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(OpOr32)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -16140,8 +15587,7 @@ func rewriteValuegeneric_OpOr32(v *Value) bool {
                                v.reset(OpOr32)
                                v0 := b.NewValue0(v.Pos, OpConst32, t)
                                v0.AuxInt = c1
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -16170,11 +15616,9 @@ func rewriteValuegeneric_OpOr32(v *Value) bool {
                                        continue
                                }
                                v.reset(OpOr32)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpOr32, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -16204,8 +15648,7 @@ func rewriteValuegeneric_OpOr32(v *Value) bool {
                                v.reset(OpOr32)
                                v0 := b.NewValue0(v.Pos, OpConst32, t)
                                v0.AuxInt = int64(int32(c | d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -16292,8 +15735,7 @@ func rewriteValuegeneric_OpOr64(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(OpOr64)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -16327,8 +15769,7 @@ func rewriteValuegeneric_OpOr64(v *Value) bool {
                                v.reset(OpOr64)
                                v0 := b.NewValue0(v.Pos, OpConst64, t)
                                v0.AuxInt = c1
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -16357,11 +15798,9 @@ func rewriteValuegeneric_OpOr64(v *Value) bool {
                                        continue
                                }
                                v.reset(OpOr64)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpOr64, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -16391,8 +15830,7 @@ func rewriteValuegeneric_OpOr64(v *Value) bool {
                                v.reset(OpOr64)
                                v0 := b.NewValue0(v.Pos, OpConst64, t)
                                v0.AuxInt = c | d
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -16479,8 +15917,7 @@ func rewriteValuegeneric_OpOr8(v *Value) bool {
                                }
                                y := v_1_1
                                v.reset(OpOr8)
-                               v.AddArg(x)
-                               v.AddArg(y)
+                               v.AddArg2(x, y)
                                return true
                        }
                }
@@ -16514,8 +15951,7 @@ func rewriteValuegeneric_OpOr8(v *Value) bool {
                                v.reset(OpOr8)
                                v0 := b.NewValue0(v.Pos, OpConst8, t)
                                v0.AuxInt = c1
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -16544,11 +15980,9 @@ func rewriteValuegeneric_OpOr8(v *Value) bool {
                                        continue
                                }
                                v.reset(OpOr8)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpOr8, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -16578,8 +16012,7 @@ func rewriteValuegeneric_OpOr8(v *Value) bool {
                                v.reset(OpOr8)
                                v0 := b.NewValue0(v.Pos, OpConst8, t)
                                v0.AuxInt = int64(int8(c | d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -16675,13 +16108,11 @@ func rewriteValuegeneric_OpPtrIndex(v *Value) bool {
                        break
                }
                v.reset(OpAddPtr)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMul32, typ.Int)
-               v0.AddArg(idx)
                v1 := b.NewValue0(v.Pos, OpConst32, typ.Int)
                v1.AuxInt = t.Elem().Size()
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(idx, v1)
+               v.AddArg2(ptr, v0)
                return true
        }
        // match: (PtrIndex <t> ptr idx)
@@ -16695,13 +16126,11 @@ func rewriteValuegeneric_OpPtrIndex(v *Value) bool {
                        break
                }
                v.reset(OpAddPtr)
-               v.AddArg(ptr)
                v0 := b.NewValue0(v.Pos, OpMul64, typ.Int)
-               v0.AddArg(idx)
                v1 := b.NewValue0(v.Pos, OpConst64, typ.Int)
                v1.AuxInt = t.Elem().Size()
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v0.AddArg2(idx, v1)
+               v.AddArg2(ptr, v0)
                return true
        }
        return false
@@ -16840,10 +16269,9 @@ func rewriteValuegeneric_OpRsh16Ux16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh16Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16Ux16 (Const16 [0]) _)
@@ -16872,10 +16300,9 @@ func rewriteValuegeneric_OpRsh16Ux32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh16Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16Ux32 (Const16 [0]) _)
@@ -16970,10 +16397,9 @@ func rewriteValuegeneric_OpRsh16Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh16Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16Ux64 (Rsh16x64 x _) (Const64 <t> [15]))
@@ -16992,10 +16418,9 @@ func rewriteValuegeneric_OpRsh16Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh16Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = 15
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16Ux64 (Lsh16x64 (Rsh16Ux64 x (Const64 [c1])) (Const64 [c2])) (Const64 [c3]))
@@ -17030,10 +16455,9 @@ func rewriteValuegeneric_OpRsh16Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh16Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = c1 - c2 + c3
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16Ux64 (Lsh16x64 x (Const64 [8])) (Const64 [8]))
@@ -17070,10 +16494,9 @@ func rewriteValuegeneric_OpRsh16Ux8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh16Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16Ux8 (Const16 [0]) _)
@@ -17102,10 +16525,9 @@ func rewriteValuegeneric_OpRsh16x16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh16x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x16 (Const16 [0]) _)
@@ -17134,10 +16556,9 @@ func rewriteValuegeneric_OpRsh16x32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh16x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x32 (Const16 [0]) _)
@@ -17217,10 +16638,9 @@ func rewriteValuegeneric_OpRsh16x64(v *Value) bool {
                        break
                }
                v.reset(OpRsh16x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x64 (Lsh16x64 x (Const64 [8])) (Const64 [8]))
@@ -17257,10 +16677,9 @@ func rewriteValuegeneric_OpRsh16x8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh16x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh16x8 (Const16 [0]) _)
@@ -17289,10 +16708,9 @@ func rewriteValuegeneric_OpRsh32Ux16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh32Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32Ux16 (Const32 [0]) _)
@@ -17321,10 +16739,9 @@ func rewriteValuegeneric_OpRsh32Ux32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh32Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32Ux32 (Const32 [0]) _)
@@ -17419,10 +16836,9 @@ func rewriteValuegeneric_OpRsh32Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh32Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32Ux64 (Rsh32x64 x _) (Const64 <t> [31]))
@@ -17441,10 +16857,9 @@ func rewriteValuegeneric_OpRsh32Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh32Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = 31
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32Ux64 (Lsh32x64 (Rsh32Ux64 x (Const64 [c1])) (Const64 [c2])) (Const64 [c3]))
@@ -17479,10 +16894,9 @@ func rewriteValuegeneric_OpRsh32Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh32Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = c1 - c2 + c3
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32Ux64 (Lsh32x64 x (Const64 [24])) (Const64 [24]))
@@ -17537,10 +16951,9 @@ func rewriteValuegeneric_OpRsh32Ux8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh32Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32Ux8 (Const32 [0]) _)
@@ -17569,10 +16982,9 @@ func rewriteValuegeneric_OpRsh32x16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh32x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x16 (Const32 [0]) _)
@@ -17601,10 +17013,9 @@ func rewriteValuegeneric_OpRsh32x32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh32x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x32 (Const32 [0]) _)
@@ -17684,10 +17095,9 @@ func rewriteValuegeneric_OpRsh32x64(v *Value) bool {
                        break
                }
                v.reset(OpRsh32x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x64 (Lsh32x64 x (Const64 [24])) (Const64 [24]))
@@ -17742,10 +17152,9 @@ func rewriteValuegeneric_OpRsh32x8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh32x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh32x8 (Const32 [0]) _)
@@ -17774,10 +17183,9 @@ func rewriteValuegeneric_OpRsh64Ux16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh64Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64Ux16 (Const64 [0]) _)
@@ -17806,10 +17214,9 @@ func rewriteValuegeneric_OpRsh64Ux32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh64Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64Ux32 (Const64 [0]) _)
@@ -17904,10 +17311,9 @@ func rewriteValuegeneric_OpRsh64Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh64Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64Ux64 (Rsh64x64 x _) (Const64 <t> [63]))
@@ -17926,10 +17332,9 @@ func rewriteValuegeneric_OpRsh64Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh64Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = 63
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64Ux64 (Lsh64x64 (Rsh64Ux64 x (Const64 [c1])) (Const64 [c2])) (Const64 [c3]))
@@ -17964,10 +17369,9 @@ func rewriteValuegeneric_OpRsh64Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh64Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = c1 - c2 + c3
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64Ux64 (Lsh64x64 x (Const64 [56])) (Const64 [56]))
@@ -18040,10 +17444,9 @@ func rewriteValuegeneric_OpRsh64Ux8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh64Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64Ux8 (Const64 [0]) _)
@@ -18072,10 +17475,9 @@ func rewriteValuegeneric_OpRsh64x16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh64x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x16 (Const64 [0]) _)
@@ -18104,10 +17506,9 @@ func rewriteValuegeneric_OpRsh64x32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh64x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x32 (Const64 [0]) _)
@@ -18187,10 +17588,9 @@ func rewriteValuegeneric_OpRsh64x64(v *Value) bool {
                        break
                }
                v.reset(OpRsh64x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x64 (Lsh64x64 x (Const64 [56])) (Const64 [56]))
@@ -18263,10 +17663,9 @@ func rewriteValuegeneric_OpRsh64x8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh64x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh64x8 (Const64 [0]) _)
@@ -18295,10 +17694,9 @@ func rewriteValuegeneric_OpRsh8Ux16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh8Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8Ux16 (Const8 [0]) _)
@@ -18327,10 +17725,9 @@ func rewriteValuegeneric_OpRsh8Ux32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh8Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8Ux32 (Const8 [0]) _)
@@ -18425,10 +17822,9 @@ func rewriteValuegeneric_OpRsh8Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh8Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8Ux64 (Rsh8x64 x _) (Const64 <t> [7] ))
@@ -18447,10 +17843,9 @@ func rewriteValuegeneric_OpRsh8Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh8Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = 7
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8Ux64 (Lsh8x64 (Rsh8Ux64 x (Const64 [c1])) (Const64 [c2])) (Const64 [c3]))
@@ -18485,10 +17880,9 @@ func rewriteValuegeneric_OpRsh8Ux64(v *Value) bool {
                        break
                }
                v.reset(OpRsh8Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, typ.UInt64)
                v0.AuxInt = c1 - c2 + c3
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -18507,10 +17901,9 @@ func rewriteValuegeneric_OpRsh8Ux8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh8Ux64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8Ux8 (Const8 [0]) _)
@@ -18539,10 +17932,9 @@ func rewriteValuegeneric_OpRsh8x16(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh8x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint16(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8x16 (Const8 [0]) _)
@@ -18571,10 +17963,9 @@ func rewriteValuegeneric_OpRsh8x32(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh8x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint32(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8x32 (Const8 [0]) _)
@@ -18653,10 +18044,9 @@ func rewriteValuegeneric_OpRsh8x64(v *Value) bool {
                        break
                }
                v.reset(OpRsh8x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        return false
@@ -18675,10 +18065,9 @@ func rewriteValuegeneric_OpRsh8x8(v *Value) bool {
                }
                c := v_1.AuxInt
                v.reset(OpRsh8x64)
-               v.AddArg(x)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = int64(uint8(c))
-               v.AddArg(v0)
+               v.AddArg2(x, v0)
                return true
        }
        // match: (Rsh8x8 (Const8 [0]) _)
@@ -18708,8 +18097,7 @@ func rewriteValuegeneric_OpSelect0(v *Value) bool {
                }
                lo := v_0.Args[1]
                v.reset(OpDiv64u)
-               v.AddArg(lo)
-               v.AddArg(y)
+               v.AddArg2(lo, y)
                return true
        }
        return false
@@ -18729,8 +18117,7 @@ func rewriteValuegeneric_OpSelect1(v *Value) bool {
                }
                lo := v_0.Args[1]
                v.reset(OpMod64u)
-               v.AddArg(lo)
-               v.AddArg(y)
+               v.AddArg2(lo, y)
                return true
        }
        return false
@@ -19230,9 +18617,7 @@ func rewriteValuegeneric_OpStaticCall(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = sz
                v.Aux = t.(*types.Type).Elem()
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        // match: (StaticCall {sym} s1:(Store _ (Const32 [sz]) s2:(Store _ src s3:(Store {t} _ dst mem))))
@@ -19269,9 +18654,7 @@ func rewriteValuegeneric_OpStaticCall(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = sz
                v.Aux = t.(*types.Type).Elem()
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        // match: (StaticCall {sym} x)
@@ -19595,9 +18978,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(0).PtrTo())
                v0.AuxInt = 0
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(f0)
-               v.AddArg(mem)
+               v.AddArg3(v0, f0, mem)
                return true
        }
        // match: (Store dst (StructMake2 <t> f0 f1) mem)
@@ -19616,17 +18997,13 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(1).PtrTo())
                v0.AuxInt = t.FieldOff(1)
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(f1)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t.FieldType(0)
                v2 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(0).PtrTo())
                v2.AuxInt = 0
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(f0)
-               v1.AddArg(mem)
-               v.AddArg(v1)
+               v1.AddArg3(v2, f0, mem)
+               v.AddArg3(v0, f1, v1)
                return true
        }
        // match: (Store dst (StructMake3 <t> f0 f1 f2) mem)
@@ -19646,25 +19023,19 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(2).PtrTo())
                v0.AuxInt = t.FieldOff(2)
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(f2)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t.FieldType(1)
                v2 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(1).PtrTo())
                v2.AuxInt = t.FieldOff(1)
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(f1)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = t.FieldType(0)
                v4 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(0).PtrTo())
                v4.AuxInt = 0
                v4.AddArg(dst)
-               v3.AddArg(v4)
-               v3.AddArg(f0)
-               v3.AddArg(mem)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v3.AddArg3(v4, f0, mem)
+               v1.AddArg3(v2, f1, v3)
+               v.AddArg3(v0, f2, v1)
                return true
        }
        // match: (Store dst (StructMake4 <t> f0 f1 f2 f3) mem)
@@ -19685,33 +19056,25 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                v0 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(3).PtrTo())
                v0.AuxInt = t.FieldOff(3)
                v0.AddArg(dst)
-               v.AddArg(v0)
-               v.AddArg(f3)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t.FieldType(2)
                v2 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(2).PtrTo())
                v2.AuxInt = t.FieldOff(2)
                v2.AddArg(dst)
-               v1.AddArg(v2)
-               v1.AddArg(f2)
                v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v3.Aux = t.FieldType(1)
                v4 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(1).PtrTo())
                v4.AuxInt = t.FieldOff(1)
                v4.AddArg(dst)
-               v3.AddArg(v4)
-               v3.AddArg(f1)
                v5 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v5.Aux = t.FieldType(0)
                v6 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(0).PtrTo())
                v6.AuxInt = 0
                v6.AddArg(dst)
-               v5.AddArg(v6)
-               v5.AddArg(f0)
-               v5.AddArg(mem)
-               v3.AddArg(v5)
-               v1.AddArg(v3)
-               v.AddArg(v1)
+               v5.AddArg3(v6, f0, mem)
+               v3.AddArg3(v4, f1, v5)
+               v1.AddArg3(v2, f2, v3)
+               v.AddArg3(v0, f3, v1)
                return true
        }
        // match: (Store {t} dst (Load src mem) mem)
@@ -19731,9 +19094,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = sizeof(t)
                v.Aux = t
-               v.AddArg(dst)
-               v.AddArg(src)
-               v.AddArg(mem)
+               v.AddArg3(dst, src, mem)
                return true
        }
        // match: (Store {t} dst (Load src mem) (VarDef {x} mem))
@@ -19757,12 +19118,10 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                v.reset(OpMove)
                v.AuxInt = sizeof(t)
                v.Aux = t
-               v.AddArg(dst)
-               v.AddArg(src)
                v0 := b.NewValue0(v.Pos, OpVarDef, types.TypeMem)
                v0.Aux = x
                v0.AddArg(mem)
-               v.AddArg(v0)
+               v.AddArg3(dst, src, v0)
                return true
        }
        // match: (Store _ (ArrayMake0) mem)
@@ -19788,9 +19147,7 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                mem := v_2
                v.reset(OpStore)
                v.Aux = e.Type
-               v.AddArg(dst)
-               v.AddArg(e)
-               v.AddArg(mem)
+               v.AddArg3(dst, e, mem)
                return true
        }
        // match: (Store (Load (OffPtr [c] (SP)) mem) x mem)
@@ -19885,14 +19242,10 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                }
                v.reset(OpStore)
                v.Aux = t1
-               v.AddArg(op1)
-               v.AddArg(d1)
                v0 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v0.Aux = t2
-               v0.AddArg(op2)
-               v0.AddArg(d2)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg3(op2, d2, mem)
+               v.AddArg3(op1, d1, v0)
                return true
        }
        // match: (Store {t1} op1:(OffPtr [o1] p1) d1 m2:(Store {t2} op2:(OffPtr [o2] p2) d2 m3:(Store {t3} op3:(OffPtr [0] p3) d3 m4:(Move [n] p4 _ mem))))
@@ -19944,19 +19297,13 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                }
                v.reset(OpStore)
                v.Aux = t1
-               v.AddArg(op1)
-               v.AddArg(d1)
                v0 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v0.Aux = t2
-               v0.AddArg(op2)
-               v0.AddArg(d2)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
-               v1.AddArg(op3)
-               v1.AddArg(d3)
-               v1.AddArg(mem)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg3(op3, d3, mem)
+               v0.AddArg3(op2, d2, v1)
+               v.AddArg3(op1, d1, v0)
                return true
        }
        // match: (Store {t1} op1:(OffPtr [o1] p1) d1 m2:(Store {t2} op2:(OffPtr [o2] p2) d2 m3:(Store {t3} op3:(OffPtr [o3] p3) d3 m4:(Store {t4} op4:(OffPtr [0] p4) d4 m5:(Move [n] p5 _ mem)))))
@@ -20021,24 +19368,16 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                }
                v.reset(OpStore)
                v.Aux = t1
-               v.AddArg(op1)
-               v.AddArg(d1)
                v0 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v0.Aux = t2
-               v0.AddArg(op2)
-               v0.AddArg(d2)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
-               v1.AddArg(op3)
-               v1.AddArg(d3)
                v2 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v2.Aux = t4
-               v2.AddArg(op4)
-               v2.AddArg(d4)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v2.AddArg3(op4, d4, mem)
+               v1.AddArg3(op3, d3, v2)
+               v0.AddArg3(op2, d2, v1)
+               v.AddArg3(op1, d1, v0)
                return true
        }
        // match: (Store {t1} op1:(OffPtr [o1] p1) d1 m2:(Store {t2} op2:(OffPtr [0] p2) d2 m3:(Zero [n] p3 mem)))
@@ -20077,14 +19416,10 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                }
                v.reset(OpStore)
                v.Aux = t1
-               v.AddArg(op1)
-               v.AddArg(d1)
                v0 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v0.Aux = t2
-               v0.AddArg(op2)
-               v0.AddArg(d2)
-               v0.AddArg(mem)
-               v.AddArg(v0)
+               v0.AddArg3(op2, d2, mem)
+               v.AddArg3(op1, d1, v0)
                return true
        }
        // match: (Store {t1} op1:(OffPtr [o1] p1) d1 m2:(Store {t2} op2:(OffPtr [o2] p2) d2 m3:(Store {t3} op3:(OffPtr [0] p3) d3 m4:(Zero [n] p4 mem))))
@@ -20136,19 +19471,13 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                }
                v.reset(OpStore)
                v.Aux = t1
-               v.AddArg(op1)
-               v.AddArg(d1)
                v0 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v0.Aux = t2
-               v0.AddArg(op2)
-               v0.AddArg(d2)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
-               v1.AddArg(op3)
-               v1.AddArg(d3)
-               v1.AddArg(mem)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v1.AddArg3(op3, d3, mem)
+               v0.AddArg3(op2, d2, v1)
+               v.AddArg3(op1, d1, v0)
                return true
        }
        // match: (Store {t1} op1:(OffPtr [o1] p1) d1 m2:(Store {t2} op2:(OffPtr [o2] p2) d2 m3:(Store {t3} op3:(OffPtr [o3] p3) d3 m4:(Store {t4} op4:(OffPtr [0] p4) d4 m5:(Zero [n] p5 mem)))))
@@ -20213,24 +19542,16 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
                }
                v.reset(OpStore)
                v.Aux = t1
-               v.AddArg(op1)
-               v.AddArg(d1)
                v0 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v0.Aux = t2
-               v0.AddArg(op2)
-               v0.AddArg(d2)
                v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v1.Aux = t3
-               v1.AddArg(op3)
-               v1.AddArg(d3)
                v2 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
                v2.Aux = t4
-               v2.AddArg(op4)
-               v2.AddArg(d4)
-               v2.AddArg(mem)
-               v1.AddArg(v2)
-               v0.AddArg(v1)
-               v.AddArg(v0)
+               v2.AddArg3(op4, d4, mem)
+               v1.AddArg3(op3, d3, v2)
+               v0.AddArg3(op2, d2, v1)
+               v.AddArg3(op1, d1, v0)
                return true
        }
        return false
@@ -20433,8 +19754,7 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
                v1 := b.NewValue0(v.Pos, OpOffPtr, v.Type.PtrTo())
                v1.AuxInt = t.FieldOff(int(i))
                v1.AddArg(ptr)
-               v0.AddArg(v1)
-               v0.AddArg(mem)
+               v0.AddArg2(v1, mem)
                return true
        }
        // match: (StructSelect [0] (IData x))
@@ -20485,8 +19805,7 @@ func rewriteValuegeneric_OpSub16(v *Value) bool {
                v.reset(OpAdd16)
                v0 := b.NewValue0(v.Pos, OpConst16, t)
                v0.AuxInt = int64(int16(-c))
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (Sub16 <t> (Mul16 x y) (Mul16 x z))
@@ -20514,11 +19833,9 @@ func rewriteValuegeneric_OpSub16(v *Value) bool {
                                }
                                z := v_1_1
                                v.reset(OpMul16)
-                               v.AddArg(x)
                                v0 := b.NewValue0(v.Pos, OpSub16, t)
-                               v0.AddArg(y)
-                               v0.AddArg(z)
-                               v.AddArg(v0)
+                               v0.AddArg2(y, z)
+                               v.AddArg2(x, v0)
                                return true
                        }
                }
@@ -20598,10 +19915,8 @@ func rewriteValuegeneric_OpSub16(v *Value) bool {
                }
                v.reset(OpSub16)
                v0 := b.NewValue0(v.Pos, OpAdd16, t)
-               v0.AddArg(x)
-               v0.AddArg(z)
-               v.AddArg(v0)
-               v.AddArg(i)
+               v0.AddArg2(x, z)
+               v.AddArg2(v0, i)
                return true
        }
        // match: (Sub16 x (Sub16 z i:(Const16 <t>)))
@@ -20623,11 +19938,9 @@ func rewriteValuegeneric_OpSub16(v *Value) bool {
                        break
                }
                v.reset(OpAdd16)
-               v.AddArg(i)
                v0 := b.NewValue0(v.Pos, OpSub16, t)
-               v0.AddArg(x)
-               v0.AddArg(z)
-               v.AddArg(v0)
+               v0.AddArg2(x, z)
+               v.AddArg2(i, v0)
                return true
        }
        // match: (Sub16 (Const16 <t> [c]) (Sub16 x (Const16 <t> [d])))
@@ -20651,8 +19964,7 @@ func rewriteValuegeneric_OpSub16(v *Value) bool {
                v.reset(OpSub16)
                v0 := b.NewValue0(v.Pos, OpConst16, t)
                v0.AuxInt = int64(int16(c + d))
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (Sub16 (Const16 <t> [c]) (Sub16 (Const16 <t> [d]) x))
@@ -20675,8 +19987,7 @@ func rewriteValuegeneric_OpSub16(v *Value) bool {
                v.reset(OpAdd16)
                v0 := b.NewValue0(v.Pos, OpConst16, t)
                v0.AuxInt = int64(int16(c - d))
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        return false
@@ -20716,8 +20027,7 @@ func rewriteValuegeneric_OpSub32(v *Value) bool {
                v.reset(OpAdd32)
                v0 := b.NewValue0(v.Pos, OpConst32, t)
                v0.AuxInt = int64(int32(-c))
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (Sub32 <t> (Mul32 x y) (Mul32 x z))
@@ -20745,11 +20055,9 @@ func rewriteValuegeneric_OpSub32(v *Value) bool {
                                }
                                z := v_1_1
                                v.reset(OpMul32)
-                               v.AddArg(x)
                                v0 := b.NewValue0(v.Pos, OpSub32, t)
-                               v0.AddArg(y)
-                               v0.AddArg(z)
-                               v.AddArg(v0)
+                               v0.AddArg2(y, z)
+                               v.AddArg2(x, v0)
                                return true
                        }
                }
@@ -20829,10 +20137,8 @@ func rewriteValuegeneric_OpSub32(v *Value) bool {
                }
                v.reset(OpSub32)
                v0 := b.NewValue0(v.Pos, OpAdd32, t)
-               v0.AddArg(x)
-               v0.AddArg(z)
-               v.AddArg(v0)
-               v.AddArg(i)
+               v0.AddArg2(x, z)
+               v.AddArg2(v0, i)
                return true
        }
        // match: (Sub32 x (Sub32 z i:(Const32 <t>)))
@@ -20854,11 +20160,9 @@ func rewriteValuegeneric_OpSub32(v *Value) bool {
                        break
                }
                v.reset(OpAdd32)
-               v.AddArg(i)
                v0 := b.NewValue0(v.Pos, OpSub32, t)
-               v0.AddArg(x)
-               v0.AddArg(z)
-               v.AddArg(v0)
+               v0.AddArg2(x, z)
+               v.AddArg2(i, v0)
                return true
        }
        // match: (Sub32 (Const32 <t> [c]) (Sub32 x (Const32 <t> [d])))
@@ -20882,8 +20186,7 @@ func rewriteValuegeneric_OpSub32(v *Value) bool {
                v.reset(OpSub32)
                v0 := b.NewValue0(v.Pos, OpConst32, t)
                v0.AuxInt = int64(int32(c + d))
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (Sub32 (Const32 <t> [c]) (Sub32 (Const32 <t> [d]) x))
@@ -20906,8 +20209,7 @@ func rewriteValuegeneric_OpSub32(v *Value) bool {
                v.reset(OpAdd32)
                v0 := b.NewValue0(v.Pos, OpConst32, t)
                v0.AuxInt = int64(int32(c - d))
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        return false
@@ -20967,8 +20269,7 @@ func rewriteValuegeneric_OpSub64(v *Value) bool {
                v.reset(OpAdd64)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = -c
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (Sub64 <t> (Mul64 x y) (Mul64 x z))
@@ -20996,11 +20297,9 @@ func rewriteValuegeneric_OpSub64(v *Value) bool {
                                }
                                z := v_1_1
                                v.reset(OpMul64)
-                               v.AddArg(x)
                                v0 := b.NewValue0(v.Pos, OpSub64, t)
-                               v0.AddArg(y)
-                               v0.AddArg(z)
-                               v.AddArg(v0)
+                               v0.AddArg2(y, z)
+                               v.AddArg2(x, v0)
                                return true
                        }
                }
@@ -21080,10 +20379,8 @@ func rewriteValuegeneric_OpSub64(v *Value) bool {
                }
                v.reset(OpSub64)
                v0 := b.NewValue0(v.Pos, OpAdd64, t)
-               v0.AddArg(x)
-               v0.AddArg(z)
-               v.AddArg(v0)
-               v.AddArg(i)
+               v0.AddArg2(x, z)
+               v.AddArg2(v0, i)
                return true
        }
        // match: (Sub64 x (Sub64 z i:(Const64 <t>)))
@@ -21105,11 +20402,9 @@ func rewriteValuegeneric_OpSub64(v *Value) bool {
                        break
                }
                v.reset(OpAdd64)
-               v.AddArg(i)
                v0 := b.NewValue0(v.Pos, OpSub64, t)
-               v0.AddArg(x)
-               v0.AddArg(z)
-               v.AddArg(v0)
+               v0.AddArg2(x, z)
+               v.AddArg2(i, v0)
                return true
        }
        // match: (Sub64 (Const64 <t> [c]) (Sub64 x (Const64 <t> [d])))
@@ -21133,8 +20428,7 @@ func rewriteValuegeneric_OpSub64(v *Value) bool {
                v.reset(OpSub64)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c + d
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (Sub64 (Const64 <t> [c]) (Sub64 (Const64 <t> [d]) x))
@@ -21157,8 +20451,7 @@ func rewriteValuegeneric_OpSub64(v *Value) bool {
                v.reset(OpAdd64)
                v0 := b.NewValue0(v.Pos, OpConst64, t)
                v0.AuxInt = c - d
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        return false
@@ -21218,8 +20511,7 @@ func rewriteValuegeneric_OpSub8(v *Value) bool {
                v.reset(OpAdd8)
                v0 := b.NewValue0(v.Pos, OpConst8, t)
                v0.AuxInt = int64(int8(-c))
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (Sub8 <t> (Mul8 x y) (Mul8 x z))
@@ -21247,11 +20539,9 @@ func rewriteValuegeneric_OpSub8(v *Value) bool {
                                }
                                z := v_1_1
                                v.reset(OpMul8)
-                               v.AddArg(x)
                                v0 := b.NewValue0(v.Pos, OpSub8, t)
-                               v0.AddArg(y)
-                               v0.AddArg(z)
-                               v.AddArg(v0)
+                               v0.AddArg2(y, z)
+                               v.AddArg2(x, v0)
                                return true
                        }
                }
@@ -21331,10 +20621,8 @@ func rewriteValuegeneric_OpSub8(v *Value) bool {
                }
                v.reset(OpSub8)
                v0 := b.NewValue0(v.Pos, OpAdd8, t)
-               v0.AddArg(x)
-               v0.AddArg(z)
-               v.AddArg(v0)
-               v.AddArg(i)
+               v0.AddArg2(x, z)
+               v.AddArg2(v0, i)
                return true
        }
        // match: (Sub8 x (Sub8 z i:(Const8 <t>)))
@@ -21356,11 +20644,9 @@ func rewriteValuegeneric_OpSub8(v *Value) bool {
                        break
                }
                v.reset(OpAdd8)
-               v.AddArg(i)
                v0 := b.NewValue0(v.Pos, OpSub8, t)
-               v0.AddArg(x)
-               v0.AddArg(z)
-               v.AddArg(v0)
+               v0.AddArg2(x, z)
+               v.AddArg2(i, v0)
                return true
        }
        // match: (Sub8 (Const8 <t> [c]) (Sub8 x (Const8 <t> [d])))
@@ -21384,8 +20670,7 @@ func rewriteValuegeneric_OpSub8(v *Value) bool {
                v.reset(OpSub8)
                v0 := b.NewValue0(v.Pos, OpConst8, t)
                v0.AuxInt = int64(int8(c + d))
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        // match: (Sub8 (Const8 <t> [c]) (Sub8 (Const8 <t> [d]) x))
@@ -21408,8 +20693,7 @@ func rewriteValuegeneric_OpSub8(v *Value) bool {
                v.reset(OpAdd8)
                v0 := b.NewValue0(v.Pos, OpConst8, t)
                v0.AuxInt = int64(int8(c - d))
-               v.AddArg(v0)
-               v.AddArg(x)
+               v.AddArg2(v0, x)
                return true
        }
        return false
@@ -21981,11 +21265,9 @@ func rewriteValuegeneric_OpXor16(v *Value) bool {
                                        continue
                                }
                                v.reset(OpXor16)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpXor16, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -22015,8 +21297,7 @@ func rewriteValuegeneric_OpXor16(v *Value) bool {
                                v.reset(OpXor16)
                                v0 := b.NewValue0(v.Pos, OpConst16, t)
                                v0.AuxInt = int64(int16(c ^ d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -22119,11 +21400,9 @@ func rewriteValuegeneric_OpXor32(v *Value) bool {
                                        continue
                                }
                                v.reset(OpXor32)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpXor32, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -22153,8 +21432,7 @@ func rewriteValuegeneric_OpXor32(v *Value) bool {
                                v.reset(OpXor32)
                                v0 := b.NewValue0(v.Pos, OpConst32, t)
                                v0.AuxInt = int64(int32(c ^ d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -22257,11 +21535,9 @@ func rewriteValuegeneric_OpXor64(v *Value) bool {
                                        continue
                                }
                                v.reset(OpXor64)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpXor64, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -22291,8 +21567,7 @@ func rewriteValuegeneric_OpXor64(v *Value) bool {
                                v.reset(OpXor64)
                                v0 := b.NewValue0(v.Pos, OpConst64, t)
                                v0.AuxInt = c ^ d
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -22395,11 +21670,9 @@ func rewriteValuegeneric_OpXor8(v *Value) bool {
                                        continue
                                }
                                v.reset(OpXor8)
-                               v.AddArg(i)
                                v0 := b.NewValue0(v.Pos, OpXor8, t)
-                               v0.AddArg(z)
-                               v0.AddArg(x)
-                               v.AddArg(v0)
+                               v0.AddArg2(z, x)
+                               v.AddArg2(i, v0)
                                return true
                        }
                }
@@ -22429,8 +21702,7 @@ func rewriteValuegeneric_OpXor8(v *Value) bool {
                                v.reset(OpXor8)
                                v0 := b.NewValue0(v.Pos, OpConst8, t)
                                v0.AuxInt = int64(int8(c ^ d))
-                               v.AddArg(v0)
-                               v.AddArg(x)
+                               v.AddArg2(v0, x)
                                return true
                        }
                }
@@ -22490,8 +21762,7 @@ func rewriteValuegeneric_OpZero(v *Value) bool {
                v.reset(OpZero)
                v.AuxInt = n
                v.Aux = t1
-               v.AddArg(p1)
-               v.AddArg(mem)
+               v.AddArg2(p1, mem)
                return true
        }
        // match: (Zero {t} [n] dst1 move:(Move {t} [n] dst2 _ mem))
@@ -22513,8 +21784,7 @@ func rewriteValuegeneric_OpZero(v *Value) bool {
                v.reset(OpZero)
                v.AuxInt = n
                v.Aux = t
-               v.AddArg(dst1)
-               v.AddArg(mem)
+               v.AddArg2(dst1, mem)
                return true
        }
        // match: (Zero {t} [n] dst1 vardef:(VarDef {x} move:(Move {t} [n] dst2 _ mem)))
@@ -22541,11 +21811,10 @@ func rewriteValuegeneric_OpZero(v *Value) bool {
                v.reset(OpZero)
                v.AuxInt = n
                v.Aux = t
-               v.AddArg(dst1)
                v0 := b.NewValue0(v.Pos, OpVarDef, types.TypeMem)
                v0.Aux = x
                v0.AddArg(mem)
-               v.AddArg(v0)
+               v.AddArg2(dst1, v0)
                return true
        }
        return false
index b877220211287aacf4a99e0aef1dad96f2756a7b..8c5834d530a1e8eea40bbfa2fcd72ac97f5fa52a 100644 (file)
@@ -218,6 +218,58 @@ func (v *Value) AddArg(w *Value) {
        v.Args = append(v.Args, w)
        w.Uses++
 }
+
+//go:noinline
+func (v *Value) AddArg2(w1, w2 *Value) {
+       if v.Args == nil {
+               v.resetArgs() // use argstorage
+       }
+       v.Args = append(v.Args, w1, w2)
+       w1.Uses++
+       w2.Uses++
+}
+
+//go:noinline
+func (v *Value) AddArg3(w1, w2, w3 *Value) {
+       if v.Args == nil {
+               v.resetArgs() // use argstorage
+       }
+       v.Args = append(v.Args, w1, w2, w3)
+       w1.Uses++
+       w2.Uses++
+       w3.Uses++
+}
+
+//go:noinline
+func (v *Value) AddArg4(w1, w2, w3, w4 *Value) {
+       v.Args = append(v.Args, w1, w2, w3, w4)
+       w1.Uses++
+       w2.Uses++
+       w3.Uses++
+       w4.Uses++
+}
+
+//go:noinline
+func (v *Value) AddArg5(w1, w2, w3, w4, w5 *Value) {
+       v.Args = append(v.Args, w1, w2, w3, w4, w5)
+       w1.Uses++
+       w2.Uses++
+       w3.Uses++
+       w4.Uses++
+       w5.Uses++
+}
+
+//go:noinline
+func (v *Value) AddArg6(w1, w2, w3, w4, w5, w6 *Value) {
+       v.Args = append(v.Args, w1, w2, w3, w4, w5, w6)
+       w1.Uses++
+       w2.Uses++
+       w3.Uses++
+       w4.Uses++
+       w5.Uses++
+       w6.Uses++
+}
+
 func (v *Value) AddArgs(a ...*Value) {
        if v.Args == nil {
                v.resetArgs() // use argstorage