Undo spill weight tweak. Need to investigate the performance regressions.
authorEvan Cheng <evan.cheng@apple.com>
Sat, 21 Jun 2008 06:45:54 +0000 (06:45 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Sat, 21 Jun 2008 06:45:54 +0000 (06:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52572 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/LiveIntervalAnalysis.h
lib/CodeGen/LiveIntervalAnalysis.cpp
lib/CodeGen/SimpleRegisterCoalescing.cpp
test/CodeGen/X86/2006-05-11-InstrSched.ll
test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll
test/CodeGen/X86/2008-03-18-CoalescerBug.ll

index 84c6d6791941c7930c9d01ce8c62d13ac1cf8769..473cc8e099694acd35a1143580b46a2be7b7dd34 100644 (file)
@@ -121,12 +121,8 @@ namespace llvm {
       return getBaseIndex(index) + InstrSlots::STORE;
     }
 
-    static float getSpillWeight(bool isDef, bool isUse, bool isMem,
-                                unsigned loopDepth) {
-      float Weight = isDef;
-      if (isUse)
-        Weight += isMem ? 1.2f : 1.0f;
-      return Weight * powf(10.0F, (float)loopDepth);
+    static float getSpillWeight(bool isDef, bool isUse, unsigned loopDepth) {
+      return (isDef + isUse) * powf(10.0F, (float)loopDepth);
     }
 
     typedef Reg2IntervalMap::iterator iterator;
index 2a10cad8874db4f642026bc72aea2c3b78feb659..83df4d174a4cb0b0b5129fd8fa0dac2c1085a577 100644 (file)
@@ -979,7 +979,6 @@ rewriteInstructionForSpills(const LiveInterval &li, const VNInfo *VNI,
   unsigned loopDepth = loopInfo->getLoopDepth(MBB);
   bool CanFold = false;
  RestartInstruction:
-  bool isMem = MI->getDesc().mayLoad() || MI->getDesc().mayStore();
   for (unsigned i = 0; i != MI->getNumOperands(); ++i) {
     MachineOperand& mop = MI->getOperand(i);
     if (!mop.isRegister())
@@ -1047,7 +1046,7 @@ rewriteInstructionForSpills(const LiveInterval &li, const VNInfo *VNI,
     }
 
     // Update stack slot spill weight if we are splitting.
-    float Weight = getSpillWeight(HasDef, HasUse, isMem, loopDepth);
+    float Weight = getSpillWeight(HasDef, HasUse, loopDepth);
       if (!TrySplit)
       SSWeight += Weight;
 
@@ -1240,7 +1239,6 @@ rewriteInstructionsForSpills(const LiveInterval &li, bool TrySplit,
     bool MIHasUse = rwi.HasUse;
     bool MIHasDef = rwi.HasDef;
     MachineInstr *MI = rwi.MI;
-    bool isMem = MI->getDesc().mayLoad() || MI->getDesc().mayStore();
     // If MI def and/or use the same register multiple times, then there
     // are multiple entries.
     unsigned NumUses = MIHasUse;
@@ -1388,7 +1386,7 @@ rewriteInstructionsForSpills(const LiveInterval &li, bool TrySplit,
 
     // Update spill weight.
     unsigned loopDepth = loopInfo->getLoopDepth(MBB);
-    nI.weight += getSpillWeight(HasDef, HasUse, isMem, loopDepth);
+    nI.weight += getSpillWeight(HasDef, HasUse, loopDepth);
   }
 
   if (NewVReg && TrySplit && AllCanFold) {
@@ -1630,7 +1628,6 @@ addIntervalsForSpills(const LiveInterval &li,
         LiveInterval &nI = getOrCreateInterval(VReg);
         bool isReMat = vrm.isReMaterialized(VReg);
         MachineInstr *MI = getInstructionFromIndex(index);
-        bool isMem = MI->getDesc().mayLoad() || MI->getDesc().mayStore();
         bool CanFold = false;
         bool FoundUse = false;
         Ops.clear();
@@ -1683,7 +1680,7 @@ addIntervalsForSpills(const LiveInterval &li,
 
         // Update spill slot weight.
         if (!isReMat)
-          SSWeight += getSpillWeight(true, false, isMem, loopDepth);
+          SSWeight += getSpillWeight(true, false, loopDepth);
       }
       Id = SpillMBBs.find_next(Id);
     }
@@ -1703,7 +1700,6 @@ addIntervalsForSpills(const LiveInterval &li,
       LiveInterval &nI = getOrCreateInterval(VReg);
       bool isReMat = vrm.isReMaterialized(VReg);
       MachineInstr *MI = getInstructionFromIndex(index);
-      bool isMem = MI->getDesc().mayLoad() || MI->getDesc().mayStore();
       bool CanFold = false;
       Ops.clear();
       if (restores[i].canFold) {
@@ -1757,7 +1753,7 @@ addIntervalsForSpills(const LiveInterval &li,
 
       // Update spill slot weight.
       if (!isReMat)
-        SSWeight += getSpillWeight(false, true, isMem, loopDepth);
+        SSWeight += getSpillWeight(false, true, loopDepth);
     }
     Id = RestoreMBBs.find_next(Id);
   }
index 24e7fdefc7bd5797a88cd61214cc7cf042fc691e..ed295ac00713cca457706d7008d7c54caa8b22d7 100644 (file)
@@ -2145,7 +2145,6 @@ bool SimpleRegisterCoalescing::runOnMachineFunction(MachineFunction &fn) {
         mii = mbbi->erase(mii);
         ++numPeep;
       } else if (!isMove || !TurnCopyIntoImpDef(mii, mbb, DstReg, SrcReg)) {
-        bool isMem = mii->getDesc().mayLoad() || mii->getDesc().mayStore();
         SmallSet<unsigned, 4> UniqueUses;
         for (unsigned i = 0, e = mii->getNumOperands(); i != e; ++i) {
           const MachineOperand &mop = mii->getOperand(i);
@@ -2158,7 +2157,7 @@ bool SimpleRegisterCoalescing::runOnMachineFunction(MachineFunction &fn) {
               continue;
             LiveInterval &RegInt = li_->getInterval(reg);
             RegInt.weight +=
-              li_->getSpillWeight(mop.isDef(), mop.isUse(), isMem, loopDepth);
+              li_->getSpillWeight(mop.isDef(), mop.isUse(), loopDepth);
             UniqueUses.insert(reg);
           }
         }
index 774e7243fd37564639f472077d701d786a77e1c0..9d1d324fcec3e18c1813b1754b77f619e9496bb9 100644 (file)
@@ -1,5 +1,5 @@
 ; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 -stats -realign-stack=0 |&\
-; RUN:     grep {asm-printer} | grep 31
+; RUN:     grep {asm-printer} | grep 32
 
 target datalayout = "e-p:32:32"
 define void @foo(i32* %mc, i32* %bp, i32* %ms, i32* %xmb, i32* %mpp, i32* %tpmm, i32* %ip, i32* %tpim, i32* %dpp, i32* %tpdm, i32* %bpi, i32 %M) nounwind {
index 5a8e4e4a66818a8ae42f2ddaa6e2828ff005aab0..07e926a3ee29b464771070ff227be4ed74b4c0e7 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | llc -march=x86 -x86-asm-syntax=att | grep movl | count 4
+; RUN: llvm-as < %s | llc -march=x86 -x86-asm-syntax=att | grep movl | count 2
 
        %struct.double_int = type { i64, i64 }
        %struct.tree_common = type <{ i8, [3 x i8] }>
index 1e887898f657df61d478059aa802ef4bc8ca5b9e..c3b4a257353a01ff7b0be37c345ea44263f5ab20 100644 (file)
@@ -1,5 +1,5 @@
 ; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim | grep movss | count 1
-; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim -stats |& grep {Number of re-materialization} | grep 2
+; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim -stats |& grep {Number of re-materialization} | grep 1
 
        %struct..0objc_object = type opaque
        %struct.OhBoy = type {  }