}
}
- // 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 {
}
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
}
}
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
}
}
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
}
}
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
}
}
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
}
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)
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)
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)
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)
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)
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)
}
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
}
}
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
}
}
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
}
}
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
}
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
}
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
}
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
}
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
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
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
}
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
}
}
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
}
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
}
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
}
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)
if x.Op != OpARMMOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
}
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
}
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)
if x.Op != OpARMMOVBload {
break
}
- _ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
}
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
}
}
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
}
}
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
}
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)
if x.Op != OpARMMOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
if x.Op != OpARMMOVHUload {
break
}
- _ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
}
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
}
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)
if x.Op != OpARMMOVBload {
break
}
- _ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
if x.Op != OpARMMOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
if x.Op != OpARMMOVHload {
break
}
- _ = x.Args[1]
v.reset(OpARMMOVWreg)
v.AddArg(x)
return true
}
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
}
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)
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)
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)
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)
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
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
}
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
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
}
if x.Op != OpARM64MOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVBUloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
}
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
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
}
if x.Op != OpARM64MOVBload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVBloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
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
}
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
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
}
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
}
}
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
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
}
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
}
if x.Op != OpARM64MOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHUload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVBUloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHUloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHUloadidx2 {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
}
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
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
}
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
}
if x.Op != OpARM64MOVBload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVBloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVBUloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHloadidx2 {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
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
}
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
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
}
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
}
if x.Op != OpARM64MOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHUload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVWUload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVBUloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHUloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVWUloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHUloadidx2 {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVWUloadidx4 {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
}
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
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
}
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
}
if x.Op != OpARM64MOVBload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHUload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVWload {
break
}
- _ = x.Args[1]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVBloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVBUloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHUloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVWloadidx {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHloadidx2 {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVHUloadidx2 {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
if x.Op != OpARM64MOVWloadidx4 {
break
}
- _ = x.Args[2]
v.reset(OpARM64MOVDreg)
v.AddArg(x)
return true
}
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
}
if x.Op != OpMIPSMOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
}
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
}
if x.Op != OpMIPSMOVBload {
break
}
- _ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
}
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
}
}
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
}
}
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
}
if x.Op != OpMIPSMOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
if x.Op != OpMIPSMOVHUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
}
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
}
if x.Op != OpMIPSMOVBload {
break
}
- _ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
if x.Op != OpMIPSMOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
if x.Op != OpMIPSMOVHload {
break
}
- _ = x.Args[1]
v.reset(OpMIPSMOVWreg)
v.AddArg(x)
return true
}
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
}
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 {
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 {
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 {
if cmp.Op != OpMIPSSGT {
break
}
- _ = cmp.Args[1]
b.resetWithControl(BlockMIPSNE, cmp)
return true
}
if cmp.Op != OpMIPSSGTU {
break
}
- _ = cmp.Args[1]
b.resetWithControl(BlockMIPSNE, cmp)
return true
}
if cmp.Op != OpMIPSSGT {
break
}
- _ = cmp.Args[1]
b.resetWithControl(BlockMIPSEQ, cmp)
return true
}
if cmp.Op != OpMIPSSGTU {
break
}
- _ = cmp.Args[1]
b.resetWithControl(BlockMIPSEQ, cmp)
return true
}
if x.Op != OpMIPS64MOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVBload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVHUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVBload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVHload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVHUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVWUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVBload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVBUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVHload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVHUload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if x.Op != OpMIPS64MOVWload {
break
}
- _ = x.Args[1]
v.reset(OpMIPS64MOVVreg)
v.AddArg(x)
return true
if cmp.Op != OpMIPS64SGT {
break
}
- _ = cmp.Args[1]
b.resetWithControl(BlockMIPS64NE, cmp)
return true
}
if cmp.Op != OpMIPS64SGTU {
break
}
- _ = cmp.Args[1]
b.resetWithControl(BlockMIPS64NE, cmp)
return true
}
if cmp.Op != OpMIPS64SGT {
break
}
- _ = cmp.Args[1]
b.resetWithControl(BlockMIPS64EQ, cmp)
return true
}
if cmp.Op != OpMIPS64SGTU {
break
}
- _ = cmp.Args[1]
b.resetWithControl(BlockMIPS64EQ, cmp)
return true
}
if x.Op != OpPPC64MOVBZload {
continue
}
- _ = x.Args[1]
v.reset(OpPPC64ANDconst)
v.AuxInt = c & 0xFF
v.AddArg(x)
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
if x.Op != OpPPC64MOVBZload {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVBZloadidx {
break
}
- _ = x.Args[2]
v.copyOf(x)
return true
}
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
if y.Op != OpPPC64MOVHBRload {
break
}
- _ = y.Args[1]
v.copyOf(y)
return true
}
if x.Op != OpPPC64MOVBZload {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVBZloadidx {
break
}
- _ = x.Args[2]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVHZload {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVHZloadidx {
break
}
- _ = x.Args[2]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVHload {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVHloadidx {
break
}
- _ = x.Args[2]
v.copyOf(x)
return true
}
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 {
if y.Op != OpPPC64MOVHBRload {
break
}
- _ = y.Args[1]
v.copyOf(y)
return true
}
if y.Op != OpPPC64MOVWBRload {
break
}
- _ = y.Args[1]
v.copyOf(y)
return true
}
if x.Op != OpPPC64MOVBZload {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVBZloadidx {
break
}
- _ = x.Args[2]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVHZload {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVHZloadidx {
break
}
- _ = x.Args[2]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVWZload {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVWZloadidx {
break
}
- _ = x.Args[2]
v.copyOf(x)
return true
}
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 {
if x.Op != OpPPC64MOVHload {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVHloadidx {
break
}
- _ = x.Args[2]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVWload {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpPPC64MOVWloadidx {
break
}
- _ = x.Args[2]
v.copyOf(x)
return true
}
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
}
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
}
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
}
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
}
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
}
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
}
// 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)
// 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)
if x.Op != OpS390XLOCGR {
break
}
- _ = x.Args[2]
+ _ = x.Args[1]
x_0 := x.Args[0]
if x_0.Op != OpS390XMOVDconst {
break
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
}
// 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)
// 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)
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
}
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
}
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
}
// 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)
// 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)
// 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)
// 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)
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
}
// 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)
// 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)
// 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)
// 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)
// 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)
// 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)
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
}
// 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)
// 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)
// 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)
// 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)
// 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)
// 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)
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
}
// 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)
// 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)
// 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)
// 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)
// 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)
// 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)
// 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)
// 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)
// 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)
// 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)
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
}
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
}
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
}
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
}
if x.Op != OpWasmI64Load16S {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load16S {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load32S {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load8S {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load8S {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load8S {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load16U {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load16U {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load32U {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load8U {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load8U {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if x.Op != OpWasmI64Load8U {
break
}
- _ = x.Args[1]
v.copyOf(x)
return true
}
if v_0.Op != OpComplexMake {
break
}
- _ = v_0.Args[1]
real := v_0.Args[0]
v.copyOf(real)
return true
if v_0.Op != OpIMake {
break
}
- _ = v_0.Args[1]
itab := v_0.Args[0]
v.copyOf(itab)
return true
if v_0.Op != OpSliceMake {
break
}
- _ = v_0.Args[2]
len := v_0.Args[1]
v.copyOf(len)
return true
if v_0.Op != OpSliceMake {
break
}
- _ = v_0.Args[2]
ptr := v_0.Args[0]
v.copyOf(ptr)
return true
if v_0.Op != OpStringMake {
break
}
- _ = v_0.Args[1]
ptr := v_0.Args[0]
v.copyOf(ptr)
return true
if v_0.Op != OpInt64Make {
break
}
- _ = v_0.Args[1]
hi := v_0.Args[0]
v.copyOf(hi)
return true
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
if v_1.Op != OpInt64Make {
break
}
- _ = v_1.Args[1]
v_1_0 := v_1.Args[0]
if v_1_0.Op != OpConst32 {
break
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
continue
}
a := v_0.Aux
- _ = v_0.Args[1]
if v_1.Op != OpOffPtr {
continue
}
continue
}
b := v_1_0.Aux
- _ = v_1_0.Args[1]
v.reset(OpConstBool)
v.AuxInt = b2i(a == b && o == 0)
return true
continue
}
a := v_0_0.Aux
- _ = v_0_0.Args[1]
if v_1.Op != OpOffPtr {
continue
}
continue
}
b := v_1_0.Aux
- _ = v_1_0.Args[1]
v.reset(OpConstBool)
v.AuxInt = b2i(a == b && o1 == o2)
return true
// 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)
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)
// 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]
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]
if v_0.Op != OpLoad {
break
}
- _ = v_0.Args[1]
v_0_0 := v_0.Args[0]
if v_0_0.Op != OpOffPtr {
break
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
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
if v_0.Op != OpLocalAddr {
break
}
- _ = v_0.Args[1]
v.reset(OpConstBool)
v.AuxInt = 1
return true
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 {
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 {
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
}
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
}
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
}
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
}
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 {
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 {
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 {
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 {
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
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
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
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
break
}
n := v_1.AuxInt
- _ = v_1.Args[1]
p2 := v_1.Args[0]
if !(t1.IsBoolean() && isSamePtr(p1, p2) && n >= o+1) {
break
break
}
n := v_1.AuxInt
- _ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is8BitInt(t1) && isSamePtr(p1, p2) && n >= o+1) {
break
break
}
n := v_1.AuxInt
- _ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is16BitInt(t1) && isSamePtr(p1, p2) && n >= o+2) {
break
break
}
n := v_1.AuxInt
- _ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is32BitInt(t1) && isSamePtr(p1, p2) && n >= o+4) {
break
break
}
n := v_1.AuxInt
- _ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is64BitInt(t1) && isSamePtr(p1, p2) && n >= o+8) {
break
break
}
n := v_1.AuxInt
- _ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is32BitFloat(t1) && isSamePtr(p1, p2) && n >= o+4) {
break
break
}
n := v_1.AuxInt
- _ = v_1.Args[1]
p2 := v_1.Args[0]
if !(is64BitFloat(t1) && isSamePtr(p1, p2) && n >= o+8) {
break
if mem.Op != OpZero || mem.AuxInt != n || mem.Aux != t {
break
}
- _ = mem.Args[1]
dst2 := mem.Args[0]
if !(isSamePtr(src, dst2)) {
break
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
break
}
t3 := mem_2.Aux
- _ = mem_2.Args[2]
+ d2 := mem_2.Args[1]
op3 := mem_2.Args[0]
if op3.Op != OpOffPtr {
break
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
}
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
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
}
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
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
}
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
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
}
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
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
}
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
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
}
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
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
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
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
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
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
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
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
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
}
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
}
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
continue
}
a := v_0.Aux
- _ = v_0.Args[1]
if v_1.Op != OpOffPtr {
continue
}
continue
}
b := v_1_0.Aux
- _ = v_1_0.Args[1]
v.reset(OpConstBool)
v.AuxInt = b2i(a != b || o != 0)
return true
continue
}
a := v_0_0.Aux
- _ = v_0_0.Args[1]
if v_1.Op != OpOffPtr {
continue
}
continue
}
b := v_1_0.Aux
- _ = v_1_0.Args[1]
v.reset(OpConstBool)
v.AuxInt = b2i(a != b || o1 != o2)
return true
// 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)
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)
// 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]
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]
if v_0.Op != OpRsh16x64 {
break
}
- _ = v_0.Args[1]
x := v_0.Args[0]
if v_1.Op != OpConst64 {
break
if v_0.Op != OpRsh32x64 {
break
}
- _ = v_0.Args[1]
x := v_0.Args[0]
if v_1.Op != OpConst64 {
break
if v_0.Op != OpRsh64x64 {
break
}
- _ = v_0.Args[1]
x := v_0.Args[0]
if v_1.Op != OpConst64 {
break
if v_0.Op != OpRsh8x64 {
break
}
- _ = v_0.Args[1]
x := v_0.Args[0]
if v_1.Op != OpConst64 {
break
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
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
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
if v_0.Op != OpSliceMake {
break
}
- _ = v_0.Args[2]
v_0_0 := v_0.Args[0]
if v_0_0.Op != OpSlicePtr {
break
break
}
n := mem.AuxInt
- _ = mem.Args[1]
p2 := mem.Args[0]
if !(isConstZero(x) && o >= 0 && sizeof(t)+o <= n && isSamePtr(p1, p2)) {
break
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
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
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
if v_0.Op != OpStringMake {
break
}
- _ = v_0.Args[1]
v_0_0 := v_0.Args[0]
if v_0_0.Op != OpAddr {
break
if v.AuxInt != 0 || v_0.Op != OpStructMake2 {
break
}
- _ = v_0.Args[1]
x := v_0.Args[0]
v.copyOf(x)
return true
if v.AuxInt != 0 || v_0.Op != OpStructMake3 {
break
}
- _ = v_0.Args[2]
x := v_0.Args[0]
v.copyOf(x)
return true
if v.AuxInt != 1 || v_0.Op != OpStructMake3 {
break
}
- _ = v_0.Args[2]
x := v_0.Args[1]
v.copyOf(x)
return true
if v.AuxInt != 0 || v_0.Op != OpStructMake4 {
break
}
- _ = v_0.Args[3]
x := v_0.Args[0]
v.copyOf(x)
return true
if v.AuxInt != 1 || v_0.Op != OpStructMake4 {
break
}
- _ = v_0.Args[3]
x := v_0.Args[1]
v.copyOf(x)
return true
if v.AuxInt != 2 || v_0.Op != OpStructMake4 {
break
}
- _ = v_0.Args[3]
x := v_0.Args[2]
v.copyOf(x)
return true