Add references to delay slot filler pass.
authorBrian Gaeke <gaeke@uiuc.edu>
Tue, 6 Apr 2004 23:21:24 +0000 (23:21 +0000)
committerBrian Gaeke <gaeke@uiuc.edu>
Tue, 6 Apr 2004 23:21:24 +0000 (23:21 +0000)
Fill in addPassesToJITCompile method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12729 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Sparc/Sparc.h
lib/Target/Sparc/SparcTargetMachine.cpp
lib/Target/SparcV8/SparcV8.h
lib/Target/SparcV8/SparcV8TargetMachine.cpp

index 1cade3cd85495aa46e8f3ea4b33d63a6d069759c..44ee15aeae84ceeb37c764d32a53d05b7e50972d 100644 (file)
@@ -25,6 +25,7 @@ namespace llvm {
   FunctionPass *createSparcV8SimpleInstructionSelector(TargetMachine &TM);
   FunctionPass *createSparcV8CodePrinterPass(std::ostream &OS,
                                              TargetMachine &TM);
+  FunctionPass *createSparcV8DelaySlotFillerPass(TargetMachine &TM);
 
 } // end namespace llvm;
 
index 1b5b80abdbc9ece975f559c84ed251c9de328514..9cd97ee496bed9c8ec9e5225bc7c9c918ceeb931 100644 (file)
@@ -54,6 +54,12 @@ bool SparcV8TargetMachine::addPassesToEmitAssembly(PassManager &PM,
   if (PrintMachineCode)
     PM.add(createMachineFunctionPrinterPass(&std::cerr));
 
+  PM.add(createSparcV8DelaySlotFillerPass(*this));
+
+  // Print machine instructions after filling delay slots.
+  if (PrintMachineCode)
+    PM.add(createMachineFunctionPrinterPass(&std::cerr));
+
   // Output assembly language.
   PM.add(createSparcV8CodePrinterPass(Out, *this));
 
@@ -66,7 +72,23 @@ bool SparcV8TargetMachine::addPassesToEmitAssembly(PassManager &PM,
 /// implement a fast dynamic compiler for this target.
 ///
 void SparcV8JITInfo::addPassesToJITCompile(FunctionPassManager &PM) {
-  // <insert instruction selector passes here>
+  PM.add(createSparcV8SimpleInstructionSelector(TM));
+
+  // Print machine instructions as they were initially generated.
+  if (PrintMachineCode)
+    PM.add(createMachineFunctionPrinterPass(&std::cerr));
+
   PM.add(createRegisterAllocator());
   PM.add(createPrologEpilogCodeInserter());
+
+  // Print machine instructions after register allocation and prolog/epilog
+  // insertion.
+  if (PrintMachineCode)
+    PM.add(createMachineFunctionPrinterPass(&std::cerr));
+
+  PM.add(createSparcV8DelaySlotFillerPass(TM));
+
+  // Print machine instructions after filling delay slots.
+  if (PrintMachineCode)
+    PM.add(createMachineFunctionPrinterPass(&std::cerr));
 }
index 1cade3cd85495aa46e8f3ea4b33d63a6d069759c..44ee15aeae84ceeb37c764d32a53d05b7e50972d 100644 (file)
@@ -25,6 +25,7 @@ namespace llvm {
   FunctionPass *createSparcV8SimpleInstructionSelector(TargetMachine &TM);
   FunctionPass *createSparcV8CodePrinterPass(std::ostream &OS,
                                              TargetMachine &TM);
+  FunctionPass *createSparcV8DelaySlotFillerPass(TargetMachine &TM);
 
 } // end namespace llvm;
 
index 1b5b80abdbc9ece975f559c84ed251c9de328514..9cd97ee496bed9c8ec9e5225bc7c9c918ceeb931 100644 (file)
@@ -54,6 +54,12 @@ bool SparcV8TargetMachine::addPassesToEmitAssembly(PassManager &PM,
   if (PrintMachineCode)
     PM.add(createMachineFunctionPrinterPass(&std::cerr));
 
+  PM.add(createSparcV8DelaySlotFillerPass(*this));
+
+  // Print machine instructions after filling delay slots.
+  if (PrintMachineCode)
+    PM.add(createMachineFunctionPrinterPass(&std::cerr));
+
   // Output assembly language.
   PM.add(createSparcV8CodePrinterPass(Out, *this));
 
@@ -66,7 +72,23 @@ bool SparcV8TargetMachine::addPassesToEmitAssembly(PassManager &PM,
 /// implement a fast dynamic compiler for this target.
 ///
 void SparcV8JITInfo::addPassesToJITCompile(FunctionPassManager &PM) {
-  // <insert instruction selector passes here>
+  PM.add(createSparcV8SimpleInstructionSelector(TM));
+
+  // Print machine instructions as they were initially generated.
+  if (PrintMachineCode)
+    PM.add(createMachineFunctionPrinterPass(&std::cerr));
+
   PM.add(createRegisterAllocator());
   PM.add(createPrologEpilogCodeInserter());
+
+  // Print machine instructions after register allocation and prolog/epilog
+  // insertion.
+  if (PrintMachineCode)
+    PM.add(createMachineFunctionPrinterPass(&std::cerr));
+
+  PM.add(createSparcV8DelaySlotFillerPass(TM));
+
+  // Print machine instructions after filling delay slots.
+  if (PrintMachineCode)
+    PM.add(createMachineFunctionPrinterPass(&std::cerr));
 }