aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/rewriteRISCV64.go
diff options
context:
space:
mode:
authorDavid Finkel <david.finkel@gmail.com>2020-04-18 18:52:05 -0400
committerKeith Randall <khr@golang.org>2020-04-20 20:22:51 +0000
commit7004be998ba708f027c95615d7885efeb9f73e75 (patch)
tree3c5f3b36014ad0341e90ed2dc63687d6c6b93f6b /src/cmd/compile/internal/ssa/rewriteRISCV64.go
parent0239a5c47856f758b9277e23c40a067c9644a7c8 (diff)
downloadgo-7004be998ba708f027c95615d7885efeb9f73e75.tar.gz
go-7004be998ba708f027c95615d7885efeb9f73e75.zip
cmd/compile: adjust RISCV64 rewrite rules to use typed aux fields
Also add a typed version of mergeSym to rewrite.go to assist with a few rules that used mergeSym in the untyped-form. Remove a few extra int32 overflow checks that no longer make sense, as adding two int8s or int16s should never overflow an int32. Passes toolstash-check -all. Change-Id: I72ddd2b0d9001faa87ad0ab54f500057164661b7 Reviewed-on: https://go-review.googlesource.com/c/go/+/228882 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.go1293
1 files changed, 659 insertions, 634 deletions
diff --git a/src/cmd/compile/internal/ssa/rewriteRISCV64.go b/src/cmd/compile/internal/ssa/rewriteRISCV64.go
index 5b2746a514..bfc00309fe 100644
--- a/src/cmd/compile/internal/ssa/rewriteRISCV64.go
+++ b/src/cmd/compile/internal/ssa/rewriteRISCV64.go
@@ -4,7 +4,6 @@
package ssa
import "math"
-import "cmd/compile/internal/types"
func rewriteValueRISCV64(v *Value) bool {
switch v.Op {
@@ -122,8 +121,7 @@ func rewriteValueRISCV64(v *Value) bool {
v.Op = OpRISCV64MOVBconst
return true
case OpConstBool:
- v.Op = OpRISCV64MOVBconst
- return true
+ return rewriteValueRISCV64_OpConstBool(v)
case OpConstNil:
return rewriteValueRISCV64_OpConstNil(v)
case OpConvert:
@@ -167,8 +165,7 @@ func rewriteValueRISCV64(v *Value) bool {
case OpDiv16u:
return rewriteValueRISCV64_OpDiv16u(v)
case OpDiv32:
- v.Op = OpRISCV64DIVW
- return true
+ return rewriteValueRISCV64_OpDiv32(v)
case OpDiv32F:
v.Op = OpRISCV64FDIVS
return true
@@ -176,8 +173,7 @@ func rewriteValueRISCV64(v *Value) bool {
v.Op = OpRISCV64DIVUW
return true
case OpDiv64:
- v.Op = OpRISCV64DIV
- return true
+ return rewriteValueRISCV64_OpDiv64(v)
case OpDiv64F:
v.Op = OpRISCV64FDIVD
return true
@@ -323,14 +319,12 @@ func rewriteValueRISCV64(v *Value) bool {
case OpMod16u:
return rewriteValueRISCV64_OpMod16u(v)
case OpMod32:
- v.Op = OpRISCV64REMW
- return true
+ return rewriteValueRISCV64_OpMod32(v)
case OpMod32u:
v.Op = OpRISCV64REMUW
return true
case OpMod64:
- v.Op = OpRISCV64REM
- return true
+ return rewriteValueRISCV64_OpMod64(v)
case OpMod64u:
v.Op = OpRISCV64REMU
return true
@@ -667,14 +661,14 @@ func rewriteValueRISCV64_OpAvg64u(v *Value) bool {
v.reset(OpRISCV64ADD)
v0 := b.NewValue0(v.Pos, OpRISCV64ADD, t)
v1 := b.NewValue0(v.Pos, OpRISCV64SRLI, t)
- v1.AuxInt = 1
+ v1.AuxInt = int64ToAuxInt(1)
v1.AddArg(x)
v2 := b.NewValue0(v.Pos, OpRISCV64SRLI, t)
- v2.AuxInt = 1
+ v2.AuxInt = int64ToAuxInt(1)
v2.AddArg(y)
v0.AddArg2(v1, v2)
v3 := b.NewValue0(v.Pos, OpRISCV64ANDI, t)
- v3.AuxInt = 1
+ v3.AuxInt = int64ToAuxInt(1)
v4 := b.NewValue0(v.Pos, OpRISCV64AND, t)
v4.AddArg2(x, y)
v3.AddArg(v4)
@@ -686,12 +680,12 @@ func rewriteValueRISCV64_OpConst32F(v *Value) bool {
b := v.Block
typ := &b.Func.Config.Types
// match: (Const32F [val])
- // result: (FMVSX (MOVWconst [int64(int32(math.Float32bits(float32(math.Float64frombits(uint64(val))))))]))
+ // result: (FMVSX (MOVWconst [int32(math.Float32bits(val))]))
for {
- val := v.AuxInt
+ val := auxIntToFloat32(v.AuxInt)
v.reset(OpRISCV64FMVSX)
v0 := b.NewValue0(v.Pos, OpRISCV64MOVWconst, typ.UInt32)
- v0.AuxInt = int64(int32(math.Float32bits(float32(math.Float64frombits(uint64(val))))))
+ v0.AuxInt = int32ToAuxInt(int32(math.Float32bits(val)))
v.AddArg(v0)
return true
}
@@ -700,22 +694,32 @@ func rewriteValueRISCV64_OpConst64F(v *Value) bool {
b := v.Block
typ := &b.Func.Config.Types
// match: (Const64F [val])
- // result: (FMVDX (MOVDconst [val]))
+ // result: (FMVDX (MOVDconst [int64(math.Float64bits(val))]))
for {
- val := v.AuxInt
+ val := auxIntToFloat64(v.AuxInt)
v.reset(OpRISCV64FMVDX)
v0 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
- v0.AuxInt = val
+ v0.AuxInt = int64ToAuxInt(int64(math.Float64bits(val)))
v.AddArg(v0)
return true
}
}
+func rewriteValueRISCV64_OpConstBool(v *Value) bool {
+ // match: (ConstBool [val])
+ // result: (MOVBconst [int8(b2i(val))])
+ for {
+ val := auxIntToBool(v.AuxInt)
+ v.reset(OpRISCV64MOVBconst)
+ v.AuxInt = int8ToAuxInt(int8(b2i(val)))
+ return true
+ }
+}
func rewriteValueRISCV64_OpConstNil(v *Value) bool {
// match: (ConstNil)
// result: (MOVDconst [0])
for {
v.reset(OpRISCV64MOVDconst)
- v.AuxInt = 0
+ v.AuxInt = int64ToAuxInt(0)
return true
}
}
@@ -724,9 +728,12 @@ func rewriteValueRISCV64_OpDiv16(v *Value) bool {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Div16 x y)
+ // match: (Div16 x y [false])
// result: (DIVW (SignExt16to32 x) (SignExt16to32 y))
for {
+ if auxIntToBool(v.AuxInt) != false {
+ break
+ }
x := v_0
y := v_1
v.reset(OpRISCV64DIVW)
@@ -737,6 +744,7 @@ func rewriteValueRISCV64_OpDiv16(v *Value) bool {
v.AddArg2(v0, v1)
return true
}
+ return false
}
func rewriteValueRISCV64_OpDiv16u(v *Value) bool {
v_1 := v.Args[1]
@@ -757,6 +765,40 @@ func rewriteValueRISCV64_OpDiv16u(v *Value) bool {
return true
}
}
+func rewriteValueRISCV64_OpDiv32(v *Value) bool {
+ v_1 := v.Args[1]
+ v_0 := v.Args[0]
+ // match: (Div32 x y [false])
+ // result: (DIVW x y)
+ for {
+ if auxIntToBool(v.AuxInt) != false {
+ break
+ }
+ x := v_0
+ y := v_1
+ v.reset(OpRISCV64DIVW)
+ v.AddArg2(x, y)
+ return true
+ }
+ return false
+}
+func rewriteValueRISCV64_OpDiv64(v *Value) bool {
+ v_1 := v.Args[1]
+ v_0 := v.Args[0]
+ // match: (Div64 x y [false])
+ // result: (DIV x y)
+ for {
+ if auxIntToBool(v.AuxInt) != false {
+ break
+ }
+ x := v_0
+ y := v_1
+ v.reset(OpRISCV64DIV)
+ v.AddArg2(x, y)
+ return true
+ }
+ return false
+}
func rewriteValueRISCV64_OpDiv8(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
@@ -876,7 +918,7 @@ func rewriteValueRISCV64_OpEqB(v *Value) bool {
x := v_0
y := v_1
v.reset(OpRISCV64XORI)
- v.AuxInt = 1
+ v.AuxInt = int64ToAuxInt(1)
v0 := b.NewValue0(v.Pos, OpRISCV64XOR, typ.Bool)
v0.AddArg2(x, y)
v.AddArg(v0)
@@ -910,7 +952,7 @@ func rewriteValueRISCV64_OpHmul32(v *Value) bool {
x := v_0
y := v_1
v.reset(OpRISCV64SRAI)
- v.AuxInt = 32
+ v.AuxInt = int64ToAuxInt(32)
v0 := b.NewValue0(v.Pos, OpRISCV64MUL, typ.Int64)
v1 := b.NewValue0(v.Pos, OpSignExt32to64, typ.Int64)
v1.AddArg(x)
@@ -932,7 +974,7 @@ func rewriteValueRISCV64_OpHmul32u(v *Value) bool {
x := v_0
y := v_1
v.reset(OpRISCV64SRLI)
- v.AuxInt = 32
+ v.AuxInt = int64ToAuxInt(32)
v0 := b.NewValue0(v.Pos, OpRISCV64MUL, typ.Int64)
v1 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v1.AddArg(x)
@@ -1357,10 +1399,10 @@ func rewriteValueRISCV64_OpLocalAddr(v *Value) bool {
// match: (LocalAddr {sym} base _)
// result: (MOVaddr {sym} base)
for {
- sym := v.Aux
+ sym := auxToSym(v.Aux)
base := v_0
v.reset(OpRISCV64MOVaddr)
- v.Aux = sym
+ v.Aux = symToAux(sym)
v.AddArg(base)
return true
}
@@ -1381,7 +1423,7 @@ func rewriteValueRISCV64_OpLsh16x16(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg16, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1406,7 +1448,7 @@ func rewriteValueRISCV64_OpLsh16x32(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg16, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1430,7 +1472,7 @@ func rewriteValueRISCV64_OpLsh16x64(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg16, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v2.AddArg(y)
v1.AddArg(v2)
v.AddArg2(v0, v1)
@@ -1453,7 +1495,7 @@ func rewriteValueRISCV64_OpLsh16x8(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg16, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1478,7 +1520,7 @@ func rewriteValueRISCV64_OpLsh32x16(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg32, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1503,7 +1545,7 @@ func rewriteValueRISCV64_OpLsh32x32(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg32, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1527,7 +1569,7 @@ func rewriteValueRISCV64_OpLsh32x64(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg32, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v2.AddArg(y)
v1.AddArg(v2)
v.AddArg2(v0, v1)
@@ -1550,7 +1592,7 @@ func rewriteValueRISCV64_OpLsh32x8(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg32, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1575,7 +1617,7 @@ func rewriteValueRISCV64_OpLsh64x16(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg64, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1600,7 +1642,7 @@ func rewriteValueRISCV64_OpLsh64x32(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg64, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1624,7 +1666,7 @@ func rewriteValueRISCV64_OpLsh64x64(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg64, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v2.AddArg(y)
v1.AddArg(v2)
v.AddArg2(v0, v1)
@@ -1647,7 +1689,7 @@ func rewriteValueRISCV64_OpLsh64x8(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg64, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1672,7 +1714,7 @@ func rewriteValueRISCV64_OpLsh8x16(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg8, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1697,7 +1739,7 @@ func rewriteValueRISCV64_OpLsh8x32(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg8, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1721,7 +1763,7 @@ func rewriteValueRISCV64_OpLsh8x64(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg8, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v2.AddArg(y)
v1.AddArg(v2)
v.AddArg2(v0, v1)
@@ -1744,7 +1786,7 @@ func rewriteValueRISCV64_OpLsh8x8(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg8, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -1758,9 +1800,12 @@ func rewriteValueRISCV64_OpMod16(v *Value) bool {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
- // match: (Mod16 x y)
+ // match: (Mod16 x y [false])
// result: (REMW (SignExt16to32 x) (SignExt16to32 y))
for {
+ if auxIntToBool(v.AuxInt) != false {
+ break
+ }
x := v_0
y := v_1
v.reset(OpRISCV64REMW)
@@ -1771,6 +1816,7 @@ func rewriteValueRISCV64_OpMod16(v *Value) bool {
v.AddArg2(v0, v1)
return true
}
+ return false
}
func rewriteValueRISCV64_OpMod16u(v *Value) bool {
v_1 := v.Args[1]
@@ -1791,6 +1837,40 @@ func rewriteValueRISCV64_OpMod16u(v *Value) bool {
return true
}
}
+func rewriteValueRISCV64_OpMod32(v *Value) bool {
+ v_1 := v.Args[1]
+ v_0 := v.Args[0]
+ // match: (Mod32 x y [false])
+ // result: (REMW x y)
+ for {
+ if auxIntToBool(v.AuxInt) != false {
+ break
+ }
+ x := v_0
+ y := v_1
+ v.reset(OpRISCV64REMW)
+ v.AddArg2(x, y)
+ return true
+ }
+ return false
+}
+func rewriteValueRISCV64_OpMod64(v *Value) bool {
+ v_1 := v.Args[1]
+ v_0 := v.Args[0]
+ // match: (Mod64 x y [false])
+ // result: (REM x y)
+ for {
+ if auxIntToBool(v.AuxInt) != false {
+ break
+ }
+ x := v_0
+ y := v_1
+ v.reset(OpRISCV64REM)
+ v.AddArg2(x, y)
+ return true
+ }
+ return false
+}
func rewriteValueRISCV64_OpMod8(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
@@ -1839,7 +1919,7 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
// match: (Move [0] _ _ mem)
// result: mem
for {
- if v.AuxInt != 0 {
+ if auxIntToInt64(v.AuxInt) != 0 {
break
}
mem := v_2
@@ -1849,7 +1929,7 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
// match: (Move [1] dst src mem)
// result: (MOVBstore dst (MOVBload src mem) mem)
for {
- if v.AuxInt != 1 {
+ if auxIntToInt64(v.AuxInt) != 1 {
break
}
dst := v_0
@@ -1864,7 +1944,7 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
// match: (Move [2] dst src mem)
// result: (MOVHstore dst (MOVHload src mem) mem)
for {
- if v.AuxInt != 2 {
+ if auxIntToInt64(v.AuxInt) != 2 {
break
}
dst := v_0
@@ -1879,7 +1959,7 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
// match: (Move [4] dst src mem)
// result: (MOVWstore dst (MOVWload src mem) mem)
for {
- if v.AuxInt != 4 {
+ if auxIntToInt64(v.AuxInt) != 4 {
break
}
dst := v_0
@@ -1894,7 +1974,7 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
// match: (Move [8] dst src mem)
// result: (MOVDstore dst (MOVDload src mem) mem)
for {
- if v.AuxInt != 8 {
+ if auxIntToInt64(v.AuxInt) != 8 {
break
}
dst := v_0
@@ -1908,10 +1988,10 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
}
// match: (Move [s] {t} dst src mem)
// cond: (s <= 16 || logLargeCopy(v, s))
- // result: (LoweredMove [t.(*types.Type).Alignment()] dst src (ADDI <src.Type> [s-moveSize(t.(*types.Type).Alignment(), config)] src) mem)
+ // result: (LoweredMove [t.Alignment()] dst src (ADDI <src.Type> [s-moveSize(t.Alignment(), config)] src) mem)
for {
- s := v.AuxInt
- t := v.Aux
+ s := auxIntToInt64(v.AuxInt)
+ t := auxToType(v.Aux)
dst := v_0
src := v_1
mem := v_2
@@ -1919,9 +1999,9 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
break
}
v.reset(OpRISCV64LoweredMove)
- v.AuxInt = t.(*types.Type).Alignment()
+ v.AuxInt = int64ToAuxInt(t.Alignment())
v0 := b.NewValue0(v.Pos, OpRISCV64ADDI, src.Type)
- v0.AuxInt = s - moveSize(t.(*types.Type).Alignment(), config)
+ v0.AuxInt = int64ToAuxInt(s - moveSize(t.Alignment(), config))
v0.AddArg(src)
v.AddArg4(dst, src, v0, mem)
return true
@@ -2059,7 +2139,7 @@ func rewriteValueRISCV64_OpNot(v *Value) bool {
for {
x := v_0
v.reset(OpRISCV64XORI)
- v.AuxInt = 1
+ v.AuxInt = int64ToAuxInt(1)
v.AddArg(x)
return true
}
@@ -2069,15 +2149,16 @@ func rewriteValueRISCV64_OpOffPtr(v *Value) bool {
b := v.Block
typ := &b.Func.Config.Types
// match: (OffPtr [off] ptr:(SP))
- // result: (MOVaddr [off] ptr)
+ // cond: is32Bit(off)
+ // result: (MOVaddr [int32(off)] ptr)
for {
- off := v.AuxInt
+ off := auxIntToInt64(v.AuxInt)
ptr := v_0
- if ptr.Op != OpSP {
+ if ptr.Op != OpSP || !(is32Bit(off)) {
break
}
v.reset(OpRISCV64MOVaddr)
- v.AuxInt = off
+ v.AuxInt = int32ToAuxInt(int32(off))
v.AddArg(ptr)
return true
}
@@ -2085,24 +2166,24 @@ func rewriteValueRISCV64_OpOffPtr(v *Value) bool {
// cond: is32Bit(off)
// result: (ADDI [off] ptr)
for {
- off := v.AuxInt
+ off := auxIntToInt64(v.AuxInt)
ptr := v_0
if !(is32Bit(off)) {
break
}
v.reset(OpRISCV64ADDI)
- v.AuxInt = off
+ v.AuxInt = int64ToAuxInt(off)
v.AddArg(ptr)
return true
}
// match: (OffPtr [off] ptr)
// result: (ADD (MOVDconst [off]) ptr)
for {
- off := v.AuxInt
+ off := auxIntToInt64(v.AuxInt)
ptr := v_0
v.reset(OpRISCV64ADD)
v0 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
- v0.AuxInt = off
+ v0.AuxInt = int64ToAuxInt(off)
v.AddArg2(v0, ptr)
return true
}
@@ -2115,7 +2196,7 @@ func rewriteValueRISCV64_OpPanicBounds(v *Value) bool {
// cond: boundsABI(kind) == 0
// result: (LoweredPanicBoundsA [kind] x y mem)
for {
- kind := v.AuxInt
+ kind := auxIntToInt64(v.AuxInt)
x := v_0
y := v_1
mem := v_2
@@ -2123,7 +2204,7 @@ func rewriteValueRISCV64_OpPanicBounds(v *Value) bool {
break
}
v.reset(OpRISCV64LoweredPanicBoundsA)
- v.AuxInt = kind
+ v.AuxInt = int64ToAuxInt(kind)
v.AddArg3(x, y, mem)
return true
}
@@ -2131,7 +2212,7 @@ func rewriteValueRISCV64_OpPanicBounds(v *Value) bool {
// cond: boundsABI(kind) == 1
// result: (LoweredPanicBoundsB [kind] x y mem)
for {
- kind := v.AuxInt
+ kind := auxIntToInt64(v.AuxInt)
x := v_0
y := v_1
mem := v_2
@@ -2139,7 +2220,7 @@ func rewriteValueRISCV64_OpPanicBounds(v *Value) bool {
break
}
v.reset(OpRISCV64LoweredPanicBoundsB)
- v.AuxInt = kind
+ v.AuxInt = int64ToAuxInt(kind)
v.AddArg3(x, y, mem)
return true
}
@@ -2147,7 +2228,7 @@ func rewriteValueRISCV64_OpPanicBounds(v *Value) bool {
// cond: boundsABI(kind) == 2
// result: (LoweredPanicBoundsC [kind] x y mem)
for {
- kind := v.AuxInt
+ kind := auxIntToInt64(v.AuxInt)
x := v_0
y := v_1
mem := v_2
@@ -2155,7 +2236,7 @@ func rewriteValueRISCV64_OpPanicBounds(v *Value) bool {
break
}
v.reset(OpRISCV64LoweredPanicBoundsC)
- v.AuxInt = kind
+ v.AuxInt = int64ToAuxInt(kind)
v.AddArg3(x, y, mem)
return true
}
@@ -2165,60 +2246,48 @@ func rewriteValueRISCV64_OpRISCV64ADD(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (ADD (MOVBconst [val]) x)
- // cond: is32Bit(val)
- // result: (ADDI [val] x)
+ // result: (ADDI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVBconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt8(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64ADDI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
break
}
// match: (ADD (MOVHconst [val]) x)
- // cond: is32Bit(val)
- // result: (ADDI [val] x)
+ // result: (ADDI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVHconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt16(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64ADDI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
break
}
// match: (ADD (MOVWconst [val]) x)
- // cond: is32Bit(val)
- // result: (ADDI [val] x)
+ // result: (ADDI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVWconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt32(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64ADDI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
@@ -2232,13 +2301,13 @@ func rewriteValueRISCV64_OpRISCV64ADD(v *Value) bool {
if v_0.Op != OpRISCV64MOVDconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt64(v_0.AuxInt)
x := v_1
if !(is32Bit(val)) {
continue
}
v.reset(OpRISCV64ADDI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(val)
v.AddArg(x)
return true
}
@@ -2249,29 +2318,29 @@ func rewriteValueRISCV64_OpRISCV64ADD(v *Value) bool {
func rewriteValueRISCV64_OpRISCV64ADDI(v *Value) bool {
v_0 := v.Args[0]
// match: (ADDI [c] (MOVaddr [d] {s} x))
- // cond: is32Bit(c+d)
- // result: (MOVaddr [c+d] {s} x)
+ // cond: is32Bit(c+int64(d))
+ // result: (MOVaddr [int32(c)+d] {s} x)
for {
- c := v.AuxInt
+ c := auxIntToInt64(v.AuxInt)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- d := v_0.AuxInt
- s := v_0.Aux
+ d := auxIntToInt32(v_0.AuxInt)
+ s := auxToSym(v_0.Aux)
x := v_0.Args[0]
- if !(is32Bit(c + d)) {
+ if !(is32Bit(c + int64(d))) {
break
}
v.reset(OpRISCV64MOVaddr)
- v.AuxInt = c + d
- v.Aux = s
+ v.AuxInt = int32ToAuxInt(int32(c) + d)
+ v.Aux = symToAux(s)
v.AddArg(x)
return true
}
// match: (ADDI [0] x)
// result: x
for {
- if v.AuxInt != 0 {
+ if auxIntToInt64(v.AuxInt) != 0 {
break
}
x := v_0
@@ -2284,60 +2353,48 @@ func rewriteValueRISCV64_OpRISCV64AND(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (AND (MOVBconst [val]) x)
- // cond: is32Bit(val)
- // result: (ANDI [val] x)
+ // result: (ANDI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVBconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt8(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64ANDI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
break
}
// match: (AND (MOVHconst [val]) x)
- // cond: is32Bit(val)
- // result: (ANDI [val] x)
+ // result: (ANDI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVHconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt16(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64ANDI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
break
}
// match: (AND (MOVWconst [val]) x)
- // cond: is32Bit(val)
- // result: (ANDI [val] x)
+ // result: (ANDI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVWconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt32(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64ANDI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
@@ -2351,13 +2408,13 @@ func rewriteValueRISCV64_OpRISCV64AND(v *Value) bool {
if v_0.Op != OpRISCV64MOVDconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt64(v_0.AuxInt)
x := v_1
if !(is32Bit(val)) {
continue
}
v.reset(OpRISCV64ANDI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(val)
v.AddArg(x)
return true
}
@@ -2369,45 +2426,45 @@ func rewriteValueRISCV64_OpRISCV64MOVBUload(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVBUload [off1] {sym1} (MOVaddr [off2] {sym2} base) mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVBUload [off1+off2] {mergeSym(sym1,sym2)} base mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVBUload [off1+off2] {mergeSymTyped(sym1,sym2)} base mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVBUload)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(base, mem)
return true
}
// match: (MOVBUload [off1] {sym} (ADDI [off2] base) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVBUload [off1+off2] {sym} base mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVBUload [off1+int32(off2)] {sym} base mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVBUload)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(base, mem)
return true
}
@@ -2417,45 +2474,45 @@ func rewriteValueRISCV64_OpRISCV64MOVBload(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVBload [off1] {sym1} (MOVaddr [off2] {sym2} base) mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVBload [off1+off2] {mergeSym(sym1,sym2)} base mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVBload [off1+off2] {mergeSymTyped(sym1,sym2)} base mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVBload)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(base, mem)
return true
}
// match: (MOVBload [off1] {sym} (ADDI [off2] base) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVBload [off1+off2] {sym} base mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVBload [off1+int32(off2)] {sym} base mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVBload)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(base, mem)
return true
}
@@ -2466,63 +2523,63 @@ func rewriteValueRISCV64_OpRISCV64MOVBstore(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVBstore [off1] {sym1} (MOVaddr [off2] {sym2} base) val mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVBstore [off1+off2] {mergeSym(sym1,sym2)} base val mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVBstore [off1+off2] {mergeSymTyped(sym1,sym2)} base val mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
val := v_1
mem := v_2
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVBstore)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg3(base, val, mem)
return true
}
// match: (MOVBstore [off1] {sym} (ADDI [off2] base) val mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVBstore [off1+off2] {sym} base val mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVBstore [off1+int32(off2)] {sym} base val mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
val := v_1
mem := v_2
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVBstore)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg3(base, val, mem)
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBconst [0]) mem)
// result: (MOVBstorezero [off] {sym} ptr mem)
for {
- off := v.AuxInt
- sym := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
ptr := v_0
- if v_1.Op != OpRISCV64MOVBconst || v_1.AuxInt != 0 {
+ if v_1.Op != OpRISCV64MOVBconst || auxIntToInt8(v_1.AuxInt) != 0 {
break
}
mem := v_2
v.reset(OpRISCV64MOVBstorezero)
- v.AuxInt = off
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off)
+ v.Aux = symToAux(sym)
v.AddArg2(ptr, mem)
return true
}
@@ -2532,45 +2589,45 @@ func rewriteValueRISCV64_OpRISCV64MOVBstorezero(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVBstorezero [off1] {sym1} (MOVaddr [off2] {sym2} ptr) mem)
- // cond: canMergeSym(sym1,sym2) && is32Bit(off1+off2)
- // result: (MOVBstorezero [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
+ // cond: canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2))
+ // result: (MOVBstorezero [off1+off2] {mergeSymTyped(sym1,sym2)} ptr mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
ptr := v_0.Args[0]
mem := v_1
- if !(canMergeSym(sym1, sym2) && is32Bit(off1+off2)) {
+ if !(canMergeSym(sym1, sym2) && is32Bit(int64(off1)+int64(off2))) {
break
}
v.reset(OpRISCV64MOVBstorezero)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(ptr, mem)
return true
}
// match: (MOVBstorezero [off1] {sym} (ADDI [off2] ptr) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVBstorezero [off1+off2] {sym} ptr mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVBstorezero [off1+int32(off2)] {sym} ptr mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
ptr := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVBstorezero)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(ptr, mem)
return true
}
@@ -2584,18 +2641,18 @@ func rewriteValueRISCV64_OpRISCV64MOVDconst(v *Value) bool {
// result: (ADD (SLLI <t> [32] (MOVDconst [c>>32+1])) (MOVDconst [int64(int32(c))]))
for {
t := v.Type
- c := v.AuxInt
+ c := auxIntToInt64(v.AuxInt)
if !(!is32Bit(c) && int32(c) < 0) {
break
}
v.reset(OpRISCV64ADD)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 32
+ v0.AuxInt = int64ToAuxInt(32)
v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
- v1.AuxInt = c>>32 + 1
+ v1.AuxInt = int64ToAuxInt(c>>32 + 1)
v0.AddArg(v1)
v2 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
- v2.AuxInt = int64(int32(c))
+ v2.AuxInt = int64ToAuxInt(int64(int32(c)))
v.AddArg2(v0, v2)
return true
}
@@ -2604,18 +2661,18 @@ func rewriteValueRISCV64_OpRISCV64MOVDconst(v *Value) bool {
// result: (ADD (SLLI <t> [32] (MOVDconst [c>>32+0])) (MOVDconst [int64(int32(c))]))
for {
t := v.Type
- c := v.AuxInt
+ c := auxIntToInt64(v.AuxInt)
if !(!is32Bit(c) && int32(c) >= 0) {
break
}
v.reset(OpRISCV64ADD)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 32
+ v0.AuxInt = int64ToAuxInt(32)
v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
- v1.AuxInt = c>>32 + 0
+ v1.AuxInt = int64ToAuxInt(c>>32 + 0)
v0.AddArg(v1)
v2 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
- v2.AuxInt = int64(int32(c))
+ v2.AuxInt = int64ToAuxInt(int64(int32(c)))
v.AddArg2(v0, v2)
return true
}
@@ -2625,45 +2682,45 @@ func rewriteValueRISCV64_OpRISCV64MOVDload(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVDload [off1] {sym1} (MOVaddr [off2] {sym2} base) mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVDload [off1+off2] {mergeSym(sym1,sym2)} base mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVDload [off1+off2] {mergeSymTyped(sym1,sym2)} base mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVDload)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(base, mem)
return true
}
// match: (MOVDload [off1] {sym} (ADDI [off2] base) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVDload [off1+off2] {sym} base mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVDload [off1+int32(off2)] {sym} base mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVDload)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(base, mem)
return true
}
@@ -2674,63 +2731,63 @@ func rewriteValueRISCV64_OpRISCV64MOVDstore(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVDstore [off1] {sym1} (MOVaddr [off2] {sym2} base) val mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVDstore [off1+off2] {mergeSym(sym1,sym2)} base val mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVDstore [off1+off2] {mergeSymTyped(sym1,sym2)} base val mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
val := v_1
mem := v_2
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVDstore)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg3(base, val, mem)
return true
}
// match: (MOVDstore [off1] {sym} (ADDI [off2] base) val mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVDstore [off1+off2] {sym} base val mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVDstore [off1+int32(off2)] {sym} base val mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
val := v_1
mem := v_2
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVDstore)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg3(base, val, mem)
return true
}
// match: (MOVDstore [off] {sym} ptr (MOVDconst [0]) mem)
// result: (MOVDstorezero [off] {sym} ptr mem)
for {
- off := v.AuxInt
- sym := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
ptr := v_0
- if v_1.Op != OpRISCV64MOVDconst || v_1.AuxInt != 0 {
+ if v_1.Op != OpRISCV64MOVDconst || auxIntToInt64(v_1.AuxInt) != 0 {
break
}
mem := v_2
v.reset(OpRISCV64MOVDstorezero)
- v.AuxInt = off
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off)
+ v.Aux = symToAux(sym)
v.AddArg2(ptr, mem)
return true
}
@@ -2740,45 +2797,45 @@ func rewriteValueRISCV64_OpRISCV64MOVDstorezero(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVDstorezero [off1] {sym1} (MOVaddr [off2] {sym2} ptr) mem)
- // cond: canMergeSym(sym1,sym2) && is32Bit(off1+off2)
- // result: (MOVDstorezero [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
+ // cond: canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2))
+ // result: (MOVDstorezero [off1+off2] {mergeSymTyped(sym1,sym2)} ptr mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
ptr := v_0.Args[0]
mem := v_1
- if !(canMergeSym(sym1, sym2) && is32Bit(off1+off2)) {
+ if !(canMergeSym(sym1, sym2) && is32Bit(int64(off1)+int64(off2))) {
break
}
v.reset(OpRISCV64MOVDstorezero)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(ptr, mem)
return true
}
// match: (MOVDstorezero [off1] {sym} (ADDI [off2] ptr) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVDstorezero [off1+off2] {sym} ptr mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVDstorezero [off1+int32(off2)] {sym} ptr mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
ptr := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVDstorezero)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(ptr, mem)
return true
}
@@ -2788,45 +2845,45 @@ func rewriteValueRISCV64_OpRISCV64MOVHUload(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVHUload [off1] {sym1} (MOVaddr [off2] {sym2} base) mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVHUload [off1+off2] {mergeSym(sym1,sym2)} base mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVHUload [off1+off2] {mergeSymTyped(sym1,sym2)} base mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVHUload)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(base, mem)
return true
}
// match: (MOVHUload [off1] {sym} (ADDI [off2] base) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVHUload [off1+off2] {sym} base mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVHUload [off1+int32(off2)] {sym} base mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVHUload)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(base, mem)
return true
}
@@ -2836,45 +2893,45 @@ func rewriteValueRISCV64_OpRISCV64MOVHload(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVHload [off1] {sym1} (MOVaddr [off2] {sym2} base) mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVHload [off1+off2] {mergeSym(sym1,sym2)} base mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVHload [off1+off2] {mergeSymTyped(sym1,sym2)} base mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVHload)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(base, mem)
return true
}
// match: (MOVHload [off1] {sym} (ADDI [off2] base) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVHload [off1+off2] {sym} base mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVHload [off1+int32(off2)] {sym} base mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVHload)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(base, mem)
return true
}
@@ -2885,63 +2942,63 @@ func rewriteValueRISCV64_OpRISCV64MOVHstore(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVHstore [off1] {sym1} (MOVaddr [off2] {sym2} base) val mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVHstore [off1+off2] {mergeSym(sym1,sym2)} base val mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVHstore [off1+off2] {mergeSymTyped(sym1,sym2)} base val mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
val := v_1
mem := v_2
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVHstore)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg3(base, val, mem)
return true
}
// match: (MOVHstore [off1] {sym} (ADDI [off2] base) val mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVHstore [off1+off2] {sym} base val mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVHstore [off1+int32(off2)] {sym} base val mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
val := v_1
mem := v_2
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVHstore)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg3(base, val, mem)
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHconst [0]) mem)
// result: (MOVHstorezero [off] {sym} ptr mem)
for {
- off := v.AuxInt
- sym := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
ptr := v_0
- if v_1.Op != OpRISCV64MOVHconst || v_1.AuxInt != 0 {
+ if v_1.Op != OpRISCV64MOVHconst || auxIntToInt16(v_1.AuxInt) != 0 {
break
}
mem := v_2
v.reset(OpRISCV64MOVHstorezero)
- v.AuxInt = off
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off)
+ v.Aux = symToAux(sym)
v.AddArg2(ptr, mem)
return true
}
@@ -2951,45 +3008,45 @@ func rewriteValueRISCV64_OpRISCV64MOVHstorezero(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVHstorezero [off1] {sym1} (MOVaddr [off2] {sym2} ptr) mem)
- // cond: canMergeSym(sym1,sym2) && is32Bit(off1+off2)
- // result: (MOVHstorezero [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
+ // cond: canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2))
+ // result: (MOVHstorezero [off1+off2] {mergeSymTyped(sym1,sym2)} ptr mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
ptr := v_0.Args[0]
mem := v_1
- if !(canMergeSym(sym1, sym2) && is32Bit(off1+off2)) {
+ if !(canMergeSym(sym1, sym2) && is32Bit(int64(off1)+int64(off2))) {
break
}
v.reset(OpRISCV64MOVHstorezero)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(ptr, mem)
return true
}
// match: (MOVHstorezero [off1] {sym} (ADDI [off2] ptr) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVHstorezero [off1+off2] {sym} ptr mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVHstorezero [off1+int32(off2)] {sym} ptr mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
ptr := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVHstorezero)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(ptr, mem)
return true
}
@@ -2999,45 +3056,45 @@ func rewriteValueRISCV64_OpRISCV64MOVWUload(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVWUload [off1] {sym1} (MOVaddr [off2] {sym2} base) mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVWUload [off1+off2] {mergeSym(sym1,sym2)} base mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVWUload [off1+off2] {mergeSymTyped(sym1,sym2)} base mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVWUload)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(base, mem)
return true
}
// match: (MOVWUload [off1] {sym} (ADDI [off2] base) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVWUload [off1+off2] {sym} base mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVWUload [off1+int32(off2)] {sym} base mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVWUload)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(base, mem)
return true
}
@@ -3047,45 +3104,45 @@ func rewriteValueRISCV64_OpRISCV64MOVWload(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVWload [off1] {sym1} (MOVaddr [off2] {sym2} base) mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVWload [off1+off2] {mergeSym(sym1,sym2)} base mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVWload [off1+off2] {mergeSymTyped(sym1,sym2)} base mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVWload)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(base, mem)
return true
}
// match: (MOVWload [off1] {sym} (ADDI [off2] base) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVWload [off1+off2] {sym} base mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVWload [off1+int32(off2)] {sym} base mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVWload)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(base, mem)
return true
}
@@ -3096,63 +3153,63 @@ func rewriteValueRISCV64_OpRISCV64MOVWstore(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVWstore [off1] {sym1} (MOVaddr [off2] {sym2} base) val mem)
- // cond: is32Bit(off1+off2) && canMergeSym(sym1, sym2)
- // result: (MOVWstore [off1+off2] {mergeSym(sym1,sym2)} base val mem)
+ // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
+ // result: (MOVWstore [off1+off2] {mergeSymTyped(sym1,sym2)} base val mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
base := v_0.Args[0]
val := v_1
mem := v_2
- if !(is32Bit(off1+off2) && canMergeSym(sym1, sym2)) {
+ if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
break
}
v.reset(OpRISCV64MOVWstore)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg3(base, val, mem)
return true
}
// match: (MOVWstore [off1] {sym} (ADDI [off2] base) val mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVWstore [off1+off2] {sym} base val mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVWstore [off1+int32(off2)] {sym} base val mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
base := v_0.Args[0]
val := v_1
mem := v_2
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVWstore)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg3(base, val, mem)
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWconst [0]) mem)
// result: (MOVWstorezero [off] {sym} ptr mem)
for {
- off := v.AuxInt
- sym := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
ptr := v_0
- if v_1.Op != OpRISCV64MOVWconst || v_1.AuxInt != 0 {
+ if v_1.Op != OpRISCV64MOVWconst || auxIntToInt32(v_1.AuxInt) != 0 {
break
}
mem := v_2
v.reset(OpRISCV64MOVWstorezero)
- v.AuxInt = off
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off)
+ v.Aux = symToAux(sym)
v.AddArg2(ptr, mem)
return true
}
@@ -3162,45 +3219,45 @@ func rewriteValueRISCV64_OpRISCV64MOVWstorezero(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (MOVWstorezero [off1] {sym1} (MOVaddr [off2] {sym2} ptr) mem)
- // cond: canMergeSym(sym1,sym2) && is32Bit(off1+off2)
- // result: (MOVWstorezero [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
+ // cond: canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2))
+ // result: (MOVWstorezero [off1+off2] {mergeSymTyped(sym1,sym2)} ptr mem)
for {
- off1 := v.AuxInt
- sym1 := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym1 := auxToSym(v.Aux)
if v_0.Op != OpRISCV64MOVaddr {
break
}
- off2 := v_0.AuxInt
- sym2 := v_0.Aux
+ off2 := auxIntToInt32(v_0.AuxInt)
+ sym2 := auxToSym(v_0.Aux)
ptr := v_0.Args[0]
mem := v_1
- if !(canMergeSym(sym1, sym2) && is32Bit(off1+off2)) {
+ if !(canMergeSym(sym1, sym2) && is32Bit(int64(off1)+int64(off2))) {
break
}
v.reset(OpRISCV64MOVWstorezero)
- v.AuxInt = off1 + off2
- v.Aux = mergeSym(sym1, sym2)
+ v.AuxInt = int32ToAuxInt(off1 + off2)
+ v.Aux = symToAux(mergeSymTyped(sym1, sym2))
v.AddArg2(ptr, mem)
return true
}
// match: (MOVWstorezero [off1] {sym} (ADDI [off2] ptr) mem)
- // cond: is32Bit(off1+off2)
- // result: (MOVWstorezero [off1+off2] {sym} ptr mem)
+ // cond: is32Bit(int64(off1)+off2)
+ // result: (MOVWstorezero [off1+int32(off2)] {sym} ptr mem)
for {
- off1 := v.AuxInt
- sym := v.Aux
+ off1 := auxIntToInt32(v.AuxInt)
+ sym := auxToSym(v.Aux)
if v_0.Op != OpRISCV64ADDI {
break
}
- off2 := v_0.AuxInt
+ off2 := auxIntToInt64(v_0.AuxInt)
ptr := v_0.Args[0]
mem := v_1
- if !(is32Bit(off1 + off2)) {
+ if !(is32Bit(int64(off1) + off2)) {
break
}
v.reset(OpRISCV64MOVWstorezero)
- v.AuxInt = off1 + off2
- v.Aux = sym
+ v.AuxInt = int32ToAuxInt(off1 + int32(off2))
+ v.Aux = symToAux(sym)
v.AddArg2(ptr, mem)
return true
}
@@ -3210,60 +3267,48 @@ func rewriteValueRISCV64_OpRISCV64OR(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (OR (MOVBconst [val]) x)
- // cond: is32Bit(val)
- // result: (ORI [val] x)
+ // result: (ORI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVBconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt8(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64ORI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
break
}
// match: (OR (MOVHconst [val]) x)
- // cond: is32Bit(val)
- // result: (ORI [val] x)
+ // result: (ORI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVHconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt16(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64ORI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
break
}
// match: (OR (MOVWconst [val]) x)
- // cond: is32Bit(val)
- // result: (ORI [val] x)
+ // result: (ORI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVWconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt32(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64ORI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
@@ -3277,13 +3322,13 @@ func rewriteValueRISCV64_OpRISCV64OR(v *Value) bool {
if v_0.Op != OpRISCV64MOVDconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt64(v_0.AuxInt)
x := v_1
if !(is32Bit(val)) {
continue
}
v.reset(OpRISCV64ORI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(val)
v.AddArg(x)
return true
}
@@ -3295,54 +3340,54 @@ func rewriteValueRISCV64_OpRISCV64SLL(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (SLL x (MOVBconst [val]))
- // result: (SLLI [val&63] x)
+ // result: (SLLI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVBconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt8(v_1.AuxInt)
v.reset(OpRISCV64SLLI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
// match: (SLL x (MOVHconst [val]))
- // result: (SLLI [val&63] x)
+ // result: (SLLI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVHconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt16(v_1.AuxInt)
v.reset(OpRISCV64SLLI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
// match: (SLL x (MOVWconst [val]))
- // result: (SLLI [val&63] x)
+ // result: (SLLI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVWconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt32(v_1.AuxInt)
v.reset(OpRISCV64SLLI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
// match: (SLL x (MOVDconst [val]))
- // result: (SLLI [val&63] x)
+ // result: (SLLI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVDconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt64(v_1.AuxInt)
v.reset(OpRISCV64SLLI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
@@ -3352,54 +3397,54 @@ func rewriteValueRISCV64_OpRISCV64SRA(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (SRA x (MOVBconst [val]))
- // result: (SRAI [val&63] x)
+ // result: (SRAI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVBconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt8(v_1.AuxInt)
v.reset(OpRISCV64SRAI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
// match: (SRA x (MOVHconst [val]))
- // result: (SRAI [val&63] x)
+ // result: (SRAI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVHconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt16(v_1.AuxInt)
v.reset(OpRISCV64SRAI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
// match: (SRA x (MOVWconst [val]))
- // result: (SRAI [val&63] x)
+ // result: (SRAI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVWconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt32(v_1.AuxInt)
v.reset(OpRISCV64SRAI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
// match: (SRA x (MOVDconst [val]))
- // result: (SRAI [val&63] x)
+ // result: (SRAI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVDconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt64(v_1.AuxInt)
v.reset(OpRISCV64SRAI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
@@ -3409,54 +3454,54 @@ func rewriteValueRISCV64_OpRISCV64SRL(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (SRL x (MOVBconst [val]))
- // result: (SRLI [val&63] x)
+ // result: (SRLI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVBconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt8(v_1.AuxInt)
v.reset(OpRISCV64SRLI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
// match: (SRL x (MOVHconst [val]))
- // result: (SRLI [val&63] x)
+ // result: (SRLI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVHconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt16(v_1.AuxInt)
v.reset(OpRISCV64SRLI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
// match: (SRL x (MOVWconst [val]))
- // result: (SRLI [val&63] x)
+ // result: (SRLI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVWconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt32(v_1.AuxInt)
v.reset(OpRISCV64SRLI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
// match: (SRL x (MOVDconst [val]))
- // result: (SRLI [val&63] x)
+ // result: (SRLI [int64(val&63)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVDconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt64(v_1.AuxInt)
v.reset(OpRISCV64SRLI)
- v.AuxInt = val & 63
+ v.AuxInt = int64ToAuxInt(int64(val & 63))
v.AddArg(x)
return true
}
@@ -3466,53 +3511,45 @@ func rewriteValueRISCV64_OpRISCV64SUB(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (SUB x (MOVBconst [val]))
- // cond: is32Bit(-val)
- // result: (ADDI [-val] x)
+ // result: (ADDI [-int64(val)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVBconst {
break
}
- val := v_1.AuxInt
- if !(is32Bit(-val)) {
- break
- }
+ val := auxIntToInt8(v_1.AuxInt)
v.reset(OpRISCV64ADDI)
- v.AuxInt = -val
+ v.AuxInt = int64ToAuxInt(-int64(val))
v.AddArg(x)
return true
}
// match: (SUB x (MOVHconst [val]))
- // cond: is32Bit(-val)
- // result: (ADDI [-val] x)
+ // result: (ADDI [-int64(val)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVHconst {
break
}
- val := v_1.AuxInt
- if !(is32Bit(-val)) {
- break
- }
+ val := auxIntToInt16(v_1.AuxInt)
v.reset(OpRISCV64ADDI)
- v.AuxInt = -val
+ v.AuxInt = int64ToAuxInt(-int64(val))
v.AddArg(x)
return true
}
// match: (SUB x (MOVWconst [val]))
- // cond: is32Bit(-val)
- // result: (ADDI [-val] x)
+ // cond: is32Bit(-int64(val))
+ // result: (ADDI [-int64(val)] x)
for {
x := v_0
if v_1.Op != OpRISCV64MOVWconst {
break
}
- val := v_1.AuxInt
- if !(is32Bit(-val)) {
+ val := auxIntToInt32(v_1.AuxInt)
+ if !(is32Bit(-int64(val))) {
break
}
v.reset(OpRISCV64ADDI)
- v.AuxInt = -val
+ v.AuxInt = int64ToAuxInt(-int64(val))
v.AddArg(x)
return true
}
@@ -3524,12 +3561,12 @@ func rewriteValueRISCV64_OpRISCV64SUB(v *Value) bool {
if v_1.Op != OpRISCV64MOVDconst {
break
}
- val := v_1.AuxInt
+ val := auxIntToInt64(v_1.AuxInt)
if !(is32Bit(-val)) {
break
}
v.reset(OpRISCV64ADDI)
- v.AuxInt = -val
+ v.AuxInt = int64ToAuxInt(-val)
v.AddArg(x)
return true
}
@@ -3537,7 +3574,7 @@ func rewriteValueRISCV64_OpRISCV64SUB(v *Value) bool {
// result: x
for {
x := v_0
- if v_1.Op != OpRISCV64MOVBconst || v_1.AuxInt != 0 {
+ if v_1.Op != OpRISCV64MOVBconst || auxIntToInt8(v_1.AuxInt) != 0 {
break
}
v.copyOf(x)
@@ -3547,7 +3584,7 @@ func rewriteValueRISCV64_OpRISCV64SUB(v *Value) bool {
// result: x
for {
x := v_0
- if v_1.Op != OpRISCV64MOVHconst || v_1.AuxInt != 0 {
+ if v_1.Op != OpRISCV64MOVHconst || auxIntToInt16(v_1.AuxInt) != 0 {
break
}
v.copyOf(x)
@@ -3557,7 +3594,7 @@ func rewriteValueRISCV64_OpRISCV64SUB(v *Value) bool {
// result: x
for {
x := v_0
- if v_1.Op != OpRISCV64MOVWconst || v_1.AuxInt != 0 {
+ if v_1.Op != OpRISCV64MOVWconst || auxIntToInt32(v_1.AuxInt) != 0 {
break
}
v.copyOf(x)
@@ -3567,7 +3604,7 @@ func rewriteValueRISCV64_OpRISCV64SUB(v *Value) bool {
// result: x
for {
x := v_0
- if v_1.Op != OpRISCV64MOVDconst || v_1.AuxInt != 0 {
+ if v_1.Op != OpRISCV64MOVDconst || auxIntToInt64(v_1.AuxInt) != 0 {
break
}
v.copyOf(x)
@@ -3576,7 +3613,7 @@ func rewriteValueRISCV64_OpRISCV64SUB(v *Value) bool {
// match: (SUB (MOVBconst [0]) x)
// result: (NEG x)
for {
- if v_0.Op != OpRISCV64MOVBconst || v_0.AuxInt != 0 {
+ if v_0.Op != OpRISCV64MOVBconst || auxIntToInt8(v_0.AuxInt) != 0 {
break
}
x := v_1
@@ -3587,7 +3624,7 @@ func rewriteValueRISCV64_OpRISCV64SUB(v *Value) bool {
// match: (SUB (MOVHconst [0]) x)
// result: (NEG x)
for {
- if v_0.Op != OpRISCV64MOVHconst || v_0.AuxInt != 0 {
+ if v_0.Op != OpRISCV64MOVHconst || auxIntToInt16(v_0.AuxInt) != 0 {
break
}
x := v_1
@@ -3598,7 +3635,7 @@ func rewriteValueRISCV64_OpRISCV64SUB(v *Value) bool {
// match: (SUB (MOVWconst [0]) x)
// result: (NEG x)
for {
- if v_0.Op != OpRISCV64MOVWconst || v_0.AuxInt != 0 {
+ if v_0.Op != OpRISCV64MOVWconst || auxIntToInt32(v_0.AuxInt) != 0 {
break
}
x := v_1
@@ -3609,7 +3646,7 @@ func rewriteValueRISCV64_OpRISCV64SUB(v *Value) bool {
// match: (SUB (MOVDconst [0]) x)
// result: (NEG x)
for {
- if v_0.Op != OpRISCV64MOVDconst || v_0.AuxInt != 0 {
+ if v_0.Op != OpRISCV64MOVDconst || auxIntToInt64(v_0.AuxInt) != 0 {
break
}
x := v_1
@@ -3626,18 +3663,18 @@ func rewriteValueRISCV64_OpRISCV64SUBW(v *Value) bool {
// result: (ADDIW [0] x)
for {
x := v_0
- if v_1.Op != OpRISCV64MOVWconst || v_1.AuxInt != 0 {
+ if v_1.Op != OpRISCV64MOVWconst || auxIntToInt32(v_1.AuxInt) != 0 {
break
}
v.reset(OpRISCV64ADDIW)
- v.AuxInt = 0
+ v.AuxInt = int64ToAuxInt(0)
v.AddArg(x)
return true
}
// match: (SUBW (MOVDconst [0]) x)
// result: (NEGW x)
for {
- if v_0.Op != OpRISCV64MOVDconst || v_0.AuxInt != 0 {
+ if v_0.Op != OpRISCV64MOVDconst || auxIntToInt64(v_0.AuxInt) != 0 {
break
}
x := v_1
@@ -3651,60 +3688,48 @@ func rewriteValueRISCV64_OpRISCV64XOR(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (XOR (MOVBconst [val]) x)
- // cond: is32Bit(val)
- // result: (XORI [val] x)
+ // result: (XORI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVBconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt8(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64XORI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
break
}
// match: (XOR (MOVHconst [val]) x)
- // cond: is32Bit(val)
- // result: (XORI [val] x)
+ // result: (XORI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVHconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt16(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64XORI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
break
}
// match: (XOR (MOVWconst [val]) x)
- // cond: is32Bit(val)
- // result: (XORI [val] x)
+ // result: (XORI [int64(val)] x)
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpRISCV64MOVWconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt32(v_0.AuxInt)
x := v_1
- if !(is32Bit(val)) {
- continue
- }
v.reset(OpRISCV64XORI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(int64(val))
v.AddArg(x)
return true
}
@@ -3718,13 +3743,13 @@ func rewriteValueRISCV64_OpRISCV64XOR(v *Value) bool {
if v_0.Op != OpRISCV64MOVDconst {
continue
}
- val := v_0.AuxInt
+ val := auxIntToInt64(v_0.AuxInt)
x := v_1
if !(is32Bit(val)) {
continue
}
v.reset(OpRISCV64XORI)
- v.AuxInt = val
+ v.AuxInt = int64ToAuxInt(val)
v.AddArg(x)
return true
}
@@ -3745,15 +3770,15 @@ func rewriteValueRISCV64_OpRotateLeft16(v *Value) bool {
if v_1.Op != OpRISCV64MOVHconst {
break
}
- c := v_1.AuxInt
+ c := auxIntToInt16(v_1.AuxInt)
v.reset(OpOr16)
v0 := b.NewValue0(v.Pos, OpLsh16x64, t)
v1 := b.NewValue0(v.Pos, OpRISCV64MOVHconst, typ.UInt16)
- v1.AuxInt = c & 15
+ v1.AuxInt = int16ToAuxInt(c & 15)
v0.AddArg2(x, v1)
v2 := b.NewValue0(v.Pos, OpRsh16Ux64, t)
v3 := b.NewValue0(v.Pos, OpRISCV64MOVHconst, typ.UInt16)
- v3.AuxInt = -c & 15
+ v3.AuxInt = int16ToAuxInt(-c & 15)
v2.AddArg2(x, v3)
v.AddArg2(v0, v2)
return true
@@ -3773,15 +3798,15 @@ func rewriteValueRISCV64_OpRotateLeft32(v *Value) bool {
if v_1.Op != OpRISCV64MOVWconst {
break
}
- c := v_1.AuxInt
+ c := auxIntToInt32(v_1.AuxInt)
v.reset(OpOr32)
v0 := b.NewValue0(v.Pos, OpLsh32x64, t)
v1 := b.NewValue0(v.Pos, OpRISCV64MOVWconst, typ.UInt32)
- v1.AuxInt = c & 31
+ v1.AuxInt = int32ToAuxInt(c & 31)
v0.AddArg2(x, v1)
v2 := b.NewValue0(v.Pos, OpRsh32Ux64, t)
v3 := b.NewValue0(v.Pos, OpRISCV64MOVWconst, typ.UInt32)
- v3.AuxInt = -c & 31
+ v3.AuxInt = int32ToAuxInt(-c & 31)
v2.AddArg2(x, v3)
v.AddArg2(v0, v2)
return true
@@ -3801,15 +3826,15 @@ func rewriteValueRISCV64_OpRotateLeft64(v *Value) bool {
if v_1.Op != OpRISCV64MOVDconst {
break
}
- c := v_1.AuxInt
+ c := auxIntToInt64(v_1.AuxInt)
v.reset(OpOr64)
v0 := b.NewValue0(v.Pos, OpLsh64x64, t)
v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
- v1.AuxInt = c & 63
+ v1.AuxInt = int64ToAuxInt(c & 63)
v0.AddArg2(x, v1)
v2 := b.NewValue0(v.Pos, OpRsh64Ux64, t)
v3 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
- v3.AuxInt = -c & 63
+ v3.AuxInt = int64ToAuxInt(-c & 63)
v2.AddArg2(x, v3)
v.AddArg2(v0, v2)
return true
@@ -3829,15 +3854,15 @@ func rewriteValueRISCV64_OpRotateLeft8(v *Value) bool {
if v_1.Op != OpRISCV64MOVBconst {
break
}
- c := v_1.AuxInt
+ c := auxIntToInt8(v_1.AuxInt)
v.reset(OpOr8)
v0 := b.NewValue0(v.Pos, OpLsh8x64, t)
v1 := b.NewValue0(v.Pos, OpRISCV64MOVBconst, typ.UInt8)
- v1.AuxInt = c & 7
+ v1.AuxInt = int8ToAuxInt(c & 7)
v0.AddArg2(x, v1)
v2 := b.NewValue0(v.Pos, OpRsh8Ux64, t)
v3 := b.NewValue0(v.Pos, OpRISCV64MOVBconst, typ.UInt8)
- v3.AuxInt = -c & 7
+ v3.AuxInt = int8ToAuxInt(-c & 7)
v2.AddArg2(x, v3)
v.AddArg2(v0, v2)
return true
@@ -3862,7 +3887,7 @@ func rewriteValueRISCV64_OpRsh16Ux16(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg16, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -3889,7 +3914,7 @@ func rewriteValueRISCV64_OpRsh16Ux32(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg16, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -3916,7 +3941,7 @@ func rewriteValueRISCV64_OpRsh16Ux64(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg16, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v3.AddArg(y)
v2.AddArg(v3)
v.AddArg2(v0, v2)
@@ -3941,7 +3966,7 @@ func rewriteValueRISCV64_OpRsh16Ux8(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg16, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -3967,9 +3992,9 @@ func rewriteValueRISCV64_OpRsh16x16(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -3996,9 +4021,9 @@ func rewriteValueRISCV64_OpRsh16x32(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4025,9 +4050,9 @@ func rewriteValueRISCV64_OpRsh16x64(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v3.AddArg(y)
v2.AddArg(v3)
v1.AddArg2(y, v2)
@@ -4052,9 +4077,9 @@ func rewriteValueRISCV64_OpRsh16x8(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4082,7 +4107,7 @@ func rewriteValueRISCV64_OpRsh32Ux16(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg32, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4109,7 +4134,7 @@ func rewriteValueRISCV64_OpRsh32Ux32(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg32, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4136,7 +4161,7 @@ func rewriteValueRISCV64_OpRsh32Ux64(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg32, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v3.AddArg(y)
v2.AddArg(v3)
v.AddArg2(v0, v2)
@@ -4161,7 +4186,7 @@ func rewriteValueRISCV64_OpRsh32Ux8(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg32, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4187,9 +4212,9 @@ func rewriteValueRISCV64_OpRsh32x16(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4216,9 +4241,9 @@ func rewriteValueRISCV64_OpRsh32x32(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4245,9 +4270,9 @@ func rewriteValueRISCV64_OpRsh32x64(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v3.AddArg(y)
v2.AddArg(v3)
v1.AddArg2(y, v2)
@@ -4272,9 +4297,9 @@ func rewriteValueRISCV64_OpRsh32x8(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4300,7 +4325,7 @@ func rewriteValueRISCV64_OpRsh64Ux16(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg64, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -4325,7 +4350,7 @@ func rewriteValueRISCV64_OpRsh64Ux32(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg64, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -4349,7 +4374,7 @@ func rewriteValueRISCV64_OpRsh64Ux64(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg64, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v2.AddArg(y)
v1.AddArg(v2)
v.AddArg2(v0, v1)
@@ -4372,7 +4397,7 @@ func rewriteValueRISCV64_OpRsh64Ux8(v *Value) bool {
v0.AddArg2(x, y)
v1 := b.NewValue0(v.Pos, OpNeg64, t)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -4396,9 +4421,9 @@ func rewriteValueRISCV64_OpRsh64x16(v *Value) bool {
v.Type = t
v0 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v1 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v1.AuxInt = -1
+ v1.AuxInt = int64ToAuxInt(-1)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -4423,9 +4448,9 @@ func rewriteValueRISCV64_OpRsh64x32(v *Value) bool {
v.Type = t
v0 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v1 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v1.AuxInt = -1
+ v1.AuxInt = int64ToAuxInt(-1)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -4449,9 +4474,9 @@ func rewriteValueRISCV64_OpRsh64x64(v *Value) bool {
v.Type = t
v0 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v1 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v1.AuxInt = -1
+ v1.AuxInt = int64ToAuxInt(-1)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v2.AddArg(y)
v1.AddArg(v2)
v0.AddArg2(y, v1)
@@ -4474,9 +4499,9 @@ func rewriteValueRISCV64_OpRsh64x8(v *Value) bool {
v.Type = t
v0 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v1 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v1.AuxInt = -1
+ v1.AuxInt = int64ToAuxInt(-1)
v2 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v2.AuxInt = 64
+ v2.AuxInt = int64ToAuxInt(64)
v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v3.AddArg(y)
v2.AddArg(v3)
@@ -4504,7 +4529,7 @@ func rewriteValueRISCV64_OpRsh8Ux16(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg8, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4531,7 +4556,7 @@ func rewriteValueRISCV64_OpRsh8Ux32(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg8, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4558,7 +4583,7 @@ func rewriteValueRISCV64_OpRsh8Ux64(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg8, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v3.AddArg(y)
v2.AddArg(v3)
v.AddArg2(v0, v2)
@@ -4583,7 +4608,7 @@ func rewriteValueRISCV64_OpRsh8Ux8(v *Value) bool {
v0.AddArg2(v1, y)
v2 := b.NewValue0(v.Pos, OpNeg8, t)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, t)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4609,9 +4634,9 @@ func rewriteValueRISCV64_OpRsh8x16(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4638,9 +4663,9 @@ func rewriteValueRISCV64_OpRsh8x32(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt32to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4667,9 +4692,9 @@ func rewriteValueRISCV64_OpRsh8x64(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v3.AddArg(y)
v2.AddArg(v3)
v1.AddArg2(y, v2)
@@ -4694,9 +4719,9 @@ func rewriteValueRISCV64_OpRsh8x8(v *Value) bool {
v0.AddArg(x)
v1 := b.NewValue0(v.Pos, OpRISCV64OR, y.Type)
v2 := b.NewValue0(v.Pos, OpRISCV64ADDI, y.Type)
- v2.AuxInt = -1
+ v2.AuxInt = int64ToAuxInt(-1)
v3 := b.NewValue0(v.Pos, OpRISCV64SLTIU, y.Type)
- v3.AuxInt = 64
+ v3.AuxInt = int64ToAuxInt(64)
v4 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64)
v4.AddArg(y)
v3.AddArg(v4)
@@ -4715,9 +4740,9 @@ func rewriteValueRISCV64_OpSignExt16to32(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRAI)
- v.AuxInt = 48
+ v.AuxInt = int64ToAuxInt(48)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 48
+ v0.AuxInt = int64ToAuxInt(48)
v0.AddArg(x)
v.AddArg(v0)
return true
@@ -4732,9 +4757,9 @@ func rewriteValueRISCV64_OpSignExt16to64(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRAI)
- v.AuxInt = 48
+ v.AuxInt = int64ToAuxInt(48)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 48
+ v0.AuxInt = int64ToAuxInt(48)
v0.AddArg(x)
v.AddArg(v0)
return true
@@ -4747,7 +4772,7 @@ func rewriteValueRISCV64_OpSignExt32to64(v *Value) bool {
for {
x := v_0
v.reset(OpRISCV64ADDIW)
- v.AuxInt = 0
+ v.AuxInt = int64ToAuxInt(0)
v.AddArg(x)
return true
}
@@ -4761,9 +4786,9 @@ func rewriteValueRISCV64_OpSignExt8to16(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRAI)
- v.AuxInt = 56
+ v.AuxInt = int64ToAuxInt(56)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 56
+ v0.AuxInt = int64ToAuxInt(56)
v0.AddArg(x)
v.AddArg(v0)
return true
@@ -4778,9 +4803,9 @@ func rewriteValueRISCV64_OpSignExt8to32(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRAI)
- v.AuxInt = 56
+ v.AuxInt = int64ToAuxInt(56)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 56
+ v0.AuxInt = int64ToAuxInt(56)
v0.AddArg(x)
v.AddArg(v0)
return true
@@ -4795,9 +4820,9 @@ func rewriteValueRISCV64_OpSignExt8to64(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRAI)
- v.AuxInt = 56
+ v.AuxInt = int64ToAuxInt(56)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 56
+ v0.AuxInt = int64ToAuxInt(56)
v0.AddArg(x)
v.AddArg(v0)
return true
@@ -4813,9 +4838,9 @@ func rewriteValueRISCV64_OpSlicemask(v *Value) bool {
x := v_0
v.reset(OpRISCV64NOT)
v0 := b.NewValue0(v.Pos, OpRISCV64SRAI, t)
- v0.AuxInt = 63
+ v0.AuxInt = int64ToAuxInt(63)
v1 := b.NewValue0(v.Pos, OpRISCV64ADDI, t)
- v1.AuxInt = -1
+ v1.AuxInt = int64ToAuxInt(-1)
v1.AddArg(x)
v0.AddArg(v1)
v.AddArg(v0)
@@ -4827,14 +4852,14 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
// match: (Store {t} ptr val mem)
- // cond: t.(*types.Type).Size() == 1
+ // cond: t.Size() == 1
// result: (MOVBstore ptr val mem)
for {
- t := v.Aux
+ t := auxToType(v.Aux)
ptr := v_0
val := v_1
mem := v_2
- if !(t.(*types.Type).Size() == 1) {
+ if !(t.Size() == 1) {
break
}
v.reset(OpRISCV64MOVBstore)
@@ -4842,14 +4867,14 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
return true
}
// match: (Store {t} ptr val mem)
- // cond: t.(*types.Type).Size() == 2
+ // cond: t.Size() == 2
// result: (MOVHstore ptr val mem)
for {
- t := v.Aux
+ t := auxToType(v.Aux)
ptr := v_0
val := v_1
mem := v_2
- if !(t.(*types.Type).Size() == 2) {
+ if !(t.Size() == 2) {
break
}
v.reset(OpRISCV64MOVHstore)
@@ -4857,14 +4882,14 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
return true
}
// match: (Store {t} ptr val mem)
- // cond: t.(*types.Type).Size() == 4 && !is32BitFloat(val.Type)
+ // cond: t.Size() == 4 && !is32BitFloat(val.Type)
// result: (MOVWstore ptr val mem)
for {
- t := v.Aux
+ t := auxToType(v.Aux)
ptr := v_0
val := v_1
mem := v_2
- if !(t.(*types.Type).Size() == 4 && !is32BitFloat(val.Type)) {
+ if !(t.Size() == 4 && !is32BitFloat(val.Type)) {
break
}
v.reset(OpRISCV64MOVWstore)
@@ -4872,14 +4897,14 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
return true
}
// match: (Store {t} ptr val mem)
- // cond: t.(*types.Type).Size() == 8 && !is64BitFloat(val.Type)
+ // cond: t.Size() == 8 && !is64BitFloat(val.Type)
// result: (MOVDstore ptr val mem)
for {
- t := v.Aux
+ t := auxToType(v.Aux)
ptr := v_0
val := v_1
mem := v_2
- if !(t.(*types.Type).Size() == 8 && !is64BitFloat(val.Type)) {
+ if !(t.Size() == 8 && !is64BitFloat(val.Type)) {
break
}
v.reset(OpRISCV64MOVDstore)
@@ -4887,14 +4912,14 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
return true
}
// match: (Store {t} ptr val mem)
- // cond: t.(*types.Type).Size() == 4 && is32BitFloat(val.Type)
+ // cond: t.Size() == 4 && is32BitFloat(val.Type)
// result: (FMOVWstore ptr val mem)
for {
- t := v.Aux
+ t := auxToType(v.Aux)
ptr := v_0
val := v_1
mem := v_2
- if !(t.(*types.Type).Size() == 4 && is32BitFloat(val.Type)) {
+ if !(t.Size() == 4 && is32BitFloat(val.Type)) {
break
}
v.reset(OpRISCV64FMOVWstore)
@@ -4902,14 +4927,14 @@ func rewriteValueRISCV64_OpStore(v *Value) bool {
return true
}
// match: (Store {t} ptr val mem)
- // cond: t.(*types.Type).Size() == 8 && is64BitFloat(val.Type)
+ // cond: t.Size() == 8 && is64BitFloat(val.Type)
// result: (FMOVDstore ptr val mem)
for {
- t := v.Aux
+ t := auxToType(v.Aux)
ptr := v_0
val := v_1
mem := v_2
- if !(t.(*types.Type).Size() == 8 && is64BitFloat(val.Type)) {
+ if !(t.Size() == 8 && is64BitFloat(val.Type)) {
break
}
v.reset(OpRISCV64FMOVDstore)
@@ -4927,7 +4952,7 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
// match: (Zero [0] _ mem)
// result: mem
for {
- if v.AuxInt != 0 {
+ if auxIntToInt64(v.AuxInt) != 0 {
break
}
mem := v_1
@@ -4937,7 +4962,7 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
// match: (Zero [1] ptr mem)
// result: (MOVBstore ptr (MOVBconst) mem)
for {
- if v.AuxInt != 1 {
+ if auxIntToInt64(v.AuxInt) != 1 {
break
}
ptr := v_0
@@ -4950,7 +4975,7 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
// match: (Zero [2] ptr mem)
// result: (MOVHstore ptr (MOVHconst) mem)
for {
- if v.AuxInt != 2 {
+ if auxIntToInt64(v.AuxInt) != 2 {
break
}
ptr := v_0
@@ -4963,7 +4988,7 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
// match: (Zero [4] ptr mem)
// result: (MOVWstore ptr (MOVWconst) mem)
for {
- if v.AuxInt != 4 {
+ if auxIntToInt64(v.AuxInt) != 4 {
break
}
ptr := v_0
@@ -4976,7 +5001,7 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
// match: (Zero [8] ptr mem)
// result: (MOVDstore ptr (MOVDconst) mem)
for {
- if v.AuxInt != 8 {
+ if auxIntToInt64(v.AuxInt) != 8 {
break
}
ptr := v_0
@@ -4987,17 +5012,17 @@ func rewriteValueRISCV64_OpZero(v *Value) bool {
return true
}
// match: (Zero [s] {t} ptr mem)
- // result: (LoweredZero [t.(*types.Type).Alignment()] ptr (ADD <ptr.Type> ptr (MOVDconst [s-moveSize(t.(*types.Type).Alignment(), config)])) mem)
+ // result: (LoweredZero [t.Alignment()] ptr (ADD <ptr.Type> ptr (MOVDconst [s-moveSize(t.Alignment(), config)])) mem)
for {
- s := v.AuxInt
- t := v.Aux
+ s := auxIntToInt64(v.AuxInt)
+ t := auxToType(v.Aux)
ptr := v_0
mem := v_1
v.reset(OpRISCV64LoweredZero)
- v.AuxInt = t.(*types.Type).Alignment()
+ v.AuxInt = int64ToAuxInt(t.Alignment())
v0 := b.NewValue0(v.Pos, OpRISCV64ADD, ptr.Type)
v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64)
- v1.AuxInt = s - moveSize(t.(*types.Type).Alignment(), config)
+ v1.AuxInt = int64ToAuxInt(s - moveSize(t.Alignment(), config))
v0.AddArg2(ptr, v1)
v.AddArg3(ptr, v0, mem)
return true
@@ -5012,9 +5037,9 @@ func rewriteValueRISCV64_OpZeroExt16to32(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRLI)
- v.AuxInt = 48
+ v.AuxInt = int64ToAuxInt(48)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 48
+ v0.AuxInt = int64ToAuxInt(48)
v0.AddArg(x)
v.AddArg(v0)
return true
@@ -5029,9 +5054,9 @@ func rewriteValueRISCV64_OpZeroExt16to64(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRLI)
- v.AuxInt = 48
+ v.AuxInt = int64ToAuxInt(48)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 48
+ v0.AuxInt = int64ToAuxInt(48)
v0.AddArg(x)
v.AddArg(v0)
return true
@@ -5046,9 +5071,9 @@ func rewriteValueRISCV64_OpZeroExt32to64(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRLI)
- v.AuxInt = 32
+ v.AuxInt = int64ToAuxInt(32)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 32
+ v0.AuxInt = int64ToAuxInt(32)
v0.AddArg(x)
v.AddArg(v0)
return true
@@ -5063,9 +5088,9 @@ func rewriteValueRISCV64_OpZeroExt8to16(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRLI)
- v.AuxInt = 56
+ v.AuxInt = int64ToAuxInt(56)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 56
+ v0.AuxInt = int64ToAuxInt(56)
v0.AddArg(x)
v.AddArg(v0)
return true
@@ -5080,9 +5105,9 @@ func rewriteValueRISCV64_OpZeroExt8to32(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRLI)
- v.AuxInt = 56
+ v.AuxInt = int64ToAuxInt(56)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 56
+ v0.AuxInt = int64ToAuxInt(56)
v0.AddArg(x)
v.AddArg(v0)
return true
@@ -5097,9 +5122,9 @@ func rewriteValueRISCV64_OpZeroExt8to64(v *Value) bool {
t := v.Type
x := v_0
v.reset(OpRISCV64SRLI)
- v.AuxInt = 56
+ v.AuxInt = int64ToAuxInt(56)
v0 := b.NewValue0(v.Pos, OpRISCV64SLLI, t)
- v0.AuxInt = 56
+ v0.AuxInt = int64ToAuxInt(56)
v0.AddArg(x)
v.AddArg(v0)
return true