diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-01-18 00:16:39 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-01-18 00:16:39 +0000 |
commit | 31867660cb81ea2b1d1a6ffa7d09c91acb754a8b (patch) | |
tree | 3ccbfded75387b943b2877f7f5975da12d98a84b /lib/Target/X86/X86RegisterInfo.td | |
parent | 7434c9a053789c04d73bb58df41ad6fdf6a84e6a (diff) | |
download | llvm-31867660cb81ea2b1d1a6ffa7d09c91acb754a8b.tar.gz llvm-31867660cb81ea2b1d1a6ffa7d09c91acb754a8b.tar.bz2 llvm-31867660cb81ea2b1d1a6ffa7d09c91acb754a8b.tar.xz |
Add a CoveredBySubRegs property to Register descriptions.
When set, this bit indicates that a register is completely defined by
the value of its sub-registers.
Use the CoveredBySubRegs property to infer which super-registers are
call-preserved given a list of callee-saved registers. For example, the
ARM registers D8-D15 are callee-saved. This now automatically implies
that Q4-Q7 are call-preserved.
Conversely, Win64 callees save XMM6-XMM15, but the corresponding
YMM6-YMM15 registers are not call-preserved because they are not fully
defined by their sub-registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148363 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86RegisterInfo.td')
-rw-r--r-- | lib/Target/X86/X86RegisterInfo.td | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/Target/X86/X86RegisterInfo.td b/lib/Target/X86/X86RegisterInfo.td index 9a7db36e08..5263a4934c 100644 --- a/lib/Target/X86/X86RegisterInfo.td +++ b/lib/Target/X86/X86RegisterInfo.td @@ -70,7 +70,7 @@ let Namespace = "X86" in { def BH : Register<"bh">; // 16-bit registers - let SubRegIndices = [sub_8bit, sub_8bit_hi] in { + let SubRegIndices = [sub_8bit, sub_8bit_hi], CoveredBySubRegs = 1 in { def AX : RegisterWithSubRegs<"ax", [AL,AH]>; def DX : RegisterWithSubRegs<"dx", [DL,DH]>; def CX : RegisterWithSubRegs<"cx", [CL,CH]>; |