From 31867660cb81ea2b1d1a6ffa7d09c91acb754a8b Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Wed, 18 Jan 2012 00:16:39 +0000 Subject: 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 --- include/llvm/Target/Target.td | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include/llvm/Target/Target.td') diff --git a/include/llvm/Target/Target.td b/include/llvm/Target/Target.td index be08b9c9be..f9f30a8bb7 100644 --- a/include/llvm/Target/Target.td +++ b/include/llvm/Target/Target.td @@ -86,6 +86,12 @@ class Register altNames = []> { // This is used by the x86-64 and ARM Thumb targets where some registers // require larger instruction encodings. int CostPerUse = 0; + + // CoveredBySubRegs - When this bit is set, the value of this register is + // completely determined by the value of its sub-registers. For example, the + // x86 register AX is covered by its sub-registers AL and AH, but EAX is not + // covered by its sub-register AX. + bit CoveredBySubRegs = 0; } // RegisterWithSubRegs - This can be used to define instances of Register which -- cgit v1.2.3