1
0
mirror of https://github.com/golang/go synced 2024-11-23 05:30:07 -07:00

cmd/compile: make pre-elimination of rulegen bounds checks more precise

In cases in which we had a named value whose args were all _,
like this rule from ARM.rules:

(MOVBUreg x:(MOVBUload _ _)) -> (MOVWreg x)

We previously inserted

_ = x.Args[1]

even though it is unnecessary.
This change eliminates this pointless bounds check.
And in other cases, we now check bounds just as far as strictly necessary.

No significant movement on any compiler metrics.
Just nicer (and less) code.

Passes toolstash-check -all.

Change-Id: I075dfe9f926cc561cdc705e9ddaab563164bed3a
Reviewed-on: https://go-review.googlesource.com/c/go/+/221781
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
Josh Bleecher Snyder 2020-03-01 16:44:06 -08:00
parent 5e4da0adac
commit a2bff7c296
13 changed files with 170 additions and 645 deletions

View File

@ -1001,16 +1001,21 @@ func genMatch0(rr *RuleRewrite, arch arch, match, v string, cnt map[string]int,
}
}
// Access last argument first to minimize bounds checks.
if n := len(args); n > 1 && !pregenTop {
a := args[n-1]
if a != "_" && !rr.declared(a) && token.IsIdentifier(a) && !(commutative && len(args) == 2) {
rr.add(declf(a, "%s.Args[%d]", v, n-1))
// delete the last argument so it is not reprocessed
args = args[:n-1]
} else {
rr.add(stmtf("_ = %s.Args[%d]", v, n-1))
if !pregenTop {
// Access last argument first to minimize bounds checks.
for n := len(args) - 1; n > 0; n-- {
a := args[n]
if a == "_" {
continue
}
if !rr.declared(a) && token.IsIdentifier(a) && !(commutative && len(args) == 2) {
rr.add(declf(a, "%s.Args[%d]", v, n))
// delete the last argument so it is not reprocessed
args = args[:n]
} else {
rr.add(stmtf("_ = %s.Args[%d]", v, n))
}
break
}
}
if commutative && !pregenTop {

View File

@ -4087,9 +4087,8 @@ func rewriteValue386_Op386MOVBLSXload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -4203,9 +4202,8 @@ func rewriteValue386_Op386MOVBload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -5109,9 +5107,8 @@ func rewriteValue386_Op386MOVLload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -7523,9 +7520,8 @@ func rewriteValue386_Op386MOVWLSXload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -7663,9 +7659,8 @@ func rewriteValue386_Op386MOVWload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}

View File

@ -1858,11 +1858,10 @@ func rewriteValueAMD64_OpAMD64ADDLload(v *Value) bool {
if v_2.Op != OpAMD64MOVSSstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64ADDL)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
v0.AddArg(y)
@ -2479,11 +2478,10 @@ func rewriteValueAMD64_OpAMD64ADDQload(v *Value) bool {
if v_2.Op != OpAMD64MOVSDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64ADDQ)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
v0.AddArg(y)
@ -2634,11 +2632,10 @@ func rewriteValueAMD64_OpAMD64ADDSDload(v *Value) bool {
if v_2.Op != OpAMD64MOVQstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64ADDSD)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQi2f, typ.Float64)
v0.AddArg(y)
@ -2738,11 +2735,10 @@ func rewriteValueAMD64_OpAMD64ADDSSload(v *Value) bool {
if v_2.Op != OpAMD64MOVLstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64ADDSS)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLi2f, typ.Float32)
v0.AddArg(y)
@ -3063,11 +3059,10 @@ func rewriteValueAMD64_OpAMD64ANDLload(v *Value) bool {
if v_2.Op != OpAMD64MOVSSstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64ANDL)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
v0.AddArg(y)
@ -3450,11 +3445,10 @@ func rewriteValueAMD64_OpAMD64ANDQload(v *Value) bool {
if v_2.Op != OpAMD64MOVSDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64ANDQ)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
v0.AddArg(y)
@ -9766,9 +9760,8 @@ func rewriteValueAMD64_OpAMD64MOVBQSXload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -10019,9 +10012,8 @@ func rewriteValueAMD64_OpAMD64MOVBload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -12046,9 +12038,8 @@ func rewriteValueAMD64_OpAMD64MOVLQSXload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -12353,9 +12344,8 @@ func rewriteValueAMD64_OpAMD64MOVLload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -12554,11 +12544,10 @@ func rewriteValueAMD64_OpAMD64MOVLload(v *Value) bool {
if v_1.Op != OpAMD64MOVSSstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
val := v_1.Args[1]
if ptr != v_1.Args[0] {
break
}
val := v_1.Args[1]
v.reset(OpAMD64MOVLf2i)
v.AddArg(val)
return true
@ -14721,7 +14710,6 @@ func rewriteValueAMD64_OpAMD64MOVOstore(v *Value) bool {
}
srcOff := v_1.AuxInt
srcSym := v_1.Aux
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpSB {
break
@ -14863,9 +14851,8 @@ func rewriteValueAMD64_OpAMD64MOVQload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -15040,11 +15027,10 @@ func rewriteValueAMD64_OpAMD64MOVQload(v *Value) bool {
if v_1.Op != OpAMD64MOVSDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
val := v_1.Args[1]
if ptr != v_1.Args[0] {
break
}
val := v_1.Args[1]
v.reset(OpAMD64MOVQf2i)
v.AddArg(val)
return true
@ -16627,11 +16613,10 @@ func rewriteValueAMD64_OpAMD64MOVSDload(v *Value) bool {
if v_1.Op != OpAMD64MOVQstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
val := v_1.Args[1]
if ptr != v_1.Args[0] {
break
}
val := v_1.Args[1]
v.reset(OpAMD64MOVQi2f)
v.AddArg(val)
return true
@ -17237,11 +17222,10 @@ func rewriteValueAMD64_OpAMD64MOVSSload(v *Value) bool {
if v_1.Op != OpAMD64MOVLstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
val := v_1.Args[1]
if ptr != v_1.Args[0] {
break
}
val := v_1.Args[1]
v.reset(OpAMD64MOVLi2f)
v.AddArg(val)
return true
@ -17847,9 +17831,8 @@ func rewriteValueAMD64_OpAMD64MOVWQSXload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -18066,9 +18049,8 @@ func rewriteValueAMD64_OpAMD64MOVWload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -20680,11 +20662,10 @@ func rewriteValueAMD64_OpAMD64MULSDload(v *Value) bool {
if v_2.Op != OpAMD64MOVQstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64MULSD)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQi2f, typ.Float64)
v0.AddArg(y)
@ -20784,11 +20765,10 @@ func rewriteValueAMD64_OpAMD64MULSSload(v *Value) bool {
if v_2.Op != OpAMD64MOVLstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64MULSS)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLi2f, typ.Float32)
v0.AddArg(y)
@ -22560,11 +22540,10 @@ func rewriteValueAMD64_OpAMD64ORLload(v *Value) bool {
if v_2.Op != OpAMD64MOVSSstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64ORL)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
v0.AddArg(y)
@ -24304,11 +24283,10 @@ func rewriteValueAMD64_OpAMD64ORQload(v *Value) bool {
if v_2.Op != OpAMD64MOVSDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64ORQ)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
v0.AddArg(y)
@ -30779,11 +30757,10 @@ func rewriteValueAMD64_OpAMD64SUBLload(v *Value) bool {
if v_2.Op != OpAMD64MOVSSstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64SUBL)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
v0.AddArg(y)
@ -31059,11 +31036,10 @@ func rewriteValueAMD64_OpAMD64SUBQload(v *Value) bool {
if v_2.Op != OpAMD64MOVSDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64SUBQ)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
v0.AddArg(y)
@ -31211,11 +31187,10 @@ func rewriteValueAMD64_OpAMD64SUBSDload(v *Value) bool {
if v_2.Op != OpAMD64MOVQstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64SUBSD)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQi2f, typ.Float64)
v0.AddArg(y)
@ -31312,11 +31287,10 @@ func rewriteValueAMD64_OpAMD64SUBSSload(v *Value) bool {
if v_2.Op != OpAMD64MOVLstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64SUBSS)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLi2f, typ.Float32)
v0.AddArg(y)
@ -32238,11 +32212,10 @@ func rewriteValueAMD64_OpAMD64XORLload(v *Value) bool {
if v_2.Op != OpAMD64MOVSSstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64XORL)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
v0.AddArg(y)
@ -32603,11 +32576,10 @@ func rewriteValueAMD64_OpAMD64XORQload(v *Value) bool {
if v_2.Op != OpAMD64MOVSDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
y := v_2.Args[1]
if ptr != v_2.Args[0] {
break
}
y := v_2.Args[1]
v.reset(OpAMD64XORQ)
v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
v0.AddArg(y)

View File

@ -5120,9 +5120,8 @@ func rewriteValueARM_OpARMMOVBUload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -5179,13 +5178,9 @@ func rewriteValueARM_OpARMMOVBUloadidx(v *Value) bool {
if v_2.Op != OpARMMOVBstoreidx {
break
}
_ = v_2.Args[3]
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] {
break
}
x := v_2.Args[2]
if !(isSamePtr(ptr, ptr2)) {
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] || !(isSamePtr(ptr, ptr2)) {
break
}
v.reset(OpARMMOVBUreg)
@ -5231,7 +5226,6 @@ func rewriteValueARM_OpARMMOVBUreg(v *Value) bool {
if x.Op != OpARMMOVBUload {
break
}
_ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
@ -5344,9 +5338,8 @@ func rewriteValueARM_OpARMMOVBload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -5390,13 +5383,9 @@ func rewriteValueARM_OpARMMOVBloadidx(v *Value) bool {
if v_2.Op != OpARMMOVBstoreidx {
break
}
_ = v_2.Args[3]
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] {
break
}
x := v_2.Args[2]
if !(isSamePtr(ptr, ptr2)) {
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] || !(isSamePtr(ptr, ptr2)) {
break
}
v.reset(OpARMMOVBreg)
@ -5442,7 +5431,6 @@ func rewriteValueARM_OpARMMOVBreg(v *Value) bool {
if x.Op != OpARMMOVBload {
break
}
_ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
@ -5751,9 +5739,8 @@ func rewriteValueARM_OpARMMOVDload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -5898,9 +5885,8 @@ func rewriteValueARM_OpARMMOVFload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -6047,9 +6033,8 @@ func rewriteValueARM_OpARMMOVHUload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -6106,13 +6091,9 @@ func rewriteValueARM_OpARMMOVHUloadidx(v *Value) bool {
if v_2.Op != OpARMMOVHstoreidx {
break
}
_ = v_2.Args[3]
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] {
break
}
x := v_2.Args[2]
if !(isSamePtr(ptr, ptr2)) {
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] || !(isSamePtr(ptr, ptr2)) {
break
}
v.reset(OpARMMOVHUreg)
@ -6158,7 +6139,6 @@ func rewriteValueARM_OpARMMOVHUreg(v *Value) bool {
if x.Op != OpARMMOVBUload {
break
}
_ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
@ -6170,7 +6150,6 @@ func rewriteValueARM_OpARMMOVHUreg(v *Value) bool {
if x.Op != OpARMMOVHUload {
break
}
_ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
@ -6294,9 +6273,8 @@ func rewriteValueARM_OpARMMOVHload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -6340,13 +6318,9 @@ func rewriteValueARM_OpARMMOVHloadidx(v *Value) bool {
if v_2.Op != OpARMMOVHstoreidx {
break
}
_ = v_2.Args[3]
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] {
break
}
x := v_2.Args[2]
if !(isSamePtr(ptr, ptr2)) {
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] || !(isSamePtr(ptr, ptr2)) {
break
}
v.reset(OpARMMOVHreg)
@ -6392,7 +6366,6 @@ func rewriteValueARM_OpARMMOVHreg(v *Value) bool {
if x.Op != OpARMMOVBload {
break
}
_ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
@ -6404,7 +6377,6 @@ func rewriteValueARM_OpARMMOVHreg(v *Value) bool {
if x.Op != OpARMMOVBUload {
break
}
_ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
@ -6416,7 +6388,6 @@ func rewriteValueARM_OpARMMOVHreg(v *Value) bool {
if x.Op != OpARMMOVHload {
break
}
_ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
@ -6715,9 +6686,8 @@ func rewriteValueARM_OpARMMOVWload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -6842,13 +6812,9 @@ func rewriteValueARM_OpARMMOVWloadidx(v *Value) bool {
if v_2.Op != OpARMMOVWstoreidx {
break
}
_ = v_2.Args[3]
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] {
break
}
x := v_2.Args[2]
if !(isSamePtr(ptr, ptr2)) {
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] || !(isSamePtr(ptr, ptr2)) {
break
}
v.copyOf(x)
@ -6989,13 +6955,9 @@ func rewriteValueARM_OpARMMOVWloadshiftLL(v *Value) bool {
break
}
d := v_2.AuxInt
_ = v_2.Args[3]
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] {
break
}
x := v_2.Args[2]
if !(c == d && isSamePtr(ptr, ptr2)) {
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] || !(c == d && isSamePtr(ptr, ptr2)) {
break
}
v.copyOf(x)
@ -7033,13 +6995,9 @@ func rewriteValueARM_OpARMMOVWloadshiftRA(v *Value) bool {
break
}
d := v_2.AuxInt
_ = v_2.Args[3]
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] {
break
}
x := v_2.Args[2]
if !(c == d && isSamePtr(ptr, ptr2)) {
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] || !(c == d && isSamePtr(ptr, ptr2)) {
break
}
v.copyOf(x)
@ -7077,13 +7035,9 @@ func rewriteValueARM_OpARMMOVWloadshiftRL(v *Value) bool {
break
}
d := v_2.AuxInt
_ = v_2.Args[3]
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] {
break
}
x := v_2.Args[2]
if !(c == d && isSamePtr(ptr, ptr2)) {
ptr2 := v_2.Args[0]
if idx != v_2.Args[1] || !(c == d && isSamePtr(ptr, ptr2)) {
break
}
v.copyOf(x)

View File

@ -4118,11 +4118,10 @@ func rewriteValueARM64_OpARM64FMOVDload(v *Value) bool {
if v_1.Op != OpARM64MOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
val := v_1.Args[1]
if ptr != v_1.Args[0] {
break
}
val := v_1.Args[1]
v.reset(OpARM64FMOVDgpfp)
v.AddArg(val)
return true
@ -4366,11 +4365,10 @@ func rewriteValueARM64_OpARM64FMOVSload(v *Value) bool {
if v_1.Op != OpARM64MOVWstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
val := v_1.Args[1]
if ptr != v_1.Args[0] {
break
}
val := v_1.Args[1]
v.reset(OpARM64FMOVSgpfp)
v.AddArg(val)
return true
@ -6838,7 +6836,6 @@ func rewriteValueARM64_OpARM64MOVBUload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
@ -6903,9 +6900,8 @@ func rewriteValueARM64_OpARM64MOVBUloadidx(v *Value) bool {
if v_2.Op != OpARM64MOVBstorezeroidx {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2) || isSamePtr(ptr, idx2) && isSamePtr(idx, ptr2)) {
break
}
@ -6924,7 +6920,6 @@ func rewriteValueARM64_OpARM64MOVBUreg(v *Value) bool {
if x.Op != OpARM64MOVBUload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -6936,7 +6931,6 @@ func rewriteValueARM64_OpARM64MOVBUreg(v *Value) bool {
if x.Op != OpARM64MOVBUloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -7103,7 +7097,6 @@ func rewriteValueARM64_OpARM64MOVBload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
@ -7155,9 +7148,8 @@ func rewriteValueARM64_OpARM64MOVBloadidx(v *Value) bool {
if v_2.Op != OpARM64MOVBstorezeroidx {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2) || isSamePtr(ptr, idx2) && isSamePtr(idx, ptr2)) {
break
}
@ -7176,7 +7168,6 @@ func rewriteValueARM64_OpARM64MOVBreg(v *Value) bool {
if x.Op != OpARM64MOVBload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -7188,7 +7179,6 @@ func rewriteValueARM64_OpARM64MOVBreg(v *Value) bool {
if x.Op != OpARM64MOVBloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -9277,11 +9267,10 @@ func rewriteValueARM64_OpARM64MOVDload(v *Value) bool {
if v_1.Op != OpARM64FMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
val := v_1.Args[1]
if ptr != v_1.Args[0] {
break
}
val := v_1.Args[1]
v.reset(OpARM64FMOVDfpgp)
v.AddArg(val)
return true
@ -9379,7 +9368,6 @@ func rewriteValueARM64_OpARM64MOVDload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
@ -9470,9 +9458,8 @@ func rewriteValueARM64_OpARM64MOVDloadidx(v *Value) bool {
if v_2.Op != OpARM64MOVDstorezeroidx {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2) || isSamePtr(ptr, idx2) && isSamePtr(idx, ptr2)) {
break
}
@ -9509,9 +9496,8 @@ func rewriteValueARM64_OpARM64MOVDloadidx8(v *Value) bool {
if v_2.Op != OpARM64MOVDstorezeroidx8 {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2)) {
break
}
@ -10145,7 +10131,6 @@ func rewriteValueARM64_OpARM64MOVHUload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
@ -10255,9 +10240,8 @@ func rewriteValueARM64_OpARM64MOVHUloadidx(v *Value) bool {
if v_2.Op != OpARM64MOVHstorezeroidx {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2) || isSamePtr(ptr, idx2) && isSamePtr(idx, ptr2)) {
break
}
@ -10294,9 +10278,8 @@ func rewriteValueARM64_OpARM64MOVHUloadidx2(v *Value) bool {
if v_2.Op != OpARM64MOVHstorezeroidx2 {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2)) {
break
}
@ -10315,7 +10298,6 @@ func rewriteValueARM64_OpARM64MOVHUreg(v *Value) bool {
if x.Op != OpARM64MOVBUload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10327,7 +10309,6 @@ func rewriteValueARM64_OpARM64MOVHUreg(v *Value) bool {
if x.Op != OpARM64MOVHUload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10339,7 +10320,6 @@ func rewriteValueARM64_OpARM64MOVHUreg(v *Value) bool {
if x.Op != OpARM64MOVBUloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10351,7 +10331,6 @@ func rewriteValueARM64_OpARM64MOVHUreg(v *Value) bool {
if x.Op != OpARM64MOVHUloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10363,7 +10342,6 @@ func rewriteValueARM64_OpARM64MOVHUreg(v *Value) bool {
if x.Op != OpARM64MOVHUloadidx2 {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10548,7 +10526,6 @@ func rewriteValueARM64_OpARM64MOVHload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
@ -10645,9 +10622,8 @@ func rewriteValueARM64_OpARM64MOVHloadidx(v *Value) bool {
if v_2.Op != OpARM64MOVHstorezeroidx {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2) || isSamePtr(ptr, idx2) && isSamePtr(idx, ptr2)) {
break
}
@ -10684,9 +10660,8 @@ func rewriteValueARM64_OpARM64MOVHloadidx2(v *Value) bool {
if v_2.Op != OpARM64MOVHstorezeroidx2 {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2)) {
break
}
@ -10705,7 +10680,6 @@ func rewriteValueARM64_OpARM64MOVHreg(v *Value) bool {
if x.Op != OpARM64MOVBload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10717,7 +10691,6 @@ func rewriteValueARM64_OpARM64MOVHreg(v *Value) bool {
if x.Op != OpARM64MOVBUload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10729,7 +10702,6 @@ func rewriteValueARM64_OpARM64MOVHreg(v *Value) bool {
if x.Op != OpARM64MOVHload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10741,7 +10713,6 @@ func rewriteValueARM64_OpARM64MOVHreg(v *Value) bool {
if x.Op != OpARM64MOVBloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10753,7 +10724,6 @@ func rewriteValueARM64_OpARM64MOVHreg(v *Value) bool {
if x.Op != OpARM64MOVBUloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10765,7 +10735,6 @@ func rewriteValueARM64_OpARM64MOVHreg(v *Value) bool {
if x.Op != OpARM64MOVHloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -10777,7 +10746,6 @@ func rewriteValueARM64_OpARM64MOVHreg(v *Value) bool {
if x.Op != OpARM64MOVHloadidx2 {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12086,11 +12054,10 @@ func rewriteValueARM64_OpARM64MOVWUload(v *Value) bool {
if v_1.Op != OpARM64FMOVSstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
val := v_1.Args[1]
if ptr != v_1.Args[0] {
break
}
val := v_1.Args[1]
v.reset(OpARM64FMOVSfpgp)
v.AddArg(val)
return true
@ -12188,7 +12155,6 @@ func rewriteValueARM64_OpARM64MOVWUload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
@ -12279,9 +12245,8 @@ func rewriteValueARM64_OpARM64MOVWUloadidx(v *Value) bool {
if v_2.Op != OpARM64MOVWstorezeroidx {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2) || isSamePtr(ptr, idx2) && isSamePtr(idx, ptr2)) {
break
}
@ -12318,9 +12283,8 @@ func rewriteValueARM64_OpARM64MOVWUloadidx4(v *Value) bool {
if v_2.Op != OpARM64MOVWstorezeroidx4 {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2)) {
break
}
@ -12339,7 +12303,6 @@ func rewriteValueARM64_OpARM64MOVWUreg(v *Value) bool {
if x.Op != OpARM64MOVBUload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12351,7 +12314,6 @@ func rewriteValueARM64_OpARM64MOVWUreg(v *Value) bool {
if x.Op != OpARM64MOVHUload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12363,7 +12325,6 @@ func rewriteValueARM64_OpARM64MOVWUreg(v *Value) bool {
if x.Op != OpARM64MOVWUload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12375,7 +12336,6 @@ func rewriteValueARM64_OpARM64MOVWUreg(v *Value) bool {
if x.Op != OpARM64MOVBUloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12387,7 +12347,6 @@ func rewriteValueARM64_OpARM64MOVWUreg(v *Value) bool {
if x.Op != OpARM64MOVHUloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12399,7 +12358,6 @@ func rewriteValueARM64_OpARM64MOVWUreg(v *Value) bool {
if x.Op != OpARM64MOVWUloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12411,7 +12369,6 @@ func rewriteValueARM64_OpARM64MOVWUreg(v *Value) bool {
if x.Op != OpARM64MOVHUloadidx2 {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12423,7 +12380,6 @@ func rewriteValueARM64_OpARM64MOVWUreg(v *Value) bool {
if x.Op != OpARM64MOVWUloadidx4 {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12619,7 +12575,6 @@ func rewriteValueARM64_OpARM64MOVWload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
@ -12697,9 +12652,8 @@ func rewriteValueARM64_OpARM64MOVWloadidx(v *Value) bool {
if v_2.Op != OpARM64MOVWstorezeroidx {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2) || isSamePtr(ptr, idx2) && isSamePtr(idx, ptr2)) {
break
}
@ -12736,9 +12690,8 @@ func rewriteValueARM64_OpARM64MOVWloadidx4(v *Value) bool {
if v_2.Op != OpARM64MOVWstorezeroidx4 {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
idx2 := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr, ptr2) && isSamePtr(idx, idx2)) {
break
}
@ -12757,7 +12710,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVBload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12769,7 +12721,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVBUload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12781,7 +12732,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVHload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12793,7 +12743,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVHUload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12805,7 +12754,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVWload {
break
}
_ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12817,7 +12765,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVBloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12829,7 +12776,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVBUloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12841,7 +12787,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVHloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12853,7 +12798,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVHUloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12865,7 +12809,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVWloadidx {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12877,7 +12820,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVHloadidx2 {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12889,7 +12831,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVHUloadidx2 {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
@ -12901,7 +12842,6 @@ func rewriteValueARM64_OpARM64MOVWreg(v *Value) bool {
if x.Op != OpARM64MOVWloadidx4 {
break
}
_ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true

View File

@ -2416,9 +2416,8 @@ func rewriteValueMIPS_OpMIPSMOVBUload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -2438,7 +2437,6 @@ func rewriteValueMIPS_OpMIPSMOVBUreg(v *Value) bool {
if x.Op != OpMIPSMOVBUload {
break
}
_ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
@ -2563,9 +2561,8 @@ func rewriteValueMIPS_OpMIPSMOVBload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -2585,7 +2582,6 @@ func rewriteValueMIPS_OpMIPSMOVBreg(v *Value) bool {
if x.Op != OpMIPSMOVBload {
break
}
_ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
@ -2916,9 +2912,8 @@ func rewriteValueMIPS_OpMIPSMOVDload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -3038,9 +3033,8 @@ func rewriteValueMIPS_OpMIPSMOVFload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -3160,9 +3154,8 @@ func rewriteValueMIPS_OpMIPSMOVHUload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -3182,7 +3175,6 @@ func rewriteValueMIPS_OpMIPSMOVHUreg(v *Value) bool {
if x.Op != OpMIPSMOVBUload {
break
}
_ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
@ -3194,7 +3186,6 @@ func rewriteValueMIPS_OpMIPSMOVHUreg(v *Value) bool {
if x.Op != OpMIPSMOVHUload {
break
}
_ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
@ -3330,9 +3321,8 @@ func rewriteValueMIPS_OpMIPSMOVHload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -3352,7 +3342,6 @@ func rewriteValueMIPS_OpMIPSMOVHreg(v *Value) bool {
if x.Op != OpMIPSMOVBload {
break
}
_ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
@ -3364,7 +3353,6 @@ func rewriteValueMIPS_OpMIPSMOVHreg(v *Value) bool {
if x.Op != OpMIPSMOVBUload {
break
}
_ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
@ -3376,7 +3364,6 @@ func rewriteValueMIPS_OpMIPSMOVHreg(v *Value) bool {
if x.Op != OpMIPSMOVHload {
break
}
_ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
@ -3695,9 +3682,8 @@ func rewriteValueMIPS_OpMIPSMOVWload(v *Value) bool {
}
off2 := v_1.AuxInt
sym2 := v_1.Aux
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)) {
break
}
@ -6445,7 +6431,6 @@ func rewriteValueMIPS_OpSelect0(v *Value) bool {
if v_0.Op != OpMIPSMULTU {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
@ -6464,7 +6449,6 @@ func rewriteValueMIPS_OpSelect0(v *Value) bool {
if v_0.Op != OpMIPSMULTU {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
@ -6638,7 +6622,6 @@ func rewriteValueMIPS_OpSelect1(v *Value) bool {
if v_0.Op != OpMIPSMULTU {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
@ -7269,7 +7252,6 @@ func rewriteBlockMIPS(b *Block) bool {
if cmp.Op != OpMIPSSGT {
break
}
_ = cmp.Args[1]
b.resetWithControl(BlockMIPSNE, cmp)
return true
}
@ -7284,7 +7266,6 @@ func rewriteBlockMIPS(b *Block) bool {
if cmp.Op != OpMIPSSGTU {
break
}
_ = cmp.Args[1]
b.resetWithControl(BlockMIPSNE, cmp)
return true
}
@ -7545,7 +7526,6 @@ func rewriteBlockMIPS(b *Block) bool {
if cmp.Op != OpMIPSSGT {
break
}
_ = cmp.Args[1]
b.resetWithControl(BlockMIPSEQ, cmp)
return true
}
@ -7560,7 +7540,6 @@ func rewriteBlockMIPS(b *Block) bool {
if cmp.Op != OpMIPSSGTU {
break
}
_ = cmp.Args[1]
b.resetWithControl(BlockMIPSEQ, cmp)
return true
}

View File

@ -2606,7 +2606,6 @@ func rewriteValueMIPS64_OpMIPS64MOVBUreg(v *Value) bool {
if x.Op != OpMIPS64MOVBUload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -2692,7 +2691,6 @@ func rewriteValueMIPS64_OpMIPS64MOVBreg(v *Value) bool {
if x.Op != OpMIPS64MOVBload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3193,7 +3191,6 @@ func rewriteValueMIPS64_OpMIPS64MOVHUreg(v *Value) bool {
if x.Op != OpMIPS64MOVBUload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3205,7 +3202,6 @@ func rewriteValueMIPS64_OpMIPS64MOVHUreg(v *Value) bool {
if x.Op != OpMIPS64MOVHUload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3302,7 +3298,6 @@ func rewriteValueMIPS64_OpMIPS64MOVHreg(v *Value) bool {
if x.Op != OpMIPS64MOVBload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3314,7 +3309,6 @@ func rewriteValueMIPS64_OpMIPS64MOVHreg(v *Value) bool {
if x.Op != OpMIPS64MOVBUload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3326,7 +3320,6 @@ func rewriteValueMIPS64_OpMIPS64MOVHreg(v *Value) bool {
if x.Op != OpMIPS64MOVHload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3807,7 +3800,6 @@ func rewriteValueMIPS64_OpMIPS64MOVWUreg(v *Value) bool {
if x.Op != OpMIPS64MOVBUload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3819,7 +3811,6 @@ func rewriteValueMIPS64_OpMIPS64MOVWUreg(v *Value) bool {
if x.Op != OpMIPS64MOVHUload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3831,7 +3822,6 @@ func rewriteValueMIPS64_OpMIPS64MOVWUreg(v *Value) bool {
if x.Op != OpMIPS64MOVWUload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3939,7 +3929,6 @@ func rewriteValueMIPS64_OpMIPS64MOVWreg(v *Value) bool {
if x.Op != OpMIPS64MOVBload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3951,7 +3940,6 @@ func rewriteValueMIPS64_OpMIPS64MOVWreg(v *Value) bool {
if x.Op != OpMIPS64MOVBUload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3963,7 +3951,6 @@ func rewriteValueMIPS64_OpMIPS64MOVWreg(v *Value) bool {
if x.Op != OpMIPS64MOVHload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3975,7 +3962,6 @@ func rewriteValueMIPS64_OpMIPS64MOVWreg(v *Value) bool {
if x.Op != OpMIPS64MOVHUload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -3987,7 +3973,6 @@ func rewriteValueMIPS64_OpMIPS64MOVWreg(v *Value) bool {
if x.Op != OpMIPS64MOVWload {
break
}
_ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
@ -7765,7 +7750,6 @@ func rewriteBlockMIPS64(b *Block) bool {
if cmp.Op != OpMIPS64SGT {
break
}
_ = cmp.Args[1]
b.resetWithControl(BlockMIPS64NE, cmp)
return true
}
@ -7780,7 +7764,6 @@ func rewriteBlockMIPS64(b *Block) bool {
if cmp.Op != OpMIPS64SGTU {
break
}
_ = cmp.Args[1]
b.resetWithControl(BlockMIPS64NE, cmp)
return true
}
@ -8023,7 +8006,6 @@ func rewriteBlockMIPS64(b *Block) bool {
if cmp.Op != OpMIPS64SGT {
break
}
_ = cmp.Args[1]
b.resetWithControl(BlockMIPS64EQ, cmp)
return true
}
@ -8038,7 +8020,6 @@ func rewriteBlockMIPS64(b *Block) bool {
if cmp.Op != OpMIPS64SGTU {
break
}
_ = cmp.Args[1]
b.resetWithControl(BlockMIPS64EQ, cmp)
return true
}

View File

@ -4125,7 +4125,6 @@ func rewriteValuePPC64_OpPPC64AND(v *Value) bool {
if x.Op != OpPPC64MOVBZload {
continue
}
_ = x.Args[1]
v.reset(OpPPC64ANDconst)
v.AuxInt = c & 0xFF
v.AddArg(x)
@ -5003,11 +5002,10 @@ func rewriteValuePPC64_OpPPC64FMOVDload(v *Value) bool {
if v_1.Op != OpPPC64MOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
x := v_1.Args[1]
if ptr != v_1.Args[0] {
break
}
x := v_1.Args[1]
v.reset(OpPPC64MTVSRD)
v.AddArg(x)
return true
@ -6359,7 +6357,6 @@ func rewriteValuePPC64_OpPPC64MOVBZreg(v *Value) bool {
if x.Op != OpPPC64MOVBZload {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -6370,7 +6367,6 @@ func rewriteValuePPC64_OpPPC64MOVBZreg(v *Value) bool {
if x.Op != OpPPC64MOVBZloadidx {
break
}
_ = x.Args[2]
v.copyOf(x)
return true
}
@ -7651,11 +7647,10 @@ func rewriteValuePPC64_OpPPC64MOVDload(v *Value) bool {
if v_1.Op != OpPPC64FMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
x := v_1.Args[1]
if ptr != v_1.Args[0] {
break
}
x := v_1.Args[1]
v.reset(OpPPC64MFVSRD)
v.AddArg(x)
return true
@ -8284,7 +8279,6 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
if y.Op != OpPPC64MOVHBRload {
break
}
_ = y.Args[1]
v.copyOf(y)
return true
}
@ -8307,7 +8301,6 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
if x.Op != OpPPC64MOVBZload {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -8318,7 +8311,6 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
if x.Op != OpPPC64MOVBZloadidx {
break
}
_ = x.Args[2]
v.copyOf(x)
return true
}
@ -8329,7 +8321,6 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
if x.Op != OpPPC64MOVHZload {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -8340,7 +8331,6 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
if x.Op != OpPPC64MOVHZloadidx {
break
}
_ = x.Args[2]
v.copyOf(x)
return true
}
@ -8666,7 +8656,6 @@ func rewriteValuePPC64_OpPPC64MOVHreg(v *Value) bool {
if x.Op != OpPPC64MOVHload {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -8677,7 +8666,6 @@ func rewriteValuePPC64_OpPPC64MOVHreg(v *Value) bool {
if x.Op != OpPPC64MOVHloadidx {
break
}
_ = x.Args[2]
v.copyOf(x)
return true
}
@ -9268,7 +9256,6 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
if y.Op != OpPPC64AND {
break
}
_ = y.Args[1]
y_0 := y.Args[0]
y_1 := y.Args[1]
for _i0 := 0; _i0 <= 1; _i0, y_0, y_1 = _i0+1, y_1, y_0 {
@ -9412,7 +9399,6 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
if y.Op != OpPPC64MOVHBRload {
break
}
_ = y.Args[1]
v.copyOf(y)
return true
}
@ -9423,7 +9409,6 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
if y.Op != OpPPC64MOVWBRload {
break
}
_ = y.Args[1]
v.copyOf(y)
return true
}
@ -9446,7 +9431,6 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
if x.Op != OpPPC64MOVBZload {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -9457,7 +9441,6 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
if x.Op != OpPPC64MOVBZloadidx {
break
}
_ = x.Args[2]
v.copyOf(x)
return true
}
@ -9468,7 +9451,6 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
if x.Op != OpPPC64MOVHZload {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -9479,7 +9461,6 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
if x.Op != OpPPC64MOVHZloadidx {
break
}
_ = x.Args[2]
v.copyOf(x)
return true
}
@ -9490,7 +9471,6 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
if x.Op != OpPPC64MOVWZload {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -9501,7 +9481,6 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
if x.Op != OpPPC64MOVWZloadidx {
break
}
_ = x.Args[2]
v.copyOf(x)
return true
}
@ -9673,7 +9652,6 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
if y.Op != OpPPC64AND {
break
}
_ = y.Args[1]
y_0 := y.Args[0]
y_1 := y.Args[1]
for _i0 := 0; _i0 <= 1; _i0, y_0, y_1 = _i0+1, y_1, y_0 {
@ -9846,7 +9824,6 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
if x.Op != OpPPC64MOVHload {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -9857,7 +9834,6 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
if x.Op != OpPPC64MOVHloadidx {
break
}
_ = x.Args[2]
v.copyOf(x)
return true
}
@ -9868,7 +9844,6 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
if x.Op != OpPPC64MOVWload {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -9879,7 +9854,6 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
if x.Op != OpPPC64MOVWloadidx {
break
}
_ = x.Args[2]
v.copyOf(x)
return true
}

View File

@ -5652,9 +5652,8 @@ func rewriteValueS390X_OpS390XADDload(v *Value) bool {
if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
y := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -6154,9 +6153,8 @@ func rewriteValueS390X_OpS390XANDload(v *Value) bool {
if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
y := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -7245,9 +7243,8 @@ func rewriteValueS390X_OpS390XFMOVDload(v *Value) bool {
if v_1.Op != OpS390XMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -7265,9 +7262,8 @@ func rewriteValueS390X_OpS390XFMOVDload(v *Value) bool {
if v_1.Op != OpS390XFMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -7588,9 +7584,8 @@ func rewriteValueS390X_OpS390XFMOVSload(v *Value) bool {
if v_1.Op != OpS390XFMOVSstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -8304,9 +8299,8 @@ func rewriteValueS390X_OpS390XMOVBZload(v *Value) bool {
if v_1.Op != OpS390XMOVBstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -8570,11 +8564,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBZload {
break
}
_ = x.Args[1]
if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
if x.Op != OpS390XMOVBZload || !(!x.Type.IsSigned() || x.Type.Size() > 1) {
break
}
v.copyOf(x)
@ -8585,11 +8575,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBZloadidx {
break
}
_ = x.Args[2]
if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
if x.Op != OpS390XMOVBZloadidx || !(!x.Type.IsSigned() || x.Type.Size() > 1) {
break
}
v.copyOf(x)
@ -8678,7 +8664,7 @@ func rewriteValueS390X_OpS390XMOVBZreg(v *Value) bool {
if x.Op != OpS390XLOCGR {
break
}
_ = x.Args[2]
_ = x.Args[1]
x_0 := x.Args[0]
if x_0.Op != OpS390XMOVDconst {
break
@ -8725,9 +8711,8 @@ func rewriteValueS390X_OpS390XMOVBload(v *Value) bool {
if v_1.Op != OpS390XMOVBstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -8991,11 +8976,7 @@ func rewriteValueS390X_OpS390XMOVBreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBload {
break
}
_ = x.Args[1]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVBload || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -9006,11 +8987,7 @@ func rewriteValueS390X_OpS390XMOVBreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBloadidx {
break
}
_ = x.Args[2]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVBloadidx || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -10018,9 +9995,8 @@ func rewriteValueS390X_OpS390XMOVDload(v *Value) bool {
if v_1.Op != OpS390XMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -10037,9 +10013,8 @@ func rewriteValueS390X_OpS390XMOVDload(v *Value) bool {
if v_1.Op != OpS390XFMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -10790,9 +10765,8 @@ func rewriteValueS390X_OpS390XMOVHZload(v *Value) bool {
if v_1.Op != OpS390XMOVHstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -11041,11 +11015,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBZload {
break
}
_ = x.Args[1]
if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
if x.Op != OpS390XMOVBZload || !(!x.Type.IsSigned() || x.Type.Size() > 1) {
break
}
v.copyOf(x)
@ -11056,11 +11026,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBZloadidx {
break
}
_ = x.Args[2]
if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
if x.Op != OpS390XMOVBZloadidx || !(!x.Type.IsSigned() || x.Type.Size() > 1) {
break
}
v.copyOf(x)
@ -11071,11 +11037,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVHZload {
break
}
_ = x.Args[1]
if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
if x.Op != OpS390XMOVHZload || !(!x.Type.IsSigned() || x.Type.Size() > 2) {
break
}
v.copyOf(x)
@ -11086,11 +11048,7 @@ func rewriteValueS390X_OpS390XMOVHZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVHZloadidx {
break
}
_ = x.Args[2]
if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
if x.Op != OpS390XMOVHZloadidx || !(!x.Type.IsSigned() || x.Type.Size() > 2) {
break
}
v.copyOf(x)
@ -11201,9 +11159,8 @@ func rewriteValueS390X_OpS390XMOVHload(v *Value) bool {
if v_1.Op != OpS390XMOVHstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -11452,11 +11409,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBload {
break
}
_ = x.Args[1]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVBload || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -11467,11 +11420,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBloadidx {
break
}
_ = x.Args[2]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVBloadidx || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -11482,11 +11431,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVHload {
break
}
_ = x.Args[1]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVHload || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -11497,11 +11442,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVHloadidx {
break
}
_ = x.Args[2]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVHloadidx || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -11512,11 +11453,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBZload {
break
}
_ = x.Args[1]
if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
if x.Op != OpS390XMOVBZload || !(!x.Type.IsSigned() || x.Type.Size() > 1) {
break
}
v.copyOf(x)
@ -11527,11 +11464,7 @@ func rewriteValueS390X_OpS390XMOVHreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBZloadidx {
break
}
_ = x.Args[2]
if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
if x.Op != OpS390XMOVBZloadidx || !(!x.Type.IsSigned() || x.Type.Size() > 1) {
break
}
v.copyOf(x)
@ -12340,9 +12273,8 @@ func rewriteValueS390X_OpS390XMOVWZload(v *Value) bool {
if v_1.Op != OpS390XMOVWstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -12574,11 +12506,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBZload {
break
}
_ = x.Args[1]
if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
if x.Op != OpS390XMOVBZload || !(!x.Type.IsSigned() || x.Type.Size() > 1) {
break
}
v.copyOf(x)
@ -12589,11 +12517,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBZloadidx {
break
}
_ = x.Args[2]
if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
if x.Op != OpS390XMOVBZloadidx || !(!x.Type.IsSigned() || x.Type.Size() > 1) {
break
}
v.copyOf(x)
@ -12604,11 +12528,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVHZload {
break
}
_ = x.Args[1]
if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
if x.Op != OpS390XMOVHZload || !(!x.Type.IsSigned() || x.Type.Size() > 2) {
break
}
v.copyOf(x)
@ -12619,11 +12539,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVHZloadidx {
break
}
_ = x.Args[2]
if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
if x.Op != OpS390XMOVHZloadidx || !(!x.Type.IsSigned() || x.Type.Size() > 2) {
break
}
v.copyOf(x)
@ -12634,11 +12550,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVWZload {
break
}
_ = x.Args[1]
if !(!x.Type.IsSigned() || x.Type.Size() > 4) {
if x.Op != OpS390XMOVWZload || !(!x.Type.IsSigned() || x.Type.Size() > 4) {
break
}
v.copyOf(x)
@ -12649,11 +12561,7 @@ func rewriteValueS390X_OpS390XMOVWZreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVWZloadidx {
break
}
_ = x.Args[2]
if !(!x.Type.IsSigned() || x.Type.Size() > 4) {
if x.Op != OpS390XMOVWZloadidx || !(!x.Type.IsSigned() || x.Type.Size() > 4) {
break
}
v.copyOf(x)
@ -12749,9 +12657,8 @@ func rewriteValueS390X_OpS390XMOVWload(v *Value) bool {
if v_1.Op != OpS390XMOVWstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
ptr2 := v_1.Args[0]
x := v_1.Args[1]
ptr2 := v_1.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -12983,11 +12890,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBload {
break
}
_ = x.Args[1]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVBload || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -12998,11 +12901,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBloadidx {
break
}
_ = x.Args[2]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVBloadidx || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -13013,11 +12912,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVHload {
break
}
_ = x.Args[1]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVHload || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -13028,11 +12923,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVHloadidx {
break
}
_ = x.Args[2]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVHloadidx || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -13043,11 +12934,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVWload {
break
}
_ = x.Args[1]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVWload || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -13058,11 +12945,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVWloadidx {
break
}
_ = x.Args[2]
if !(x.Type.IsSigned() || x.Type.Size() == 8) {
if x.Op != OpS390XMOVWloadidx || !(x.Type.IsSigned() || x.Type.Size() == 8) {
break
}
v.copyOf(x)
@ -13073,11 +12956,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBZload {
break
}
_ = x.Args[1]
if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
if x.Op != OpS390XMOVBZload || !(!x.Type.IsSigned() || x.Type.Size() > 1) {
break
}
v.copyOf(x)
@ -13088,11 +12967,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVBZloadidx {
break
}
_ = x.Args[2]
if !(!x.Type.IsSigned() || x.Type.Size() > 1) {
if x.Op != OpS390XMOVBZloadidx || !(!x.Type.IsSigned() || x.Type.Size() > 1) {
break
}
v.copyOf(x)
@ -13103,11 +12978,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVHZload {
break
}
_ = x.Args[1]
if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
if x.Op != OpS390XMOVHZload || !(!x.Type.IsSigned() || x.Type.Size() > 2) {
break
}
v.copyOf(x)
@ -13118,11 +12989,7 @@ func rewriteValueS390X_OpS390XMOVWreg(v *Value) bool {
// result: x
for {
x := v_0
if x.Op != OpS390XMOVHZloadidx {
break
}
_ = x.Args[2]
if !(!x.Type.IsSigned() || x.Type.Size() > 2) {
if x.Op != OpS390XMOVHZloadidx || !(!x.Type.IsSigned() || x.Type.Size() > 2) {
break
}
v.copyOf(x)
@ -13873,9 +13740,8 @@ func rewriteValueS390X_OpS390XMULLDload(v *Value) bool {
if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
y := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -16511,9 +16377,8 @@ func rewriteValueS390X_OpS390XORload(v *Value) bool {
if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
y := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -17949,9 +17814,8 @@ func rewriteValueS390X_OpS390XSUBload(v *Value) bool {
if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
y := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}
@ -18397,9 +18261,8 @@ func rewriteValueS390X_OpS390XXORload(v *Value) bool {
if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
ptr2 := v_2.Args[0]
y := v_2.Args[1]
ptr2 := v_2.Args[0]
if !(isSamePtr(ptr1, ptr2)) {
break
}

View File

@ -3096,7 +3096,6 @@ func rewriteValueWasm_OpSignExt16to32(v *Value) bool {
if x.Op != OpWasmI64Load16S {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -3138,7 +3137,6 @@ func rewriteValueWasm_OpSignExt16to64(v *Value) bool {
if x.Op != OpWasmI64Load16S {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -3180,7 +3178,6 @@ func rewriteValueWasm_OpSignExt32to64(v *Value) bool {
if x.Op != OpWasmI64Load32S {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -3222,7 +3219,6 @@ func rewriteValueWasm_OpSignExt8to16(v *Value) bool {
if x.Op != OpWasmI64Load8S {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -3264,7 +3260,6 @@ func rewriteValueWasm_OpSignExt8to32(v *Value) bool {
if x.Op != OpWasmI64Load8S {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -3306,7 +3301,6 @@ func rewriteValueWasm_OpSignExt8to64(v *Value) bool {
if x.Op != OpWasmI64Load8S {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -4591,7 +4585,6 @@ func rewriteValueWasm_OpZeroExt16to32(v *Value) bool {
if x.Op != OpWasmI64Load16U {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -4617,7 +4610,6 @@ func rewriteValueWasm_OpZeroExt16to64(v *Value) bool {
if x.Op != OpWasmI64Load16U {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -4643,7 +4635,6 @@ func rewriteValueWasm_OpZeroExt32to64(v *Value) bool {
if x.Op != OpWasmI64Load32U {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -4669,7 +4660,6 @@ func rewriteValueWasm_OpZeroExt8to16(v *Value) bool {
if x.Op != OpWasmI64Load8U {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -4695,7 +4685,6 @@ func rewriteValueWasm_OpZeroExt8to32(v *Value) bool {
if x.Op != OpWasmI64Load8U {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}
@ -4721,7 +4710,6 @@ func rewriteValueWasm_OpZeroExt8to64(v *Value) bool {
if x.Op != OpWasmI64Load8U {
break
}
_ = x.Args[1]
v.copyOf(x)
return true
}

View File

@ -54,7 +54,6 @@ func rewriteValuedec_OpComplexReal(v *Value) bool {
if v_0.Op != OpComplexMake {
break
}
_ = v_0.Args[1]
real := v_0.Args[0]
v.copyOf(real)
return true
@ -83,7 +82,6 @@ func rewriteValuedec_OpITab(v *Value) bool {
if v_0.Op != OpIMake {
break
}
_ = v_0.Args[1]
itab := v_0.Args[0]
v.copyOf(itab)
return true
@ -230,7 +228,6 @@ func rewriteValuedec_OpSliceLen(v *Value) bool {
if v_0.Op != OpSliceMake {
break
}
_ = v_0.Args[2]
len := v_0.Args[1]
v.copyOf(len)
return true
@ -245,7 +242,6 @@ func rewriteValuedec_OpSlicePtr(v *Value) bool {
if v_0.Op != OpSliceMake {
break
}
_ = v_0.Args[2]
ptr := v_0.Args[0]
v.copyOf(ptr)
return true
@ -405,7 +401,6 @@ func rewriteValuedec_OpStringPtr(v *Value) bool {
if v_0.Op != OpStringMake {
break
}
_ = v_0.Args[1]
ptr := v_0.Args[0]
v.copyOf(ptr)
return true

View File

@ -439,7 +439,6 @@ func rewriteValuedec64_OpInt64Hi(v *Value) bool {
if v_0.Op != OpInt64Make {
break
}
_ = v_0.Args[1]
hi := v_0.Args[0]
v.copyOf(hi)
return true
@ -704,7 +703,6 @@ func rewriteValuedec64_OpLsh16x64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -770,7 +768,6 @@ func rewriteValuedec64_OpLsh32x64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -916,7 +913,6 @@ func rewriteValuedec64_OpLsh64x64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -1022,7 +1018,6 @@ func rewriteValuedec64_OpLsh8x64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -1204,7 +1199,6 @@ func rewriteValuedec64_OpRsh16Ux64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -1271,7 +1265,6 @@ func rewriteValuedec64_OpRsh16x64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -1339,7 +1332,6 @@ func rewriteValuedec64_OpRsh32Ux64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -1406,7 +1398,6 @@ func rewriteValuedec64_OpRsh32x64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -1552,7 +1543,6 @@ func rewriteValuedec64_OpRsh64Ux64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -1757,7 +1747,6 @@ func rewriteValuedec64_OpRsh64x64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -1881,7 +1870,6 @@ func rewriteValuedec64_OpRsh8Ux64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
@ -1948,7 +1936,6 @@ func rewriteValuedec64_OpRsh8x64(v *Value) bool {
if v_1.Op != OpInt64Make {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break

View File

@ -6886,12 +6886,10 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool {
continue
}
a := v_0.Aux
_ = v_0.Args[1]
if v_1.Op != OpLocalAddr {
continue
}
b := v_1.Aux
_ = v_1.Args[1]
v.reset(OpConstBool)
v.AuxInt = b2i(a == b)
return true
@ -6906,7 +6904,6 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool {
continue
}
a := v_0.Aux
_ = v_0.Args[1]
if v_1.Op != OpOffPtr {
continue
}
@ -6916,7 +6913,6 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool {
continue
}
b := v_1_0.Aux
_ = v_1_0.Args[1]
v.reset(OpConstBool)
v.AuxInt = b2i(a == b && o == 0)
return true
@ -6936,7 +6932,6 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool {
continue
}
a := v_0_0.Aux
_ = v_0_0.Args[1]
if v_1.Op != OpOffPtr {
continue
}
@ -6946,7 +6941,6 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool {
continue
}
b := v_1_0.Aux
_ = v_1_0.Args[1]
v.reset(OpConstBool)
v.AuxInt = b2i(a == b && o1 == o2)
return true
@ -7037,11 +7031,7 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool {
// result: (ConstBool [0])
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpLocalAddr {
continue
}
_ = v_0.Args[1]
if v_1.Op != OpAddr {
if v_0.Op != OpLocalAddr || v_1.Op != OpAddr {
continue
}
v.reset(OpConstBool)
@ -7058,11 +7048,7 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool {
continue
}
v_0_0 := v_0.Args[0]
if v_0_0.Op != OpLocalAddr {
continue
}
_ = v_0_0.Args[1]
if v_1.Op != OpAddr {
if v_0_0.Op != OpLocalAddr || v_1.Op != OpAddr {
continue
}
v.reset(OpConstBool)
@ -7075,11 +7061,7 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool {
// result: (ConstBool [0])
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpLocalAddr {
continue
}
_ = v_0.Args[1]
if v_1.Op != OpOffPtr {
if v_0.Op != OpLocalAddr || v_1.Op != OpOffPtr {
continue
}
v_1_0 := v_1.Args[0]
@ -7100,11 +7082,7 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool {
continue
}
v_0_0 := v_0.Args[0]
if v_0_0.Op != OpLocalAddr {
continue
}
_ = v_0_0.Args[1]
if v_1.Op != OpOffPtr {
if v_0_0.Op != OpLocalAddr || v_1.Op != OpOffPtr {
continue
}
v_1_0 := v_1.Args[0]
@ -7328,7 +7306,6 @@ func rewriteValuegeneric_OpInterCall(v *Value) bool {
if v_0.Op != OpLoad {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
if v_0_0.Op != OpOffPtr {
break
@ -7342,7 +7319,6 @@ func rewriteValuegeneric_OpInterCall(v *Value) bool {
if v_0_0_0_0.Op != OpIMake {
break
}
_ = v_0_0_0_0.Args[1]
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
if v_0_0_0_0_0.Op != OpAddr {
break
@ -7445,7 +7421,6 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool {
if v_0.Op != OpAnd8 {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
@ -7477,7 +7452,6 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool {
if v_0_0.Op != OpAnd8 {
break
}
_ = v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
v_0_0_1 := v_0_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0_0, v_0_0_1 = _i0+1, v_0_0_1, v_0_0_0 {
@ -7509,7 +7483,6 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool {
if v_0_0.Op != OpAnd8 {
break
}
_ = v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
v_0_0_1 := v_0_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0_0, v_0_0_1 = _i0+1, v_0_0_1, v_0_0_0 {
@ -7541,7 +7514,6 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool {
if v_0_0.Op != OpAnd8 {
break
}
_ = v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
v_0_0_1 := v_0_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0_0, v_0_0_1 = _i0+1, v_0_0_1, v_0_0_0 {
@ -7569,7 +7541,6 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool {
if v_0.Op != OpAnd16 {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
@ -7601,7 +7572,6 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool {
if v_0_0.Op != OpAnd16 {
break
}
_ = v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
v_0_0_1 := v_0_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0_0, v_0_0_1 = _i0+1, v_0_0_1, v_0_0_0 {
@ -7633,7 +7603,6 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool {
if v_0_0.Op != OpAnd16 {
break
}
_ = v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
v_0_0_1 := v_0_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0_0, v_0_0_1 = _i0+1, v_0_0_1, v_0_0_0 {
@ -7661,7 +7630,6 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool {
if v_0.Op != OpAnd32 {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
@ -7693,7 +7661,6 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool {
if v_0_0.Op != OpAnd32 {
break
}
_ = v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
v_0_0_1 := v_0_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0_0, v_0_0_1 = _i0+1, v_0_0_1, v_0_0_0 {
@ -7721,7 +7688,6 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool {
if v_0.Op != OpAnd64 {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
@ -8116,7 +8082,6 @@ func rewriteValuegeneric_OpIsNonNil(v *Value) bool {
if v_0.Op != OpLocalAddr {
break
}
_ = v_0.Args[1]
v.reset(OpConstBool)
v.AuxInt = 1
return true
@ -8144,7 +8109,6 @@ func rewriteValuegeneric_OpIsSliceInBounds(v *Value) bool {
if v_0.Op != OpAnd32 {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
@ -8172,7 +8136,6 @@ func rewriteValuegeneric_OpIsSliceInBounds(v *Value) bool {
if v_0.Op != OpAnd64 {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
v_0_1 := v_0.Args[1]
for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
@ -8850,9 +8813,8 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
t2 := v_1.Aux
_ = v_1.Args[2]
p2 := v_1.Args[0]
x := v_1.Args[1]
p2 := v_1.Args[0]
if !(isSamePtr(p1, p2) && t1.Compare(x.Type) == types.CMPeq && t1.Size() == sizeof(t2)) {
break
}
@ -8876,9 +8838,8 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
t3 := v_1_2.Aux
_ = v_1_2.Args[2]
p3 := v_1_2.Args[0]
x := v_1_2.Args[1]
p3 := v_1_2.Args[0]
if !(isSamePtr(p1, p3) && t1.Compare(x.Type) == types.CMPeq && t1.Size() == sizeof(t2) && disjoint(p3, sizeof(t3), p2, sizeof(t2))) {
break
}
@ -8909,9 +8870,8 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
t4 := v_1_2_2.Aux
_ = v_1_2_2.Args[2]
p4 := v_1_2_2.Args[0]
x := v_1_2_2.Args[1]
p4 := v_1_2_2.Args[0]
if !(isSamePtr(p1, p4) && t1.Compare(x.Type) == types.CMPeq && t1.Size() == sizeof(t2) && disjoint(p4, sizeof(t4), p2, sizeof(t2)) && disjoint(p4, sizeof(t4), p3, sizeof(t3))) {
break
}
@ -8949,9 +8909,8 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
t5 := v_1_2_2_2.Aux
_ = v_1_2_2_2.Args[2]
p5 := v_1_2_2_2.Args[0]
x := v_1_2_2_2.Args[1]
p5 := v_1_2_2_2.Args[0]
if !(isSamePtr(p1, p5) && t1.Compare(x.Type) == types.CMPeq && t1.Size() == sizeof(t2) && disjoint(p5, sizeof(t5), p2, sizeof(t2)) && disjoint(p5, sizeof(t5), p3, sizeof(t3)) && disjoint(p5, sizeof(t5), p4, sizeof(t4))) {
break
}
@ -8968,7 +8927,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
t2 := v_1.Aux
_ = v_1.Args[2]
_ = v_1.Args[1]
p2 := v_1.Args[0]
v_1_1 := v_1.Args[1]
if v_1_1.Op != OpConst64 {
@ -8992,7 +8951,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
t2 := v_1.Aux
_ = v_1.Args[2]
_ = v_1.Args[1]
p2 := v_1.Args[0]
v_1_1 := v_1.Args[1]
if v_1_1.Op != OpConst32 {
@ -9016,7 +8975,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
t2 := v_1.Aux
_ = v_1.Args[2]
_ = v_1.Args[1]
p2 := v_1.Args[0]
v_1_1 := v_1.Args[1]
if v_1_1.Op != OpConst64F {
@ -9040,7 +8999,7 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
t2 := v_1.Aux
_ = v_1.Args[2]
_ = v_1.Args[1]
p2 := v_1.Args[0]
v_1_1 := v_1.Args[1]
if v_1_1.Op != OpConst32F {
@ -9076,7 +9035,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := mem.AuxInt
_ = mem.Args[1]
p3 := mem.Args[0]
if !(o1 >= 0 && o1+t1.Size() <= n && isSamePtr(p1, p3) && fe.CanSSA(t1) && disjoint(op, t1.Size(), p2, sizeof(t2))) {
break
@ -9119,7 +9077,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := mem.AuxInt
_ = mem.Args[1]
p4 := mem.Args[0]
if !(o1 >= 0 && o1+t1.Size() <= n && isSamePtr(p1, p4) && fe.CanSSA(t1) && disjoint(op, t1.Size(), p2, sizeof(t2)) && disjoint(op, t1.Size(), p3, sizeof(t3))) {
break
@ -9169,7 +9126,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := mem.AuxInt
_ = mem.Args[1]
p5 := mem.Args[0]
if !(o1 >= 0 && o1+t1.Size() <= n && isSamePtr(p1, p5) && fe.CanSSA(t1) && disjoint(op, t1.Size(), p2, sizeof(t2)) && disjoint(op, t1.Size(), p3, sizeof(t3)) && disjoint(op, t1.Size(), p4, sizeof(t4))) {
break
@ -9226,7 +9182,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := mem.AuxInt
_ = mem.Args[1]
p6 := mem.Args[0]
if !(o1 >= 0 && o1+t1.Size() <= n && isSamePtr(p1, p6) && fe.CanSSA(t1) && disjoint(op, t1.Size(), p2, sizeof(t2)) && disjoint(op, t1.Size(), p3, sizeof(t3)) && disjoint(op, t1.Size(), p4, sizeof(t4)) && disjoint(op, t1.Size(), p5, sizeof(t5))) {
break
@ -9254,7 +9209,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := v_1.AuxInt
_ = v_1.Args[1]
p2 := v_1.Args[0]
if !(t1.IsBoolean() && isSamePtr(p1, p2) && n >= o+1) {
break
@ -9277,7 +9231,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := v_1.AuxInt
_ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is8BitInt(t1) && isSamePtr(p1, p2) && n >= o+1) {
break
@ -9300,7 +9253,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := v_1.AuxInt
_ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is16BitInt(t1) && isSamePtr(p1, p2) && n >= o+2) {
break
@ -9323,7 +9275,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := v_1.AuxInt
_ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is32BitInt(t1) && isSamePtr(p1, p2) && n >= o+4) {
break
@ -9346,7 +9297,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := v_1.AuxInt
_ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is64BitInt(t1) && isSamePtr(p1, p2) && n >= o+8) {
break
@ -9369,7 +9319,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := v_1.AuxInt
_ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is32BitFloat(t1) && isSamePtr(p1, p2) && n >= o+4) {
break
@ -9392,7 +9341,6 @@ func rewriteValuegeneric_OpLoad(v *Value) bool {
break
}
n := v_1.AuxInt
_ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is64BitFloat(t1) && isSamePtr(p1, p2) && n >= o+8) {
break
@ -11082,7 +11030,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
if mem.Op != OpZero || mem.AuxInt != n || mem.Aux != t {
break
}
_ = mem.Args[1]
dst2 := mem.Args[0]
if !(isSamePtr(src, dst2)) {
break
@ -11109,7 +11056,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
if mem_0.Op != OpZero || mem_0.AuxInt != n || mem_0.Aux != t {
break
}
_ = mem_0.Args[1]
dst0 := mem_0.Args[0]
if !(isSamePtr(src, dst0)) {
break
@ -11284,7 +11230,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t3 := mem_2.Aux
_ = mem_2.Args[2]
d2 := mem_2.Args[1]
op3 := mem_2.Args[0]
if op3.Op != OpOffPtr {
break
@ -11294,7 +11240,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
p3 := op3.Args[0]
d2 := mem_2.Args[1]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && o2 == sizeof(t3) && n == sizeof(t2)+sizeof(t3)) {
break
}
@ -11353,7 +11298,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t4 := mem_2_2.Aux
_ = mem_2_2.Args[2]
d3 := mem_2_2.Args[1]
op4 := mem_2_2.Args[0]
if op4.Op != OpOffPtr {
break
@ -11363,7 +11308,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
p4 := op4.Args[0]
d3 := mem_2_2.Args[1]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && isSamePtr(p3, p4) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && alignof(t4) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && registerizable(b, t4) && o3 == sizeof(t4) && o2-o3 == sizeof(t3) && n == sizeof(t2)+sizeof(t3)+sizeof(t4)) {
break
}
@ -11442,7 +11386,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t5 := mem_2_2_2.Aux
_ = mem_2_2_2.Args[2]
d4 := mem_2_2_2.Args[1]
op5 := mem_2_2_2.Args[0]
if op5.Op != OpOffPtr {
break
@ -11452,7 +11396,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
p5 := op5.Args[0]
d4 := mem_2_2_2.Args[1]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && isSamePtr(p3, p4) && isSamePtr(p4, p5) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && alignof(t4) <= alignof(t1) && alignof(t5) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && registerizable(b, t4) && registerizable(b, t5) && o4 == sizeof(t5) && o3-o4 == sizeof(t4) && o2-o3 == sizeof(t3) && n == sizeof(t2)+sizeof(t3)+sizeof(t4)+sizeof(t5)) {
break
}
@ -11513,7 +11456,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t3 := mem_0_2.Aux
_ = mem_0_2.Args[2]
d2 := mem_0_2.Args[1]
op3 := mem_0_2.Args[0]
if op3.Op != OpOffPtr {
break
@ -11523,7 +11466,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
p3 := op3.Args[0]
d2 := mem_0_2.Args[1]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && o2 == sizeof(t3) && n == sizeof(t2)+sizeof(t3)) {
break
}
@ -11586,7 +11528,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t4 := mem_0_2_2.Aux
_ = mem_0_2_2.Args[2]
d3 := mem_0_2_2.Args[1]
op4 := mem_0_2_2.Args[0]
if op4.Op != OpOffPtr {
break
@ -11596,7 +11538,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
p4 := op4.Args[0]
d3 := mem_0_2_2.Args[1]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && isSamePtr(p3, p4) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && alignof(t4) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && registerizable(b, t4) && o3 == sizeof(t4) && o2-o3 == sizeof(t3) && n == sizeof(t2)+sizeof(t3)+sizeof(t4)) {
break
}
@ -11679,7 +11620,7 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t5 := mem_0_2_2_2.Aux
_ = mem_0_2_2_2.Args[2]
d4 := mem_0_2_2_2.Args[1]
op5 := mem_0_2_2_2.Args[0]
if op5.Op != OpOffPtr {
break
@ -11689,7 +11630,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
p5 := op5.Args[0]
d4 := mem_0_2_2_2.Args[1]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && isSamePtr(p3, p4) && isSamePtr(p4, p5) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && alignof(t4) <= alignof(t1) && alignof(t5) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && registerizable(b, t4) && registerizable(b, t5) && o4 == sizeof(t5) && o3-o4 == sizeof(t4) && o2-o3 == sizeof(t3) && n == sizeof(t2)+sizeof(t3)+sizeof(t4)+sizeof(t5)) {
break
}
@ -11746,7 +11686,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t3 := mem_2.Aux
_ = mem_2.Args[1]
p3 := mem_2.Args[0]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && registerizable(b, t2) && n >= o2+sizeof(t2)) {
break
@ -11804,7 +11743,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t4 := mem_2_2.Aux
_ = mem_2_2.Args[1]
p4 := mem_2_2.Args[0]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && isSamePtr(p3, p4) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && alignof(t4) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && n >= o2+sizeof(t2) && n >= o3+sizeof(t3)) {
break
@ -11882,7 +11820,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t5 := mem_2_2_2.Aux
_ = mem_2_2_2.Args[1]
p5 := mem_2_2_2.Args[0]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && isSamePtr(p3, p4) && isSamePtr(p4, p5) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && alignof(t4) <= alignof(t1) && alignof(t5) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && registerizable(b, t4) && n >= o2+sizeof(t2) && n >= o3+sizeof(t3) && n >= o4+sizeof(t4)) {
break
@ -11980,7 +11917,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t6 := mem_2_2_2_2.Aux
_ = mem_2_2_2_2.Args[1]
p6 := mem_2_2_2_2.Args[0]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && isSamePtr(p3, p4) && isSamePtr(p4, p5) && isSamePtr(p5, p6) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && alignof(t4) <= alignof(t1) && alignof(t5) <= alignof(t1) && alignof(t6) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && registerizable(b, t4) && registerizable(b, t5) && n >= o2+sizeof(t2) && n >= o3+sizeof(t3) && n >= o4+sizeof(t4) && n >= o5+sizeof(t5)) {
break
@ -12046,7 +11982,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t3 := mem_0_2.Aux
_ = mem_0_2.Args[1]
p3 := mem_0_2.Args[0]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && registerizable(b, t2) && n >= o2+sizeof(t2)) {
break
@ -12108,7 +12043,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t4 := mem_0_2_2.Aux
_ = mem_0_2_2.Args[1]
p4 := mem_0_2_2.Args[0]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && isSamePtr(p3, p4) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && alignof(t4) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && n >= o2+sizeof(t2) && n >= o3+sizeof(t3)) {
break
@ -12190,7 +12124,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t5 := mem_0_2_2_2.Aux
_ = mem_0_2_2_2.Args[1]
p5 := mem_0_2_2_2.Args[0]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && isSamePtr(p3, p4) && isSamePtr(p4, p5) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && alignof(t4) <= alignof(t1) && alignof(t5) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && registerizable(b, t4) && n >= o2+sizeof(t2) && n >= o3+sizeof(t3) && n >= o4+sizeof(t4)) {
break
@ -12292,7 +12225,6 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t6 := mem_0_2_2_2_2.Aux
_ = mem_0_2_2_2_2.Args[1]
p6 := mem_0_2_2_2_2.Args[0]
if !(isSamePtr(p1, p2) && isSamePtr(p2, p3) && isSamePtr(p3, p4) && isSamePtr(p4, p5) && isSamePtr(p5, p6) && alignof(t2) <= alignof(t1) && alignof(t3) <= alignof(t1) && alignof(t4) <= alignof(t1) && alignof(t5) <= alignof(t1) && alignof(t6) <= alignof(t1) && registerizable(b, t2) && registerizable(b, t3) && registerizable(b, t4) && registerizable(b, t5) && n >= o2+sizeof(t2) && n >= o3+sizeof(t3) && n >= o4+sizeof(t4) && n >= o5+sizeof(t5)) {
break
@ -12340,9 +12272,8 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t2 := midmem.Aux
_ = midmem.Args[2]
tmp2 := midmem.Args[0]
src := midmem.Args[1]
tmp2 := midmem.Args[0]
if !(t1.(*types.Type).Compare(t2.(*types.Type)) == types.CMPeq && isSamePtr(tmp1, tmp2) && isStackPtr(src) && disjoint(src, s, tmp2, s) && (disjoint(src, s, dst, s) || isInlinableMemmove(dst, src, s, config))) {
break
}
@ -12369,9 +12300,8 @@ func rewriteValuegeneric_OpMove(v *Value) bool {
break
}
t2 := midmem_0.Aux
_ = midmem_0.Args[2]
tmp2 := midmem_0.Args[0]
src := midmem_0.Args[1]
tmp2 := midmem_0.Args[0]
if !(t1.(*types.Type).Compare(t2.(*types.Type)) == types.CMPeq && isSamePtr(tmp1, tmp2) && isStackPtr(src) && disjoint(src, s, tmp2, s) && (disjoint(src, s, dst, s) || isInlinableMemmove(dst, src, s, config))) {
break
}
@ -14378,12 +14308,10 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool {
continue
}
a := v_0.Aux
_ = v_0.Args[1]
if v_1.Op != OpLocalAddr {
continue
}
b := v_1.Aux
_ = v_1.Args[1]
v.reset(OpConstBool)
v.AuxInt = b2i(a != b)
return true
@ -14398,7 +14326,6 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool {
continue
}
a := v_0.Aux
_ = v_0.Args[1]
if v_1.Op != OpOffPtr {
continue
}
@ -14408,7 +14335,6 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool {
continue
}
b := v_1_0.Aux
_ = v_1_0.Args[1]
v.reset(OpConstBool)
v.AuxInt = b2i(a != b || o != 0)
return true
@ -14428,7 +14354,6 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool {
continue
}
a := v_0_0.Aux
_ = v_0_0.Args[1]
if v_1.Op != OpOffPtr {
continue
}
@ -14438,7 +14363,6 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool {
continue
}
b := v_1_0.Aux
_ = v_1_0.Args[1]
v.reset(OpConstBool)
v.AuxInt = b2i(a != b || o1 != o2)
return true
@ -14529,11 +14453,7 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool {
// result: (ConstBool [1])
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpLocalAddr {
continue
}
_ = v_0.Args[1]
if v_1.Op != OpAddr {
if v_0.Op != OpLocalAddr || v_1.Op != OpAddr {
continue
}
v.reset(OpConstBool)
@ -14550,11 +14470,7 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool {
continue
}
v_0_0 := v_0.Args[0]
if v_0_0.Op != OpLocalAddr {
continue
}
_ = v_0_0.Args[1]
if v_1.Op != OpAddr {
if v_0_0.Op != OpLocalAddr || v_1.Op != OpAddr {
continue
}
v.reset(OpConstBool)
@ -14567,11 +14483,7 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool {
// result: (ConstBool [1])
for {
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
if v_0.Op != OpLocalAddr {
continue
}
_ = v_0.Args[1]
if v_1.Op != OpOffPtr {
if v_0.Op != OpLocalAddr || v_1.Op != OpOffPtr {
continue
}
v_1_0 := v_1.Args[0]
@ -14592,11 +14504,7 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool {
continue
}
v_0_0 := v_0.Args[0]
if v_0_0.Op != OpLocalAddr {
continue
}
_ = v_0_0.Args[1]
if v_1.Op != OpOffPtr {
if v_0_0.Op != OpLocalAddr || v_1.Op != OpOffPtr {
continue
}
v_1_0 := v_1.Args[0]
@ -16290,7 +16198,6 @@ func rewriteValuegeneric_OpRsh16Ux64(v *Value) bool {
if v_0.Op != OpRsh16x64 {
break
}
_ = v_0.Args[1]
x := v_0.Args[0]
if v_1.Op != OpConst64 {
break
@ -16725,7 +16632,6 @@ func rewriteValuegeneric_OpRsh32Ux64(v *Value) bool {
if v_0.Op != OpRsh32x64 {
break
}
_ = v_0.Args[1]
x := v_0.Args[0]
if v_1.Op != OpConst64 {
break
@ -17196,7 +17102,6 @@ func rewriteValuegeneric_OpRsh64Ux64(v *Value) bool {
if v_0.Op != OpRsh64x64 {
break
}
_ = v_0.Args[1]
x := v_0.Args[0]
if v_1.Op != OpConst64 {
break
@ -17703,7 +17608,6 @@ func rewriteValuegeneric_OpRsh8Ux64(v *Value) bool {
if v_0.Op != OpRsh8x64 {
break
}
_ = v_0.Args[1]
x := v_0.Args[0]
if v_1.Op != OpConst64 {
break
@ -18298,7 +18202,7 @@ func rewriteValuegeneric_OpSliceLen(v *Value) bool {
if v_0.Op != OpSliceMake {
break
}
_ = v_0.Args[2]
_ = v_0.Args[1]
v_0_1 := v_0.Args[1]
if v_0_1.Op != OpConst64 {
break
@ -18316,7 +18220,7 @@ func rewriteValuegeneric_OpSliceLen(v *Value) bool {
if v_0.Op != OpSliceMake {
break
}
_ = v_0.Args[2]
_ = v_0.Args[1]
v_0_1 := v_0.Args[1]
if v_0_1.Op != OpConst32 {
break
@ -18334,7 +18238,7 @@ func rewriteValuegeneric_OpSliceLen(v *Value) bool {
if v_0.Op != OpSliceMake {
break
}
_ = v_0.Args[2]
_ = v_0.Args[1]
v_0_1 := v_0.Args[1]
if v_0_1.Op != OpSliceLen {
break
@ -18354,7 +18258,6 @@ func rewriteValuegeneric_OpSlicePtr(v *Value) bool {
if v_0.Op != OpSliceMake {
break
}
_ = v_0.Args[2]
v_0_0 := v_0.Args[0]
if v_0_0.Op != OpSlicePtr {
break
@ -18664,7 +18567,6 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
break
}
n := mem.AuxInt
_ = mem.Args[1]
p2 := mem.Args[0]
if !(isConstZero(x) && o >= 0 && sizeof(t)+o <= n && isSamePtr(p1, p2)) {
break
@ -18696,7 +18598,6 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
break
}
n := mem_2.AuxInt
_ = mem_2.Args[1]
p3 := mem_2.Args[0]
if !(isConstZero(x) && o1 >= 0 && sizeof(t1)+o1 <= n && isSamePtr(p1, p3) && disjoint(op, sizeof(t1), p2, sizeof(t2))) {
break
@ -18735,7 +18636,6 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
break
}
n := mem_2_2.AuxInt
_ = mem_2_2.Args[1]
p4 := mem_2_2.Args[0]
if !(isConstZero(x) && o1 >= 0 && sizeof(t1)+o1 <= n && isSamePtr(p1, p4) && disjoint(op, sizeof(t1), p2, sizeof(t2)) && disjoint(op, sizeof(t1), p3, sizeof(t3))) {
break
@ -18781,7 +18681,6 @@ func rewriteValuegeneric_OpStore(v *Value) bool {
break
}
n := mem_2_2_2.AuxInt
_ = mem_2_2_2.Args[1]
p5 := mem_2_2_2.Args[0]
if !(isConstZero(x) && o1 >= 0 && sizeof(t1)+o1 <= n && isSamePtr(p1, p5) && disjoint(op, sizeof(t1), p2, sizeof(t2)) && disjoint(op, sizeof(t1), p3, sizeof(t3)) && disjoint(op, sizeof(t1), p4, sizeof(t4))) {
break
@ -19416,7 +19315,6 @@ func rewriteValuegeneric_OpStringPtr(v *Value) bool {
if v_0.Op != OpStringMake {
break
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
if v_0_0.Op != OpAddr {
break
@ -19452,7 +19350,6 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
if v.AuxInt != 0 || v_0.Op != OpStructMake2 {
break
}
_ = v_0.Args[1]
x := v_0.Args[0]
v.copyOf(x)
return true
@ -19473,7 +19370,6 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
if v.AuxInt != 0 || v_0.Op != OpStructMake3 {
break
}
_ = v_0.Args[2]
x := v_0.Args[0]
v.copyOf(x)
return true
@ -19484,7 +19380,6 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
if v.AuxInt != 1 || v_0.Op != OpStructMake3 {
break
}
_ = v_0.Args[2]
x := v_0.Args[1]
v.copyOf(x)
return true
@ -19505,7 +19400,6 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
if v.AuxInt != 0 || v_0.Op != OpStructMake4 {
break
}
_ = v_0.Args[3]
x := v_0.Args[0]
v.copyOf(x)
return true
@ -19516,7 +19410,6 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
if v.AuxInt != 1 || v_0.Op != OpStructMake4 {
break
}
_ = v_0.Args[3]
x := v_0.Args[1]
v.copyOf(x)
return true
@ -19527,7 +19420,6 @@ func rewriteValuegeneric_OpStructSelect(v *Value) bool {
if v.AuxInt != 2 || v_0.Op != OpStructMake4 {
break
}
_ = v_0.Args[3]
x := v_0.Args[2]
v.copyOf(x)
return true