diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-10-05 00:35:49 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-10-05 00:35:49 +0000 |
commit | 845d2c0c776abce551d16f7b1b7dc1f4d4df1a27 (patch) | |
tree | 204c79f6f26643a182bb869965b36795d212421e /include/llvm/Target | |
parent | 2a85015313b585c2a6d2a59d5bfc99a5ebe88f30 (diff) | |
download | external_llvm-845d2c0c776abce551d16f7b1b7dc1f4d4df1a27.zip external_llvm-845d2c0c776abce551d16f7b1b7dc1f4d4df1a27.tar.gz external_llvm-845d2c0c776abce551d16f7b1b7dc1f4d4df1a27.tar.bz2 |
Add TRI::getSubClassWithSubReg(RC, Idx) function.
This function is used to constrain a register class to a sub-class that
supports the given sub-register index.
For example, getSubClassWithSubReg(GR32, sub_8bit) -> GR32_ABCD.
The function will be used to compute register classes when emitting
INSERT_SUBREG and EXTRACT_SUBREG nodes and for register class inflation
of sub-register operations.
The version provided by TableGen is usually adequate, but targets can
override.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141142 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Target')
-rw-r--r-- | include/llvm/Target/TargetRegisterInfo.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/llvm/Target/TargetRegisterInfo.h b/include/llvm/Target/TargetRegisterInfo.h index bf9174c..f77aa54 100644 --- a/include/llvm/Target/TargetRegisterInfo.h +++ b/include/llvm/Target/TargetRegisterInfo.h @@ -429,6 +429,20 @@ public: return 0; } + /// getSubClassWithSubReg - Returns the largest legal sub-class of RC that + /// supports the sub-register index Idx. + /// If no such sub-class exists, return NULL. + /// If all registers in RC already have an Idx sub-register, return RC. + /// + /// TableGen generates a version of this function that is good enough in most + /// cases. Targets can override if they have constraints that TableGen + /// doesn't understand. For example, the x86 sub_8bit sub-register index is + /// supported by the full GR32 register class in 64-bit mode, but only by the + /// GR32_ABCD regiister class in 32-bit mode. + /// + virtual const TargetRegisterClass * + getSubClassWithSubReg(const TargetRegisterClass *RC, unsigned Idx) const =0; + /// composeSubRegIndices - Return the subregister index you get from composing /// two subregister indices. /// |