LLVM API Documentation

ModuloScheduling.cpp File Reference

#include "ModuloScheduling.h"
#include "llvm/Constants.h"
#include "llvm/Instructions.h"
#include "llvm/Function.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/Support/CFG.h"
#include "llvm/Target/TargetSchedInfo.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/GraphWriter.h"
#include "llvm/ADT/SCCIterator.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Support/Timer.h"
#include <cmath>
#include <algorithm>
#include <fstream>
#include <sstream>
#include <utility>
#include <vector>
#include "../MachineCodeForInstruction.h"
#include "../SparcV9TmpInstr.h"
#include "../SparcV9Internals.h"
#include "../SparcV9RegisterInfo.h"
#include <unistd.h>

Include dependency graph for ModuloScheduling.cpp:

Go to the source code of this file.

Namespaces

namespace  llvm

Classes

struct  llvm::DOTGraphTraits< MSchedGraph * >

Defines

#define DEBUG_TYPE   "ModuloSched"
#define TIME_REGION(VARNAME, DESC)   NamedRegionTimer VARNAME(DESC)

Functions

FunctionPassllvm::createModuloSchedulingPass (TargetMachine &targ)
template<typename GraphType>
static void WriteGraphToFile (std::ostream &O, const std::string &GraphName, const GraphType &GT)
void dumpIntersection (std::set< MSchedGraphNode * > &IntersectCurrent)

Variables

Statistic llvm::ValidLoops ("modulosched-validLoops","Number of candidate loops modulo-scheduled")
Statistic llvm::JumboBB ("modulosched-jumboBB","Basic Blocks with more then 100 instructions")
Statistic llvm::LoopsWithCalls ("modulosched-loopCalls","Loops with calls")
Statistic llvm::LoopsWithCondMov ("modulosched-loopCondMov","Loops with conditional moves")
Statistic llvm::InvalidLoops ("modulosched-invalidLoops","Loops with unknown trip counts or loop invariant trip counts")
Statistic llvm::SingleBBLoops ("modulosched-singeBBLoops","Number of single basic block loops")
Statistic llvm::MSLoops ("modulosched-schedLoops","Number of loops successfully modulo-scheduled")
Statistic llvm::NoSched ("modulosched-noSched","No schedule")
Statistic llvm::SameStage ("modulosched-sameStage","Max stage is 0")
Statistic llvm::ResourceConstraint ("modulosched-resourceConstraint","Loops constrained by resources")
Statistic llvm::RecurrenceConstraint ("modulosched-recurrenceConstraint","Loops constrained by recurrences")
Statistic llvm::FinalIISum ("modulosched-finalIISum","Sum of all final II")
Statistic llvm::IISum ("modulosched-IISum","Sum of all theoretical II")
int CircCount


Define Documentation

#define DEBUG_TYPE   "ModuloSched"

Definition at line 15 of file ModuloScheduling.cpp.

#define TIME_REGION ( VARNAME,
DESC   )     NamedRegionTimer VARNAME(DESC)

Definition at line 68 of file ModuloScheduling.cpp.


Function Documentation

void dumpIntersection ( std::set< MSchedGraphNode * > &  IntersectCurrent  ) 

Definition at line 1562 of file ModuloScheduling.cpp.

References E.

template<typename GraphType>
static void WriteGraphToFile ( std::ostream &  O,
const std::string &  GraphName,
const GraphType &  GT 
) [static]

Definition at line 53 of file ModuloScheduling.cpp.

References F, Filename, and llvm::WriteGraph().

Referenced by llvm::ModuloSchedulingPass::runOnFunction().


Variable Documentation

int CircCount

Definition at line 907 of file ModuloScheduling.cpp.