This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][SVE] Asm: Add support for parsing and printing SVE vector lists.
ClosedPublic

Authored by sdesmalen on Apr 9 2018, 2:35 AM.

Details

Summary

Added Z_(b|h|s|d) vector list RegisterOperands along with support to
add/print the vector lists.

This is patch [5/6] in a series to add assembler/disassembler support for
SVE's contiguous ST1 (scalar+imm) instructions.

Diff Detail

Repository
rL LLVM

Event Timeline

sdesmalen created this revision.Apr 9 2018, 2:35 AM
fhahn added inline comments.Apr 12 2018, 5:26 AM
lib/Target/AArch64/AArch64RegisterInfo.td
839 ↗(On Diff #141605)

nit: spaces around = ?

841 ↗(On Diff #141605)

zsub1...3 do not seem used?

lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
1155 ↗(On Diff #141605)

Could only initializing the first 2 elements for the ZRegs cause problems? Maybe assert that NumRegs < 2m uf RegTz == ZReg?

sdesmalen marked 3 inline comments as done.Apr 12 2018, 7:08 AM
sdesmalen added inline comments.
lib/Target/AArch64/AArch64RegisterInfo.td
841 ↗(On Diff #141605)

These are required for ST(2|3|4) instructions, but I can remove them from this patch.

sdesmalen updated this revision to Diff 142168.Apr 12 2018, 7:08 AM
sdesmalen marked an inline comment as done.

Added assert and whitespace and removed definitions for zsub1..3 from this patch.

fhahn accepted this revision.Apr 12 2018, 8:44 AM

LGTM

lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
1160 ↗(On Diff #142168)

How about assert((RegTy != VecListIdx_ZReg || NumRegs <= 1) && " NumRegs must be 0 or 1 for ZRegs");

This revision is now accepted and ready to land.Apr 12 2018, 8:44 AM
This revision was automatically updated to reflect the committed changes.