summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
diff options
context:
space:
mode:
authorMikhail Maltsev <mikhail.maltsev@arm.com>2019-06-11 12:04:32 +0000
committerMikhail Maltsev <mikhail.maltsev@arm.com>2019-06-11 12:04:32 +0000
commit7bd5c55cadc9f7f8f9a677aadd1be652e0c15afb (patch)
tree47b2a71b99c19b5a897c3aa079486e0defe4f9af /llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
parentdd6019526de2f26a9db21b90702fea8cbccc7e7c (diff)
downloadbcm5719-llvm-7bd5c55cadc9f7f8f9a677aadd1be652e0c15afb.tar.gz
bcm5719-llvm-7bd5c55cadc9f7f8f9a677aadd1be652e0c15afb.zip
[ARM] First MVE instructions: scalar shifts.
This introduces a new decoding table for MVE instructions, and starts by adding the family of scalar shift instructions that are part of the MVE architecture extension: saturating shifts within a single GPR, and long shifts across a pair of GPRs (both saturating and normal). Some of these shift instructions have only 3-bit register fields in the encoding, with the low bit fixed. So they can only address an odd or even numbered GPR (depending on the operand), and therefore I add two new register classes, GPREven and GPROdd. Differential Revision: https://reviews.llvm.org/D62668 Change-Id: Iad95d5f83d26aef70c674027a184a6b1e0098d33 llvm-svn: 363051
Diffstat (limited to 'llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp b/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
index 4566ac2c9dd..f3253c8806c 100644
--- a/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
@@ -181,6 +181,13 @@ const RegisterBank &ARMRegisterBankInfo::getRegBankFromRegClass(
case tGPR_and_tcGPRRegClassID:
case tcGPRRegClassID:
case tGPRRegClassID:
+ case tGPREvenRegClassID:
+ case tGPROddRegClassID:
+ case tGPR_and_tGPREvenRegClassID:
+ case tGPR_and_tGPROddRegClassID:
+ case tGPREven_and_tcGPRRegClassID:
+ case tGPREven_and_tGPR_and_tcGPRRegClassID:
+ case tGPROdd_and_tcGPRRegClassID:
return getRegBank(ARM::GPRRegBankID);
case HPRRegClassID:
case SPR_8RegClassID:
OpenPOWER on IntegriCloud