blob: 219d892d3143397bf117c62fb8fc00264405c6b0 [file] [log] [blame]
Chris Lattnercf3056d2003-10-13 03:32:08 +00001//===-- ModuloScheduling.cpp - Software Pipeling Approach - SMS -----------===//
John Criswellb576c942003-10-20 19:43:21 +00002//
3// The LLVM Compiler Infrastructure
4//
5// This file was developed by the LLVM research group and is distributed under
6// the University of Illinois Open Source License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
Guochun Shif1c154f2003-03-27 17:57:44 +00009//
Tanya Lattner4f839cc2003-08-28 17:12:14 +000010// The is a software pipelining pass based on the Swing Modulo Scheduling
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000011// algorithm (SMS).
Guochun Shif1c154f2003-03-27 17:57:44 +000012//
13//===----------------------------------------------------------------------===//
14
Misha Brukman8baa01c2003-04-09 21:51:34 +000015#include "ModuloSchedGraph.h"
Tanya Lattner4f839cc2003-08-28 17:12:14 +000016#include "llvm/Function.h"
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000017#include "llvm/Pass.h"
Guochun Shif1c154f2003-03-27 17:57:44 +000018
Brian Gaeked0fde302003-11-11 22:41:34 +000019namespace llvm {
20
Guochun Shif1c154f2003-03-27 17:57:44 +000021namespace {
Tanya Lattner4f839cc2003-08-28 17:12:14 +000022
23 class ModuloScheduling : public FunctionPass {
Guochun Shi8f1d4ab2003-06-08 23:16:07 +000024
Tanya Lattner4f839cc2003-08-28 17:12:14 +000025 public:
26 virtual bool runOnFunction(Function &F);
Guochun Shif1c154f2003-03-27 17:57:44 +000027 };
Guochun Shif1c154f2003-03-27 17:57:44 +000028
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000029 RegisterOpt<ModuloScheduling> X("modulo-sched",
30 "Modulo Scheduling/Software Pipelining");
Guochun Shif1c154f2003-03-27 17:57:44 +000031}
32
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000033/// Create Modulo Scheduling Pass
34///
Tanya Lattner4f839cc2003-08-28 17:12:14 +000035Pass *createModuloSchedPass() {
36 return new ModuloScheduling();
Guochun Shif1c154f2003-03-27 17:57:44 +000037}
Tanya Lattner4f839cc2003-08-28 17:12:14 +000038
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000039/// ModuloScheduling::runOnFunction - main transformation entry point
40///
Tanya Lattner4f839cc2003-08-28 17:12:14 +000041bool ModuloScheduling::runOnFunction(Function &F) {
42 bool Changed = false;
Tanya Lattner4f839cc2003-08-28 17:12:14 +000043 return Changed;
44}
Brian Gaeked0fde302003-11-11 22:41:34 +000045
46} // End llvm namespace