[llvm-commits] CVS: llvm/lib/Target/X86/X86ISelPattern.cpp

Chris Lattner lattner at cs.uiuc.edu
Tue Jan 11 14:29:27 PST 2005



Changes in directory llvm/lib/Target/X86:

X86ISelPattern.cpp updated: 1.34 -> 1.35
---
Log message:

Treat int constants as not requiring a register, since they are almost always
folded into an instruction.


---
Diffs of the changes:  (+22 -14)

Index: llvm/lib/Target/X86/X86ISelPattern.cpp
diff -u llvm/lib/Target/X86/X86ISelPattern.cpp:1.34 llvm/lib/Target/X86/X86ISelPattern.cpp:1.35
--- llvm/lib/Target/X86/X86ISelPattern.cpp:1.34	Tue Jan 11 15:19:59 2005
+++ llvm/lib/Target/X86/X86ISelPattern.cpp	Tue Jan 11 16:29:12 2005
@@ -388,22 +388,30 @@
   // FIXME: Should operations like CALL (which clobber lots o regs) have a
   // higher fixed cost??
 
-  if (N->getNumOperands() == 0)
-    return Result = 1;
-
-  unsigned MaxRegUse = 0;
-  unsigned NumExtraMaxRegUsers = 0;
-  for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) {
-    unsigned Regs = ComputeRegPressure(N->getOperand(i));
-    if (Regs > MaxRegUse) {
-      MaxRegUse = Regs;
-      NumExtraMaxRegUsers = 0;
-    } else if (Regs == MaxRegUse) {
-      ++NumExtraMaxRegUsers;
+  if (N->getNumOperands() == 0) {
+    Result = 1;
+  } else {
+    unsigned MaxRegUse = 0;
+    unsigned NumExtraMaxRegUsers = 0;
+    for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) {
+      unsigned Regs;
+      if (N->getOperand(i).getOpcode() == ISD::Constant)
+        Regs = 0;
+      else
+        Regs = ComputeRegPressure(N->getOperand(i));
+      if (Regs > MaxRegUse) {
+        MaxRegUse = Regs;
+        NumExtraMaxRegUsers = 0;
+      } else if (Regs == MaxRegUse &&
+                 N->getOperand(i).getValueType() != MVT::Other) {
+        ++NumExtraMaxRegUsers;
+      }
     }
-  }
   
-  return Result = MaxRegUse+NumExtraMaxRegUsers;
+    Result = MaxRegUse+NumExtraMaxRegUsers;
+  }
+  std::cerr << " WEIGHT: " << Result << " ";  N->dump(); std::cerr << "\n";
+  return Result;
 }
 
 /// SelectAddress - Add the specified node to the specified addressing mode,






More information about the llvm-commits mailing list