26 #ifndef LLVM_CODEGEN_DFAPACKETIZER_H
27 #define LLVM_CODEGEN_DFAPACKETIZER_H
37 class MachineLoopInfo;
38 class MachineDominatorTree;
39 class InstrItineraryData;
40 class DefaultVLIWScheduler;
45 typedef std::pair<unsigned, unsigned> UnsignPair;
48 const int (*DFAStateInputTable)[2];
49 const unsigned *DFAStateEntryTable;
55 void ReadTable(
unsigned int state);
bool canReserveResources(const llvm::MCInstrDesc *MID)
std::vector< MachineInstr * > CurrentPacketMIs
virtual void initPacketizerState()
virtual bool isLegalToPruneDependencies(SUnit *SUI, SUnit *SUJ)
virtual bool ignorePseudoInstruction(MachineInstr *I, MachineBasicBlock *MBB)
std::map< MachineInstr *, SUnit * > MIToSUnit
const InstrItineraryData * getInstrItins() const
DFAPacketizer * ResourceTracker
void reserveResources(const llvm::MCInstrDesc *MID)
bundle_iterator< MachineInstr, instr_iterator > iterator
const TargetInstrInfo * TII
virtual bool isLegalToPacketizeTogether(SUnit *SUI, SUnit *SUJ)
DFAPacketizer(const InstrItineraryData *I, const int(*SIT)[2], const unsigned *SET)
void endPacket(MachineBasicBlock *MBB, MachineInstr *MI)
virtual bool isSoloInstruction(MachineInstr *MI)
VLIWPacketizerList(MachineFunction &MF, MachineLoopInfo &MLI, MachineDominatorTree &MDT, bool IsPostRA)
DFAPacketizer * getResourceTracker()
virtual ~VLIWPacketizerList()
void PacketizeMIs(MachineBasicBlock *MBB, MachineBasicBlock::iterator BeginItr, MachineBasicBlock::iterator EndItr)
const MachineFunction & MF
DefaultVLIWScheduler * VLIWScheduler
SUnit - Scheduling unit. This is a node in the scheduling DAG.
virtual MachineBasicBlock::iterator addToPacket(MachineInstr *MI)