}
break
}
- // match: (ADD a p:(ADDconst [c] m:(MUL _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (ADD <t> a p:(ADDconst [c] m:(MUL _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (ADDconst [c] (ADD <v.Type> a m))
for {
+ t := v.Type
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
a := v_0
p := v_1
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MUL || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MUL || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
continue
}
v.reset(OpARM64ADDconst)
}
break
}
- // match: (ADD a p:(ADDconst [c] m:(MULW _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (ADD <t> a p:(ADDconst [c] m:(MULW _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (ADDconst [c] (ADD <v.Type> a m))
for {
+ t := v.Type
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
a := v_0
p := v_1
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MULW || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MULW || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
continue
}
v.reset(OpARM64ADDconst)
}
break
}
- // match: (ADD a p:(ADDconst [c] m:(MNEG _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (ADD <t> a p:(ADDconst [c] m:(MNEG _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (ADDconst [c] (ADD <v.Type> a m))
for {
+ t := v.Type
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
a := v_0
p := v_1
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MNEG || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MNEG || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
continue
}
v.reset(OpARM64ADDconst)
}
break
}
- // match: (ADD a p:(ADDconst [c] m:(MNEGW _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (ADD <t> a p:(ADDconst [c] m:(MNEGW _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (ADDconst [c] (ADD <v.Type> a m))
for {
+ t := v.Type
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
a := v_0
p := v_1
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MNEGW || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MNEGW || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
continue
}
v.reset(OpARM64ADDconst)
}
break
}
- // match: (ADD a p:(SUBconst [c] m:(MUL _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (ADD <t> a p:(SUBconst [c] m:(MUL _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (SUBconst [c] (ADD <v.Type> a m))
for {
+ t := v.Type
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
a := v_0
p := v_1
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MUL || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MUL || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
continue
}
v.reset(OpARM64SUBconst)
}
break
}
- // match: (ADD a p:(SUBconst [c] m:(MULW _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (ADD <t> a p:(SUBconst [c] m:(MULW _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (SUBconst [c] (ADD <v.Type> a m))
for {
+ t := v.Type
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
a := v_0
p := v_1
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MULW || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MULW || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
continue
}
v.reset(OpARM64SUBconst)
}
break
}
- // match: (ADD a p:(SUBconst [c] m:(MNEG _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (ADD <t> a p:(SUBconst [c] m:(MNEG _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (SUBconst [c] (ADD <v.Type> a m))
for {
+ t := v.Type
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
a := v_0
p := v_1
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MNEG || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MNEG || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
continue
}
v.reset(OpARM64SUBconst)
}
break
}
- // match: (ADD a p:(SUBconst [c] m:(MNEGW _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (ADD <t> a p:(SUBconst [c] m:(MNEGW _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (SUBconst [c] (ADD <v.Type> a m))
for {
+ t := v.Type
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
a := v_0
p := v_1
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MNEGW || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MNEGW || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
continue
}
v.reset(OpARM64SUBconst)
v.AddArg3(a, x, y)
return true
}
- // match: (SUB a p:(ADDconst [c] m:(MUL _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (SUB <t> a p:(ADDconst [c] m:(MUL _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (SUBconst [c] (SUB <v.Type> a m))
for {
+ t := v.Type
a := v_0
p := v_1
if p.Op != OpARM64ADDconst {
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MUL || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MUL || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
break
}
v.reset(OpARM64SUBconst)
v.AddArg(v0)
return true
}
- // match: (SUB a p:(ADDconst [c] m:(MULW _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (SUB <t> a p:(ADDconst [c] m:(MULW _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (SUBconst [c] (SUB <v.Type> a m))
for {
+ t := v.Type
a := v_0
p := v_1
if p.Op != OpARM64ADDconst {
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MULW || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MULW || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
break
}
v.reset(OpARM64SUBconst)
v.AddArg(v0)
return true
}
- // match: (SUB a p:(ADDconst [c] m:(MNEG _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (SUB <t> a p:(ADDconst [c] m:(MNEG _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (SUBconst [c] (SUB <v.Type> a m))
for {
+ t := v.Type
a := v_0
p := v_1
if p.Op != OpARM64ADDconst {
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MNEG || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MNEG || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
break
}
v.reset(OpARM64SUBconst)
v.AddArg(v0)
return true
}
- // match: (SUB a p:(ADDconst [c] m:(MNEGW _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (SUB <t> a p:(ADDconst [c] m:(MNEGW _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (SUBconst [c] (SUB <v.Type> a m))
for {
+ t := v.Type
a := v_0
p := v_1
if p.Op != OpARM64ADDconst {
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MNEGW || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MNEGW || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
break
}
v.reset(OpARM64SUBconst)
v.AddArg(v0)
return true
}
- // match: (SUB a p:(SUBconst [c] m:(MUL _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (SUB <t> a p:(SUBconst [c] m:(MUL _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (ADDconst [c] (SUB <v.Type> a m))
for {
+ t := v.Type
a := v_0
p := v_1
if p.Op != OpARM64SUBconst {
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MUL || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MUL || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
break
}
v.reset(OpARM64ADDconst)
v.AddArg(v0)
return true
}
- // match: (SUB a p:(SUBconst [c] m:(MULW _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (SUB <t> a p:(SUBconst [c] m:(MULW _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (ADDconst [c] (SUB <v.Type> a m))
for {
+ t := v.Type
a := v_0
p := v_1
if p.Op != OpARM64SUBconst {
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MULW || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MULW || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
break
}
v.reset(OpARM64ADDconst)
v.AddArg(v0)
return true
}
- // match: (SUB a p:(SUBconst [c] m:(MNEG _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (SUB <t> a p:(SUBconst [c] m:(MNEG _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (ADDconst [c] (SUB <v.Type> a m))
for {
+ t := v.Type
a := v_0
p := v_1
if p.Op != OpARM64SUBconst {
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MNEG || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MNEG || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
break
}
v.reset(OpARM64ADDconst)
v.AddArg(v0)
return true
}
- // match: (SUB a p:(SUBconst [c] m:(MNEGW _ _)))
- // cond: p.Uses==1 && m.Uses==1
+ // match: (SUB <t> a p:(SUBconst [c] m:(MNEGW _ _)))
+ // cond: p.Uses==1 && m.Uses==1 && !t.IsPtrShaped()
// result: (ADDconst [c] (SUB <v.Type> a m))
for {
+ t := v.Type
a := v_0
p := v_1
if p.Op != OpARM64SUBconst {
}
c := auxIntToInt64(p.AuxInt)
m := p.Args[0]
- if m.Op != OpARM64MNEGW || !(p.Uses == 1 && m.Uses == 1) {
+ if m.Op != OpARM64MNEGW || !(p.Uses == 1 && m.Uses == 1 && !t.IsPtrShaped()) {
break
}
v.reset(OpARM64ADDconst)