arm64.ASTXRB, arm64.ASTXRH, arm64.ASTXRW, arm64.ASTXR,
arm64.ASTXP, arm64.ASTXPW, arm64.ASTLXP, arm64.ASTLXPW,
arm64.ASWPB, arm64.ASWPH, arm64.ASWPW, arm64.ASWPD,
+ arm64.ASWPALB, arm64.ASWPALH, arm64.ASWPALW, arm64.ASWPALD,
arm64.ALDADDB, arm64.ALDADDH, arm64.ALDADDW, arm64.ALDADDD,
arm64.ALDANDB, arm64.ALDANDH, arm64.ALDANDW, arm64.ALDANDD,
arm64.ALDEORB, arm64.ALDEORH, arm64.ALDEORW, arm64.ALDEORD,
SWPH R5, (RSP), R7 // e7832578
SWPB R5, (R6), R7 // c7802538
SWPB R5, (RSP), R7 // e7832538
+ SWPALD R5, (R6), R7 // c780e5f8
+ SWPALD R5, (RSP), R7 // e783e5f8
+ SWPALW R5, (R6), R7 // c780e5b8
+ SWPALW R5, (RSP), R7 // e783e5b8
+ SWPALH R5, (R6), R7 // c780e578
+ SWPALH R5, (RSP), R7 // e783e578
+ SWPALB R5, (R6), R7 // c780e538
+ SWPALB R5, (RSP), R7 // e783e538
LDADDD R5, (R6), R7 // c70025f8
LDADDD R5, (RSP), R7 // e70325f8
LDADDW R5, (R6), R7 // c70025b8
oprangeset(AMOVZW, t)
case ASWPD:
+ oprangeset(ASWPALD, t)
oprangeset(ASWPB, t)
oprangeset(ASWPH, t)
oprangeset(ASWPW, t)
+ oprangeset(ASWPALB, t)
+ oprangeset(ASWPALH, t)
+ oprangeset(ASWPALW, t)
oprangeset(ALDADDALD, t)
oprangeset(ALDADDALW, t)
oprangeset(ALDADDB, t)
rt := p.RegTo2
rb := p.To.Reg
switch p.As {
- case ASWPD, ALDADDALD, ALDADDD, ALDANDD, ALDEORD, ALDORD: // 64-bit
+ case ASWPD, ASWPALD, ALDADDALD, ALDADDD, ALDANDD, ALDEORD, ALDORD: // 64-bit
o1 = 3 << 30
- case ASWPW, ALDADDALW, ALDADDW, ALDANDW, ALDEORW, ALDORW: // 32-bit
+ case ASWPW, ASWPALW, ALDADDALW, ALDADDW, ALDANDW, ALDEORW, ALDORW: // 32-bit
o1 = 2 << 30
- case ASWPH, ALDADDH, ALDANDH, ALDEORH, ALDORH: // 16-bit
+ case ASWPH, ASWPALH, ALDADDH, ALDANDH, ALDEORH, ALDORH: // 16-bit
o1 = 1 << 30
- case ASWPB, ALDADDB, ALDANDB, ALDEORB, ALDORB: // 8-bit
+ case ASWPB, ASWPALB, ALDADDB, ALDANDB, ALDEORB, ALDORB: // 8-bit
o1 = 0 << 30
default:
c.ctxt.Diag("illegal instruction: %v\n", p)
}
switch p.As {
- case ASWPD, ASWPW, ASWPH, ASWPB:
+ case ASWPD, ASWPW, ASWPH, ASWPB, ASWPALD, ASWPALW, ASWPALH, ASWPALB:
o1 |= 0x20 << 10
case ALDADDALD, ALDADDALW, ALDADDD, ALDADDW, ALDADDH, ALDADDB:
o1 |= 0x00 << 10
o1 |= 0x0c << 10
}
switch p.As {
- case ALDADDALD, ALDADDALW:
+ case ALDADDALD, ALDADDALW, ASWPALD, ASWPALW, ASWPALH, ASWPALB:
o1 |= 3 << 22
}
o1 |= 0x1c1<<21 | uint32(rs&31)<<16 | uint32(rb&31)<<5 | uint32(rt&31)