Add a CoveredBySubRegs property to Register descriptions.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 18 Jan 2012 00:16:39 +0000 (00:16 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 18 Jan 2012 00:16:39 +0000 (00:16 +0000)
commit31867660cb81ea2b1d1a6ffa7d09c91acb754a8b
tree3ccbfded75387b943b2877f7f5975da12d98a84b
parent7434c9a053789c04d73bb58df41ad6fdf6a84e6a
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
lib/Target/ARM/ARMRegisterInfo.td
lib/Target/Hexagon/HexagonRegisterInfo.td
lib/Target/Mips/MipsRegisterInfo.td
lib/Target/Sparc/SparcRegisterInfo.td
lib/Target/X86/X86RegisterInfo.td
utils/TableGen/CodeGenRegisters.cpp
utils/TableGen/CodeGenRegisters.h