* Prune #includes
authorChris Lattner <sabre@nondot.org>
Sun, 3 Feb 2002 07:46:01 +0000 (07:46 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 3 Feb 2002 07:46:01 +0000 (07:46 +0000)
* Remove MachineCodeFor(Method|VMInstr) code to their own .cpp files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1649 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/MachineInstr.cpp

index ccb52c2c981988424246466d957d8f53e826a227..bb22008f952e8b5e4d47ebef21ed57fd12b8b91c 100644 (file)
 //     7/2/01   -  Vikram Adve  -  Created
 //**************************************************************************/
 
-
 #include "llvm/CodeGen/MachineInstr.h"
-#include "llvm/Target/MachineFrameInfo.h"
-#include "llvm/Target/MachineRegInfo.h"
-#include "llvm/Target/MachineCacheInfo.h"
-#include "llvm/Method.h"
-#include "llvm/iOther.h"
-#include "llvm/Instruction.h"
+#include "llvm/Value.h"
 #include <iostream>
 using std::cerr;
 
-AnnotationID MachineCodeForMethod::AID(
-                 AnnotationManager::getID("MachineCodeForMethodAnnotation"));
-
 
 //************************ Class Implementations **************************/
 
@@ -188,252 +179,3 @@ std::ostream &operator<<(std::ostream &os, const MachineOperand &mop)
   
   return os;
 }
-
-// Align data larger than one L1 cache line on L1 cache line boundaries.
-// Align all smaller data on the next higher 2^x boundary (4, 8, ...).
-//
-// THIS FUNCTION HAS BEEN COPIED FROM EMITASSEMBLY.CPP AND
-// SHOULD BE USED DIRECTLY THERE
-// 
-inline unsigned int
-SizeToAlignment(unsigned int size, const TargetMachine& target)
-{
-  unsigned short cacheLineSize = target.getCacheInfo().getCacheLineSize(1); 
-  if (size > (unsigned) cacheLineSize / 2)
-    return cacheLineSize;
-  else
-    for (unsigned sz=1; /*no condition*/; sz *= 2)
-      if (sz >= size)
-        return sz;
-}
-
-static unsigned int
-ComputeMaxOptionalArgsSize(const TargetMachine& target, const Method* method)
-{
-  const MachineFrameInfo& frameInfo = target.getFrameInfo();
-  
-  unsigned int maxSize = 0;
-  
-  for (Method::const_inst_iterator I=method->inst_begin(),E=method->inst_end();
-       I != E; ++I)
-    if ((*I)->getOpcode() == Instruction::Call)
-      {
-        CallInst* callInst = cast<CallInst>(*I);
-        unsigned int numOperands = callInst->getNumOperands() - 1;
-        int numExtra = (int) numOperands - frameInfo.getNumFixedOutgoingArgs();
-        if (numExtra <= 0)
-          continue;
-        
-        unsigned int sizeForThisCall;
-        if (frameInfo.argsOnStackHaveFixedSize())
-          {
-            int argSize = frameInfo.getSizeOfEachArgOnStack(); 
-            sizeForThisCall = numExtra * (unsigned) argSize;
-          }
-        else
-          {
-            assert(0 && "UNTESTED CODE: Size per stack argument is not fixed on this architecture: use actual arg sizes to compute MaxOptionalArgsSize");
-            sizeForThisCall = 0;
-            for (unsigned i=0; i < numOperands; ++i)
-              sizeForThisCall += target.findOptimalStorageSize(callInst->
-                                                    getOperand(i)->getType());
-          }
-        
-        if (maxSize < sizeForThisCall)
-          maxSize = sizeForThisCall;
-      }
-  
-  return maxSize;
-}
-
-
-/*ctor*/
-MachineCodeForMethod::MachineCodeForMethod(const Method* _M,
-                                           const TargetMachine& target)
-  : Annotation(AID),
-    method(_M), compiledAsLeaf(false), staticStackSize(0),
-    automaticVarsSize(0), regSpillsSize(0),
-    currentOptionalArgsSize(0), maxOptionalArgsSize(0),
-    currentTmpValuesSize(0)
-{
-  maxOptionalArgsSize = ComputeMaxOptionalArgsSize(target, method);
-  staticStackSize = maxOptionalArgsSize +
-                    target.getFrameInfo().getMinStackFrameSize();
-}
-
-int
-MachineCodeForMethod::allocateLocalVar(const TargetMachine& target,
-                                       const Value* val,
-                                       unsigned int size)
-{
-  // Check if we've allocated a stack slot for this value already
-  // 
-  int offset = getOffset(val);
-  if (offset == INVALID_FRAME_OFFSET)
-    {
-      bool growUp;
-      int firstOffset =target.getFrameInfo().getFirstAutomaticVarOffset(*this,
-                                                                       growUp);
-      unsigned char align;
-      if (size == 0)
-        {
-          size  = target.findOptimalStorageSize(val->getType());
-          // align = target.DataLayout.getTypeAlignment(val->getType());
-        }
-      
-      align = SizeToAlignment(size, target);
-          
-      offset = getAutomaticVarsSize();
-      if (! growUp)
-        offset += size; 
-      
-      if (unsigned int mod = offset % align)
-        {
-          offset += align - mod;
-          size   += align - mod;
-        }
-      
-      offset = growUp? firstOffset + offset
-                     : firstOffset - offset;
-      
-      offsets[val] = offset;
-      
-      incrementAutomaticVarsSize(size);
-    }
-  return offset;
-}
-
-int
-MachineCodeForMethod::allocateSpilledValue(const TargetMachine& target,
-                                           const Type* type)
-{
-  unsigned int size  = target.findOptimalStorageSize(type);
-  unsigned char align = target.DataLayout.getTypeAlignment(type);
-  
-  bool growUp;
-  int firstOffset = target.getFrameInfo().getRegSpillAreaOffset(*this, growUp);
-  
-  int offset = getRegSpillsSize();
-  if (! growUp)
-    offset += size; 
-  
-  if (unsigned int mod = offset % align)
-    {
-      offset    += align - mod;
-      size += align - mod;
-    }
-  
-  offset = growUp? firstOffset + offset
-                 : firstOffset - offset;
-  
-  incrementRegSpillsSize(size);
-  
-  return offset;
-}
-
-int
-MachineCodeForMethod::allocateOptionalArg(const TargetMachine& target,
-                                          const Type* type)
-{
-  const MachineFrameInfo& frameInfo = target.getFrameInfo();
-  
-  int size = MAXINT;
-  if (frameInfo.argsOnStackHaveFixedSize())
-    size = frameInfo.getSizeOfEachArgOnStack(); 
-  else
-    {
-      size = target.findOptimalStorageSize(type);
-      assert(0 && "UNTESTED CODE: Size per stack argument is not fixed on this architecture: use actual argument sizes for computing optional arg offsets");
-    }
-  unsigned char align = target.DataLayout.getTypeAlignment(type);
-  
-  bool growUp;
-  int firstOffset = frameInfo.getFirstOptionalOutgoingArgOffset(*this, growUp);
-  
-  int offset = getCurrentOptionalArgsSize();
-  if (! growUp)
-    offset += size; 
-  
-  if (unsigned int mod = offset % align)
-    {
-      offset += align - mod;
-      size   += align - mod;
-    }
-  
-  offset = growUp? firstOffset + offset
-                 : firstOffset - offset;
-  
-  incrementCurrentOptionalArgsSize(size);
-  
-  return offset;
-}
-
-void
-MachineCodeForMethod::resetOptionalArgs(const TargetMachine& target)
-{
-  currentOptionalArgsSize = 0;
-}
-
-int
-MachineCodeForMethod::pushTempValue(const TargetMachine& target,
-                                    unsigned int size)
-{
-  // Compute a power-of-2 alignment according to the possible sizes,
-  // but not greater than the alignment of the largest type we support
-  // (currently a double word -- see class TargetData).
-  unsigned char align = 1;
-  for (; align < size && align < target.DataLayout.getDoubleAlignment();
-         align = 2*align)
-    ;
-  
-  bool growUp;
-  int firstTmpOffset = target.getFrameInfo().getTmpAreaOffset(*this, growUp);
-  
-  int offset = currentTmpValuesSize;
-  if (! growUp)
-    offset += size; 
-  
-  if (unsigned int mod = offset % align)
-    {
-      offset += align - mod;
-      size   += align - mod;
-    }
-  
-  offset = growUp ? firstTmpOffset + offset : firstTmpOffset - offset;
-  
-  currentTmpValuesSize += size;
-  return offset;
-}
-
-void
-MachineCodeForMethod::popAllTempValues(const TargetMachine& target)
-{
-  currentTmpValuesSize = 0;
-}
-
-int
-MachineCodeForMethod::getOffset(const Value* val) const
-{
-  std::hash_map<const Value*, int>::const_iterator pair = offsets.find(val);
-  return (pair == offsets.end())? INVALID_FRAME_OFFSET : pair->second;
-}
-
-void
-MachineCodeForMethod::dump() const
-{
-  cerr << "\n" << method->getReturnType()
-       << " \"" << method->getName() << "\"\n";
-  
-  for (Method::const_iterator BI = method->begin(); BI != method->end(); ++BI)
-    {
-      BasicBlock* bb = *BI;
-      cerr << "\n"
-          << (bb->hasName()? bb->getName() : "Label")
-          << " (" << bb << ")" << ":\n";
-      
-      MachineCodeForBasicBlock& mvec = bb->getMachineInstrVec();
-      for (unsigned i=0; i < mvec.size(); i++)
-       cerr << "\t" << *mvec[i];
-    } 
-  cerr << "\nEnd method \"" << method->getName() << "\"\n\n";
-}