summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/InterferenceCache.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-02-10 19:23:53 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-02-10 19:23:53 +0000
commit024d7ae110a783905dcf4dd62e9732e4d4b625f6 (patch)
tree713d4089399fd2726fdb1d11c9db6f4a7618faa3 /llvm/lib/CodeGen/InterferenceCache.cpp
parentdde2adec89005112222b2e30102c3a95166a1c59 (diff)
downloadbcm5719-llvm-024d7ae110a783905dcf4dd62e9732e4d4b625f6.tar.gz
bcm5719-llvm-024d7ae110a783905dcf4dd62e9732e4d4b625f6.zip
Add a static MachineOperand::clobbersPhysReg().
It can be necessary to detach a register mask pointer from its MachineOperand. This method is convenient for checking clobbered physregs on a detached bitmask pointer. llvm-svn: 150261
Diffstat (limited to 'llvm/lib/CodeGen/InterferenceCache.cpp')
-rw-r--r--llvm/lib/CodeGen/InterferenceCache.cpp9
1 files changed, 2 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/InterferenceCache.cpp b/llvm/lib/CodeGen/InterferenceCache.cpp
index 74f67c2db07..a8a32f3f1a7 100644
--- a/llvm/lib/CodeGen/InterferenceCache.cpp
+++ b/llvm/lib/CodeGen/InterferenceCache.cpp
@@ -106,11 +106,6 @@ bool InterferenceCache::Entry::valid(LiveIntervalUnion *LIUArray,
return i == e;
}
-// Test if a register mask clobbers PhysReg.
-static inline bool maskClobber(const uint32_t *Mask, unsigned PhysReg) {
- return !(Mask[PhysReg/32] & (1u << PhysReg%32));
-}
-
void InterferenceCache::Entry::update(unsigned MBBNum) {
SlotIndex Start, Stop;
tie(Start, Stop) = Indexes->getMBBRange(MBBNum);
@@ -152,7 +147,7 @@ void InterferenceCache::Entry::update(unsigned MBBNum) {
SlotIndex Limit = BI->First.isValid() ? BI->First : Stop;
for (unsigned i = 0, e = RegMaskSlots.size();
i != e && RegMaskSlots[i] < Limit; ++i)
- if (maskClobber(RegMaskBits[i], PhysReg)) {
+ if (MachineOperand::clobbersPhysReg(RegMaskBits[i], PhysReg)) {
// Register mask i clobbers PhysReg before the LIU interference.
BI->First = RegMaskSlots[i];
break;
@@ -191,7 +186,7 @@ void InterferenceCache::Entry::update(unsigned MBBNum) {
// Also check for register mask interference.
SlotIndex Limit = BI->Last.isValid() ? BI->Last : Start;
for (unsigned i = RegMaskSlots.size(); i && RegMaskSlots[i-1] > Limit; --i)
- if (maskClobber(RegMaskBits[i-1], PhysReg)) {
+ if (MachineOperand::clobbersPhysReg(RegMaskBits[i-1], PhysReg)) {
// Register mask i-1 clobbers PhysReg after the LIU interference.
// Model the regmask clobber as a dead def.
BI->Last = RegMaskSlots[i-1].getDeadSlot();
OpenPOWER on IntegriCloud