aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/SparcV9/SparcV9TargetMachine.cpp
diff options
context:
space:
mode:
authorTanya Lattner <tonic@nondot.org>2004-11-18 18:38:01 +0000
committerTanya Lattner <tonic@nondot.org>2004-11-18 18:38:01 +0000
commit75e8419e4887a9320bcebedf66b4f1a5f0fd4d36 (patch)
tree706bf26f82b5a250fce2a43cfe8d42e844164564 /lib/Target/SparcV9/SparcV9TargetMachine.cpp
parent18e6c22f05f1b5cfa89bdeed8b407afb9255a6b0 (diff)
Adding option to llc for ModuloScheduling. By default it is turned off.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17959 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/SparcV9/SparcV9TargetMachine.cpp')
-rw-r--r--lib/Target/SparcV9/SparcV9TargetMachine.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/Target/SparcV9/SparcV9TargetMachine.cpp b/lib/Target/SparcV9/SparcV9TargetMachine.cpp
index 3e0e8b931c..f5e19512ba 100644
--- a/lib/Target/SparcV9/SparcV9TargetMachine.cpp
+++ b/lib/Target/SparcV9/SparcV9TargetMachine.cpp
@@ -66,6 +66,9 @@ namespace {
cl::opt<bool> DisableStrip("disable-strip",
cl::desc("Do not strip the LLVM bytecode in executable"));
+
+ cl::opt<bool> EnableModSched("enable-ModSched", cl::desc("Enable modulo scheduling pass instead of local scheduling"));
+
// Register the target.
RegisterTarget<SparcV9TargetMachine> X("sparcv9", " SPARC V9");
}
@@ -192,9 +195,17 @@ SparcV9TargetMachine::addPassesToEmitAssembly(PassManager &PM, std::ostream &Out
PM.add(createSparcV9BurgInstSelector(*this));
- if (!DisableSched)
- PM.add(createInstructionSchedulingWithSSAPass(*this));
+ if(PrintMachineCode)
+ PM.add(createMachineFunctionPrinterPass(&std::cerr, "Before modulo scheduling:\n"));
+ //Use ModuloScheduling if enabled, otherwise use local scheduling if not disabled.
+ if(EnableModSched)
+ PM.add(createModuloSchedulingPass(*this));
+ else {
+ if (!DisableSched)
+ PM.add(createInstructionSchedulingWithSSAPass(*this));
+ }
+
if (PrintMachineCode)
PM.add(createMachineFunctionPrinterPass(&std::cerr, "Before reg alloc:\n"));