diff options
| author | Brian Gaeke <gaeke@uiuc.edu> | 2004-09-30 04:04:47 +0000 |
|---|---|---|
| committer | Brian Gaeke <gaeke@uiuc.edu> | 2004-09-30 04:04:47 +0000 |
| commit | 1f48ef2a9ad00f4b83ea5d37accc72e06acf83fa (patch) | |
| tree | 9be33a9bda579773803249507a57aabd5f4f7315 /llvm/lib/Target/SparcV8/DelaySlotFiller.cpp | |
| parent | c2812121cdc6a6a3837c8a39795987c180fbd07b (diff) | |
| download | bcm5719-llvm-1f48ef2a9ad00f4b83ea5d37accc72e06acf83fa.tar.gz bcm5719-llvm-1f48ef2a9ad00f4b83ea5d37accc72e06acf83fa.zip | |
Use TargetMachine::hasDelaySlot() instead of our old switch statement
to find instrs that have delay slots.
llvm-svn: 16610
Diffstat (limited to 'llvm/lib/Target/SparcV8/DelaySlotFiller.cpp')
| -rw-r--r-- | llvm/lib/Target/SparcV8/DelaySlotFiller.cpp | 51 |
1 files changed, 6 insertions, 45 deletions
diff --git a/llvm/lib/Target/SparcV8/DelaySlotFiller.cpp b/llvm/lib/Target/SparcV8/DelaySlotFiller.cpp index 91995782c30..09937dea26b 100644 --- a/llvm/lib/Target/SparcV8/DelaySlotFiller.cpp +++ b/llvm/lib/Target/SparcV8/DelaySlotFiller.cpp @@ -7,13 +7,15 @@ // //===----------------------------------------------------------------------===// // -// Simple local delay slot filler for SparcV8 machine code +// This is a simple local pass that fills delay slots with NOPs. // //===----------------------------------------------------------------------===// #include "SparcV8.h" #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineInstrBuilder.h" +#include "llvm/Target/TargetMachine.h" +#include "llvm/Target/TargetInstrInfo.h" #include "llvm/ADT/Statistic.h" using namespace llvm; @@ -26,8 +28,9 @@ namespace { /// layout, etc. /// TargetMachine &TM; + const TargetInstrInfo *TII; - Filler (TargetMachine &tm) : TM (tm) { } + Filler (TargetMachine &tm) : TM (tm), TII (tm.getInstrInfo ()) { } virtual const char *getPassName () const { return "SparcV8 Delay Slot Filler"; @@ -52,48 +55,6 @@ FunctionPass *llvm::createSparcV8DelaySlotFillerPass (TargetMachine &tm) { return new Filler (tm); } -static bool hasDelaySlot (unsigned Opcode) { - switch (Opcode) { - case V8::BA: - case V8::BCC: - case V8::BCS: - case V8::BE: - case V8::BG: - case V8::BGE: - case V8::BGU: - case V8::BL: - case V8::BLE: - case V8::BLEU: - case V8::BNE: - case V8::CALL: - case V8::JMPLrr: - case V8::RETL: - case V8::FBA: - case V8::FBN: - case V8::FBU: - case V8::FBG: - case V8::FBUG: - case V8::FBL: - case V8::FBUL: - case V8::FBLG: - case V8::FBNE: - case V8::FBE: - case V8::FBUE: - case V8::FBGE: - case V8::FBUGE: - case V8::FBLE: - case V8::FBULE: - case V8::FBO: - case V8::FCMPS: - case V8::FCMPD: - case V8::FCMPES: - case V8::FCMPED: - return true; - default: - return false; - } -} - /// runOnMachineBasicBlock - Fill in delay slots for the given basic block. /// Currently, we fill delay slots with NOPs. We assume there is only one /// delay slot per delayed instruction. @@ -101,7 +62,7 @@ static bool hasDelaySlot (unsigned Opcode) { bool Filler::runOnMachineBasicBlock (MachineBasicBlock &MBB) { bool Changed = false; for (MachineBasicBlock::iterator I = MBB.begin (); I != MBB.end (); ++I) - if (hasDelaySlot (I->getOpcode ())) { + if (TII->hasDelaySlot (I->getOpcode ())) { MachineBasicBlock::iterator J = I; ++J; BuildMI (MBB, J, V8::NOP, 0); |

