The spec [1] doesn't restrict the offset register (i.e. Rm != 11111) in
SVE contiguous load/store (scalar plus scalar) instructions, permit XZR.
[1] https://developer.arm.com/documentation/ddi0596/2020-12/SVE-Instructions
Paths
| Differential D130365
[AArch64][SVE] Allow XZR as offset reg in contiguous loads/stores AbandonedPublic Authored by c-rhodes on Jul 22 2022, 7:58 AM.
Details
Summary The spec [1] doesn't restrict the offset register (i.e. Rm != 11111) in [1] https://developer.arm.com/documentation/ddi0596/2020-12/SVE-Instructions
Diff Detail Event TimelineComment Actions Following the link in the summary and looking at LD1H I see if Rm == '11111' then UNDEFINED; which suggests whilst the encoding might be valid the result is undefined and so I doubt we want users to fall into such a trap. Comment Actions
ah, well spotted, I didn't see that. I was looking for Rm != 11111 in the encoding as I've seen for other instructions in the past, not at the pseudo code. It seems XZR shouldn't be accepted by the assembler after all, abandoning this.
Revision Contents
Diff 446837 llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
llvm/test/MC/AArch64/SVE/ld1b-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1b.s
llvm/test/MC/AArch64/SVE/ld1d-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1d.s
llvm/test/MC/AArch64/SVE/ld1h-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1h.s
llvm/test/MC/AArch64/SVE/ld1sb-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1sb.s
llvm/test/MC/AArch64/SVE/ld1sh-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1sh.s
llvm/test/MC/AArch64/SVE/ld1sw-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1sw.s
llvm/test/MC/AArch64/SVE/ld1w-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1w.s
llvm/test/MC/AArch64/SVE/st1b-diagnostics.s
llvm/test/MC/AArch64/SVE/st1b.s
llvm/test/MC/AArch64/SVE/st1d-diagnostics.s
llvm/test/MC/AArch64/SVE/st1d.s
llvm/test/MC/AArch64/SVE/st1h-diagnostics.s
llvm/test/MC/AArch64/SVE/st1h.s
llvm/test/MC/AArch64/SVE/st1w-diagnostics.s
llvm/test/MC/AArch64/SVE/st1w.s
|