blob: 91ec6c28f55262d154632783a66625ecb6163c90 [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
19namespace {
Tanya Lattner4f839cc2003-08-28 17:12:14 +000020
21 class ModuloScheduling : public FunctionPass {
Guochun Shi8f1d4ab2003-06-08 23:16:07 +000022
Tanya Lattner4f839cc2003-08-28 17:12:14 +000023 public:
24 virtual bool runOnFunction(Function &F);
Guochun Shif1c154f2003-03-27 17:57:44 +000025 };
Guochun Shif1c154f2003-03-27 17:57:44 +000026
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000027 RegisterOpt<ModuloScheduling> X("modulo-sched",
28 "Modulo Scheduling/Software Pipelining");
Guochun Shif1c154f2003-03-27 17:57:44 +000029}
30
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000031/// Create Modulo Scheduling Pass
32///
Tanya Lattner4f839cc2003-08-28 17:12:14 +000033Pass *createModuloSchedPass() {
34 return new ModuloScheduling();
Guochun Shif1c154f2003-03-27 17:57:44 +000035}
Tanya Lattner4f839cc2003-08-28 17:12:14 +000036
Misha Brukmanaa41c3c2003-10-10 17:41:32 +000037/// ModuloScheduling::runOnFunction - main transformation entry point
38///
Tanya Lattner4f839cc2003-08-28 17:12:14 +000039bool ModuloScheduling::runOnFunction(Function &F) {
40 bool Changed = false;
Tanya Lattner4f839cc2003-08-28 17:12:14 +000041 return Changed;
42}