diff options
author | Josh Bleecher Snyder <josharian@gmail.com> | 2020-02-26 11:29:34 -0800 |
---|---|---|
committer | Josh Bleecher Snyder <josharian@gmail.com> | 2020-03-01 15:27:58 +0000 |
commit | 7913f7dfcf2c281b99c6ddd278aa851de47ada9d (patch) | |
tree | 8a34c42a6e16c5c7864d49030ed474dddff2ff82 /src/cmd/compile/internal/ssa/rewriteRISCV64.go | |
parent | a908e09a34fff3c47efab69857d27bf6965b948a (diff) | |
download | go-7913f7dfcf2c281b99c6ddd278aa851de47ada9d.tar.gz go-7913f7dfcf2c281b99c6ddd278aa851de47ada9d.zip |
cmd/compile: add specialized AddArgN functions for rewrite rules
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>
Diffstat (limited to 'src/cmd/compile/internal/ssa/rewriteRISCV64.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/rewriteRISCV64.go | 676 |
1 files changed, 216 insertions, 460 deletions
diff --git a/src/cmd/compile/internal/ssa/rewriteRISCV64.go b/src/cmd/compile/internal/ssa/rewriteRISCV64.go index 4d70814cfdd..e40fe69930b 100644 --- a/src/cmd/compile/internal/ssa/rewriteRISCV64.go +++ b/src/cmd/compile/internal/ssa/rewriteRISCV64.go @@ -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 } } |