blob: 5b6fb095a3df55d3c0c756385f813c002f5dc352 [file] [log] [blame]
Tanya Lattner4f839cc2003-08-28 17:12:14 +00001//===-- ModuloScheduling.cpp - Software Pipeling Approach - SMS --*- C++ -*--=//
Guochun Shif1c154f2003-03-27 17:57:44 +00002//
Tanya Lattner4f839cc2003-08-28 17:12:14 +00003// The is a software pipelining pass based on the Swing Modulo Scheduling
Misha Brukmanaa41c3c2003-10-10 17:41:32 +00004// algorithm (SMS).
Guochun Shif1c154f2003-03-27 17:57:44 +00005//
6//===----------------------------------------------------------------------===//
7
Misha Brukman8baa01c2003-04-09 21:51:34 +00008#include "ModuloSchedGraph.h"
Tanya Lattner4f839cc2003-08-28 17:12:14 +00009#include "llvm/Function.h"
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000010#include "llvm/Pass.h"
Guochun Shif1c154f2003-03-27 17:57:44 +000011
12namespace {
Tanya Lattner4f839cc2003-08-28 17:12:14 +000013
14 class ModuloScheduling : public FunctionPass {
Guochun Shi8f1d4ab2003-06-08 23:16:07 +000015
Tanya Lattner4f839cc2003-08-28 17:12:14 +000016 public:
17 virtual bool runOnFunction(Function &F);
Guochun Shif1c154f2003-03-27 17:57:44 +000018 };
Guochun Shif1c154f2003-03-27 17:57:44 +000019
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000020 RegisterOpt<ModuloScheduling> X("modulo-sched",
21 "Modulo Scheduling/Software Pipelining");
Guochun Shif1c154f2003-03-27 17:57:44 +000022}
23
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000024/// Create Modulo Scheduling Pass
25///
Tanya Lattner4f839cc2003-08-28 17:12:14 +000026Pass *createModuloSchedPass() {
27 return new ModuloScheduling();
Guochun Shif1c154f2003-03-27 17:57:44 +000028}
Tanya Lattner4f839cc2003-08-28 17:12:14 +000029
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000030/// ModuloScheduling::runOnFunction - main transformation entry point
31///
Tanya Lattner4f839cc2003-08-28 17:12:14 +000032bool ModuloScheduling::runOnFunction(Function &F) {
33 bool Changed = false;
Tanya Lattner4f839cc2003-08-28 17:12:14 +000034 return Changed;
35}