diff options
4 files changed, 30 insertions, 24 deletions
| diff --git a/llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp b/llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp index 4e36b070b41..34834826bc3 100644 --- a/llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp +++ b/llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp @@ -7,7 +7,7 @@  #include "Support/StringExtras.h"  #include "Support/STLExtras.h"  #include <iostream> -#include <swig.h> +//#include <swig.h>  #include "llvm/iOperators.h"  #include "llvm/iOther.h"  #include "llvm/iPHINode.h" @@ -16,7 +16,7 @@  #include "llvm/Type.h"  #include "llvm/CodeGen/MachineCodeForInstruction.h"  #include "llvm/CodeGen/MachineInstr.h" -#include "llvm/Target/MachineSchedInfo.h" +#include "llvm/Target/TargetSchedInfo.h"  #define UNIDELAY 1  #define min(a, b)       ((a) < (b) ? (a) : (b)) @@ -104,7 +104,8 @@ bool isDefinition(const Instruction* I)  void ModuloSchedGraph::addDefUseEdges(const BasicBlock* bb)  {    //collect def instructions, store them in vector -  const MachineInstrInfo& mii = target.getInstrInfo(); +  //  const TargetInstrInfo& mii = target.getInstrInfo(); +  const TargetInstrInfo& mii = target.getInstrInfo();    typedef std::vector<ModuloSchedGraphNode*> DefVec;    DefVec defVec; @@ -274,7 +275,7 @@ void ModuloSchedGraph::buildNodesforBB  (const TargetMachine& target,  				      RegToRefVecMap& regToRefVecMap,  				      ValueToDefVecMap& valueToDefVecMap)  { -  //const MachineInstrInfo& mii=target.getInstrInfo(); +  //const TargetInstrInfo& mii=target.getInstrInfo();    //Build graph nodes for each LLVM instruction and gather def/use info.    //Do both together in a single pass over all machine instructions. @@ -889,7 +890,7 @@ void ModuloSchedGraph::buildGraph (const TargetMachine& target)      this->dump(bb);    if(!isLoop(bb)){ -    modSched_os <<" dumping non-loop BB:"<<endl; +    modSched_os <<" dumping non-loop BB:\n";      dump(bb);    }    if( isLoop(bb)) @@ -1109,7 +1110,7 @@ void  ModuloSchedGraph::addResourceUsage(std::vector<pair<int,int> >& ruVec, int  }  void ModuloSchedGraph::dumpResourceUsage(std::vector< pair<int,int> > &ru)  { -  MachineSchedInfo& msi = (MachineSchedInfo&)target.getSchedInfo(); +  TargetSchedInfo& msi = (TargetSchedInfo&)target.getSchedInfo();    std::vector<pair<int,int> > resourceNumVector = msi.resourceNumVector;    modSched_os <<"resourceID\t"<<"resourceNum"<<"\n"; @@ -1128,8 +1129,8 @@ void ModuloSchedGraph::dumpResourceUsage(std::vector< pair<int,int> > &ru)  int ModuloSchedGraph::computeResII(const BasicBlock* bb)  { -  const MachineInstrInfo& mii = target.getInstrInfo(); -  const MachineSchedInfo& msi = target.getSchedInfo(); +  const TargetInstrInfo& mii = target.getInstrInfo(); +  const TargetSchedInfo& msi = target.getSchedInfo();    int ResII;    std::vector<pair<int,int> > resourceUsage; //pair<int resourceid, int resourceUsageTimes_in_the_whole_block> diff --git a/llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.h b/llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.h index 07fde3ce1c5..c411d14e78d 100644 --- a/llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.h +++ b/llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.h @@ -13,6 +13,7 @@  #include "../InstrSched/SchedGraphCommon.h"  #include "llvm/Instruction.h"  #include "llvm/Target/TargetMachine.h" +#include "llvm/Target/TargetInstrInfo.h"  #include <iostream>  using std::pair; diff --git a/llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.cpp b/llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.cpp index 3f4002abe2b..08cea9dce9f 100644 --- a/llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.cpp +++ b/llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.cpp @@ -8,9 +8,10 @@  #include "llvm/CodeGen/MachineInstr.h"  #include "llvm/CodeGen/MachineCodeForInstruction.h" -#include "llvm/CodeGen/MachineCodeForBasicBlock.h" -#include "llvm/CodeGen/MachineCodeForMethod.h" -#include "llvm/Analysis/LiveVar/FunctionLiveVarInfo.h" // FIXME: Remove when modularized better +//#include "llvm/CodeGen/MachineCodeForBasicBlock.h" +//#include "llvm/CodeGen/MachineCodeForMethod.h" +#include "llvm/CodeGen/MachineFunction.h" +//#include "llvm/Analysis/LiveVar/FunctionLiveVarInfo.h" // FIXME: Remove when modularized better  #include "llvm/Target/TargetMachine.h"  #include "llvm/BasicBlock.h"  #include "llvm/Instruction.h" @@ -18,13 +19,13 @@  #include <algorithm>  #include "ModuloSchedGraph.h"  #include "ModuloScheduling.h" -#include "llvm/Target/MachineSchedInfo.h" +#include "llvm/Target/TargetSchedInfo.h"  #include "llvm/BasicBlock.h"  #include "llvm/iTerminators.h"  #include "llvm/iPHINode.h"  #include "llvm/Constants.h"  #include <iostream> -#include <swig.h> +//#include <swig.h>  #include <fstream>  #include "llvm/CodeGen/InstrSelection.h" @@ -67,7 +68,7 @@ void ModuloScheduling::instrScheduling(){      modSched_os<<"*************************computing modulo schedule ************************\n"; -  const MachineSchedInfo& msi=target.getSchedInfo(); +  const TargetSchedInfo& msi=target.getSchedInfo();    //number of issue slots in the in each cycle    int numIssueSlots=msi.maxNumIssueTotal; @@ -137,13 +138,13 @@ void ModuloScheduling::instrScheduling(){  }      //clear memory from the last round and initialize if necessary -void ModuloScheduling::clearInitMem(const MachineSchedInfo& msi){ +void ModuloScheduling::clearInitMem(const TargetSchedInfo& msi){    unsigned numIssueSlots = msi.maxNumIssueTotal;    //clear nodeScheduled from the last round    if( ModuloSchedDebugLevel >= ModuloSched_PrintScheduleProcess){ -    modSched_os<< "***** new round  with II= "<<II<<" *******************"<<endl; +    modSched_os<< "***** new round  with II= "<<II<<" *******************"<<"\n";      modSched_os<< " **************clear the vector nodeScheduled**************** \n";    }    nodeScheduled.clear(); @@ -602,7 +603,7 @@ Instruction*  ModuloScheduling::cloneInstSetMemory(Instruction* orn) {  bool ModuloScheduling::ScheduleNode(ModuloSchedGraphNode* node,unsigned start, unsigned end, NodeVec& nodeScheduled)  { -  const MachineSchedInfo& msi=target.getSchedInfo(); +  const TargetSchedInfo& msi=target.getSchedInfo();    unsigned int numIssueSlots=msi.maxNumIssueTotal;    if( ModuloSchedDebugLevel >= ModuloSched_PrintScheduleProcess) @@ -620,7 +621,7 @@ bool ModuloScheduling::ScheduleNode(ModuloSchedGraphNode* node,unsigned start, u        const Instruction* instr=node->getInst();        MachineCodeForInstruction& tempMvec=  MachineCodeForInstruction::get(instr);        bool resourceConflict=false; -      const MachineInstrInfo &mii=msi.getInstrInfo(); +      const TargetInstrInfo &mii=msi.getInstrInfo();        if(coreSchedule.size() < core_i+1 || !coreSchedule[core_i][core_j]){  	//this->dumpResourceUsageTable(); @@ -784,10 +785,10 @@ void ModuloScheduling::dumpResourceUsageTable(){  //-----------------------------------------------------------------------  void ModuloScheduling::dumpSchedule(std::vector< std::vector<ModuloSchedGraphNode*> > thisSchedule){ -  const MachineSchedInfo& msi=target.getSchedInfo(); +  const TargetSchedInfo& msi=target.getSchedInfo();    unsigned numIssueSlots=msi.maxNumIssueTotal;    for(unsigned i=0;i< numIssueSlots;i++) -      modSched_os <<"\t#"; +    modSched_os <<"\t#";    modSched_os<<"\n";    for(unsigned i=0;i < thisSchedule.size();i++)      { @@ -799,7 +800,7 @@ void ModuloScheduling::dumpSchedule(std::vector< std::vector<ModuloSchedGraphNod  	  modSched_os<<"\t";        modSched_os<<"\n";      } - +    } @@ -812,7 +813,7 @@ void ModuloScheduling::dumpSchedule(std::vector< std::vector<ModuloSchedGraphNod  void ModuloScheduling::dumpScheduling(){    modSched_os<<"dump schedule:"<<"\n"; -  const MachineSchedInfo& msi=target.getSchedInfo(); +  const TargetSchedInfo& msi=target.getSchedInfo();    unsigned numIssueSlots=msi.maxNumIssueTotal;    for(unsigned i=0;i< numIssueSlots;i++)      modSched_os <<"\t#"; @@ -880,7 +881,7 @@ bool ModuloSchedulingPass::runOnFunction(Function &F)    if(ModuloSchedDebugLevel>= ModuloSched_PrintSchedule){      modSched_fb.open("moduloSchedDebugInfo.output", ios::out); -    modSched_os<<"******************Modula Scheduling debug information*************************"<<endl; +    modSched_os<<"******************Modula Scheduling debug information*************************"<<"\n ";    }    ModuloSchedGraphSet* graphSet = new ModuloSchedGraphSet(&F,target); diff --git a/llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.h b/llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.h index 9f9fcaa791d..713ad22ab6e 100644 --- a/llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.h +++ b/llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.h @@ -11,6 +11,9 @@  #include "ModuloSchedGraph.h"  #include <iostream> +#include <vector> + +using std::vector;  class ModuloScheduling:NonCopyable {   private: @@ -82,7 +85,7 @@ public:    //*******************internel functions*******************************  private:    //clear memory from the last round and initialize if necessary -  void clearInitMem(const MachineSchedInfo& ); +  void clearInitMem(const TargetSchedInfo& );    //compute schedule and coreSchedule with the current II    bool computeSchedule(); | 

