[PATCH] D62679: [ARM] Add MVE 64-bit GPR <-> vector move instructions.

Simon Tatham via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 30 08:23:08 PDT 2019


simon_tatham created this revision.
simon_tatham added reviewers: dmgreen, samparker, SjoerdMeijer, t.p.northover.
Herald added subscribers: llvm-commits, hiraditya, kristof.beyls, javed.absar.
Herald added a project: LLVM.

These instructions let you load half a vector register at once from
two general-purpose registers, or vice versa.

The assembly syntax for these instructions mentions the vector
register name twice. For the move _into_ a vector register, the MC
operand list also has to mention the register name twice (once as the
output, and once as an input to represent where the unchanged half of
the output register comes from). So we can conveniently assign one of
the two asm operands to be the output $Qd, and the other $QdSrc, which
avoids confusing the auto-generated AsmMatcher too much. For the move
_from_ a vector register, there's no way to get round the fact that
both instances of that register name have to be inputs, so we need a
custom AsmMatchConverter to avoid generating two separate output MC
operands. (And even that wouldn't have worked if it hadn't been for
D60695 <https://reviews.llvm.org/D60695>.)


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D62679

Files:
  llvm/lib/Target/ARM/ARMInstrInfo.td
  llvm/lib/Target/ARM/ARMInstrMVE.td
  llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
  llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
  llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
  llvm/test/MC/ARM/mve-vmov-pair.s
  llvm/test/MC/Disassembler/ARM/mve-vmov-pair.txt

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D62679.202214.patch
Type: text/x-patch
Size: 15896 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190530/4a70e086/attachment.bin>


More information about the llvm-commits mailing list