diff options
author | Simon Tatham <simon.tatham@arm.com> | 2019-06-25 11:24:18 +0000 |
---|---|---|
committer | Simon Tatham <simon.tatham@arm.com> | 2019-06-25 11:24:18 +0000 |
commit | e6824160dd6f1edbeac8744a960ef7d3d2ae472a (patch) | |
tree | eae2593e79ec45421e34c0410f9e0e9036db30a0 /llvm/lib/Target/AMDGPU/R600ControlFlowFinalizer.cpp | |
parent | 49b3778e32c95175a82ea488f943c1ff9f128851 (diff) | |
download | bcm5719-llvm-e6824160dd6f1edbeac8744a960ef7d3d2ae472a.tar.gz bcm5719-llvm-e6824160dd6f1edbeac8744a960ef7d3d2ae472a.zip |
[ARM] Add MVE vector load/store instructions.
This adds the rest of the vector memory access instructions. It
includes contiguous loads/stores, with an ordinary addressing mode
such as [r0,#offset] (plus writeback variants); gather loads and
scatter stores with a scalar base address register and a vector of
offsets from it (written [r0,q1] or similar); and gather/scatters with
a vector of base addresses (written [q0,#offset], again with
writeback). Additionally, some of the loads can widen each loaded
value into a larger vector lane, and the corresponding stores narrow
them again.
To implement these, we also have to add the addressing modes they
need. Also, in AsmParser, the `isMem` query function now has
subqueries `isGPRMem` and `isMVEMem`, according to which kind of base
register is used by a given memory access operand.
I've also had to add an extra check in `checkTargetMatchPredicate` in
the AsmParser, without which our last-minute check of `rGPR` register
operands against SP and PC was failing an assertion because Tablegen
had inserted an immediate 0 in place of one of a pair of tied register
operands. (This matches the way the corresponding check for `MCK_rGPR`
in `validateTargetOperandClass` is guarded.) Apparently the MVE load
instructions were the first to have ever triggered this assertion, but
I think only because they were the first to have a combination of the
usual Arm pre/post writeback system and the `rGPR` class in particular.
Reviewers: dmgreen, samparker, SjoerdMeijer, t.p.northover
Subscribers: javed.absar, kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D62680
llvm-svn: 364291
Diffstat (limited to 'llvm/lib/Target/AMDGPU/R600ControlFlowFinalizer.cpp')
0 files changed, 0 insertions, 0 deletions