{AVADD, C_VREG, C_NONE, C_VREG, 89, 4, 0, 0, 0},
{AVLD1, C_ZOREG, C_NONE, C_LIST, 81, 4, 0, 0, 0},
{AVLD1, C_LOREG, C_NONE, C_LIST, 81, 4, 0, 0, C_XPOST},
+ {AVLD1, C_ROFF, C_NONE, C_LIST, 81, 4, 0, 0, C_XPOST},
{AVMOV, C_ELEM, C_NONE, C_REG, 73, 4, 0, 0, 0},
{AVMOV, C_REG, C_NONE, C_ARNG, 82, 4, 0, 0, 0},
{AVMOV, C_ARNG, C_NONE, C_ARNG, 83, 4, 0, 0, 0},
{AVREV32, C_ARNG, C_NONE, C_ARNG, 83, 4, 0, 0, 0},
{AVST1, C_LIST, C_NONE, C_ZOREG, 84, 4, 0, 0, 0},
{AVST1, C_LIST, C_NONE, C_LOREG, 84, 4, 0, 0, C_XPOST},
+ {AVST1, C_LIST, C_NONE, C_ROFF, 84, 4, 0, 0, C_XPOST},
{AVDUP, C_ELEM, C_NONE, C_ARNG, 79, 4, 0, 0, 0},
{AVADDV, C_ARNG, C_NONE, C_VREG, 85, 4, 0, 0, 0},
{AVMOVI, C_ADDCON, C_NONE, C_ARNG, 86, 4, 0, 0, 0},
return autoclass(c.instoffset)
case obj.NAME_NONE:
+ if a.Index != 0 {
+ if a.Offset != 0 {
+ return C_GOK
+ }
+ return C_ROFF
+ }
c.instoffset = a.Offset
return oregclass(c.instoffset)
}
}
}
- c.ctxt.Diag("illegal combination %v %v %v %v, %d %d", p, DRconv(a1), DRconv(a2), DRconv(a3), p.From.Type, p.To.Type)
+ c.ctxt.Diag("illegal combination: %v %v %v %v, %d %d", p, DRconv(a1), DRconv(a2), DRconv(a3), p.From.Type, p.To.Type)
if ops == nil {
ops = optab
}
v := int32(p.From.Offset)
if v < -256 || v > 255 {
- c.ctxt.Diag("offset out of range\n%v", p)
+ c.ctxt.Diag("offset out of range [-255,254]: %v", p)
}
o1 = c.opldrpp(p, p.As)
if o.scond == C_XPOST {
v := int32(p.To.Offset)
if v < -256 || v > 255 {
- c.ctxt.Diag("offset out of range\n%v", p)
+ c.ctxt.Diag("offset out of range [-255,254]: %v", p)
}
o1 = LD2STR(c.opldrpp(p, p.As))
if o.scond == C_XPOST {