summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/R600ControlFlowFinalizer.cpp
diff options
context:
space:
mode:
authorSimon Tatham <simon.tatham@arm.com>2019-06-25 11:24:18 +0000
committerSimon Tatham <simon.tatham@arm.com>2019-06-25 11:24:18 +0000
commite6824160dd6f1edbeac8744a960ef7d3d2ae472a (patch)
treeeae2593e79ec45421e34c0410f9e0e9036db30a0 /llvm/lib/Target/AMDGPU/R600ControlFlowFinalizer.cpp
parent49b3778e32c95175a82ea488f943c1ff9f128851 (diff)
downloadbcm5719-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
OpenPOWER on IntegriCloud