26 #ifndef LLVM_CODEGEN_DFAPACKETIZER_H 27 #define LLVM_CODEGEN_DFAPACKETIZER_H 40 class DefaultVLIWScheduler;
41 class InstrItineraryData;
42 class MachineFunction;
44 class MachineLoopInfo;
47 class TargetInstrInfo;
69 #define DFA_MAX_RESTERMS 4 // The max # of AND'ed resource terms. 70 #define DFA_MAX_RESOURCES 16 // The max # of resource bits in one term. 75 #define DFA_TBLTYPE "int64_t" // For generating DFAStateInputTable. 80 using UnsignPair = std::pair<unsigned, DFAInput>;
85 const unsigned *DFAStateEntryTable;
91 void ReadTable(
unsigned state);
166 CurrentPacketMIs.push_back(&MI);
210 void addMutation(std::unique_ptr<ScheduleDAGMutation>
Mutation);
222 #endif // LLVM_CODEGEN_DFAPACKETIZER_H std::vector< MachineInstr * > CurrentPacketMIs
virtual void initPacketizerState()
This class represents lattice values for constants.
DFAInput getInsnInput(unsigned InsnClass)
Describe properties that are true of each instruction in the target description file.
virtual bool isLegalToPruneDependencies(SUnit *SUI, SUnit *SUJ)
virtual bool ignorePseudoInstruction(const MachineInstr &I, const MachineBasicBlock *MBB)
std::map< MachineInstr *, SUnit * > MIToSUnit
A description of a memory reference used in the backend.
DFAPacketizer * ResourceTracker
virtual MachineBasicBlock::iterator addToPacket(MachineInstr &MI)
Itinerary data supplied by a subtarget to be used by a target.
TargetInstrInfo - Interface to description of machine instruction set.
const InstrItineraryData * getInstrItins() const
virtual bool shouldAddToPacket(const MachineInstr &MI)
virtual bool isSoloInstruction(const MachineInstr &MI)
const TargetInstrInfo * TII
bool canReserveResources(const MCInstrDesc *MID)
virtual bool isLegalToPacketizeTogether(SUnit *SUI, SUnit *SUJ)
Representation of each machine instruction.
static cl::opt< bool > UseTBAA("use-tbaa-in-sched-mi", cl::Hidden, cl::init(true), cl::desc("Enable use of TBAA during MI DAG construction"))
DFAPacketizer * getResourceTracker()
DFAPacketizer(const InstrItineraryData *I, const DFAStateInput(*SIT)[2], const unsigned *SET)
DefaultVLIWScheduler * VLIWScheduler
Scheduling unit. This is a node in the scheduling DAG.
void reserveResources(const MCInstrDesc *MID)