1 #ifndef HEXAGONVLIWPACKETIZER_H
2 #define HEXAGONVLIWPACKETIZER_H
12 std::vector<MachineInstr*> OldPacketMIs;
15 bool PromotedToDotNew;
18 bool GlueAllocframeStore;
21 bool GlueToNewValueJump;
29 bool FoundSequentialDependence;
32 std::vector<MachineInstr*> IgnoreDepMIs;
105 return PromotedToDotNew;
116 #endif // HEXAGONVLIWPACKETIZER_H
bool canPromoteToNewValueStore(const MachineInstr &MI, const MachineInstr &PacketMI, unsigned DepReg)
bool canPromoteToDotNew(const MachineInstr &MI, const SUnit *PacketSU, unsigned DepReg, MachineBasicBlock::iterator &MII, const TargetRegisterClass *RC)
const MachineLoopInfo * MLI
bool demoteToDotOld(MachineInstr &MI)
bool isCurifiable(MachineInstr &MI)
Kind
Kind - These are the different kinds of scheduling dependencies.
bool restrictingDepExistInPacket(MachineInstr &, unsigned)
bool canPromoteToDotCur(const MachineInstr &MI, const SUnit *PacketSU, unsigned DepReg, MachineBasicBlock::iterator &MII, const TargetRegisterClass *RC)
bool shouldAddToPacket(const MachineInstr &MI) override
void endPacket(MachineBasicBlock *MBB, MachineBasicBlock::iterator MI) override
bool arePredicatesComplements(MachineInstr &MI1, MachineInstr &MI2)
const MachineBranchProbabilityInfo * MBPI
A handle to the branch probability pass.
HexagonPacketizerList(MachineFunction &MF, MachineLoopInfo &MLI, AliasAnalysis *AA, const MachineBranchProbabilityInfo *MBPI)
bool isSoloInstruction(const MachineInstr &MI) override
bool isPromotedToDotNew() const
bool tryAllocateResourcesForConstExt(bool Reserve)
bool isLegalToPacketizeTogether(SUnit *SUI, SUnit *SUJ) override
void initPacketizerState() override
bool canReserveResourcesForConstExt()
MachineBasicBlock::iterator addToPacket(MachineInstr &MI) override
Representation of each machine instruction.
void reserveResourcesForConstExt()
bool promoteToDotCur(MachineInstr &MI, SDep::Kind DepType, MachineBasicBlock::iterator &MII, const TargetRegisterClass *RC)
bool isCallDependent(const MachineInstr &MI, SDep::Kind DepType, unsigned DepReg)
bool ignorePseudoInstruction(const MachineInstr &MI, const MachineBasicBlock *MBB) override
bool isNewifiable(const MachineInstr &MI, const TargetRegisterClass *NewRC)
bool hasControlDependence(const MachineInstr &I, const MachineInstr &J)
bool useCallersSP(MachineInstr &MI)
bool promoteToDotNew(MachineInstr &MI, SDep::Kind DepType, MachineBasicBlock::iterator &MII, const TargetRegisterClass *RC)
bool hasDeadDependence(const MachineInstr &I, const MachineInstr &J)
bool cannotCoexist(const MachineInstr &MI, const MachineInstr &MJ)
bool isLegalToPruneDependencies(SUnit *SUI, SUnit *SUJ) override
void useCalleesSP(MachineInstr &MI)
void unpacketizeSoloInstrs(MachineFunction &MF)
Dependence - This class represents a dependence between two memory memory references in a function...
bool canPromoteToNewValue(const MachineInstr &MI, const SUnit *PacketSU, unsigned DepReg, MachineBasicBlock::iterator &MII)
bool producesStall(const MachineInstr &MI)
SUnit - Scheduling unit. This is a node in the scheduling DAG.
bool hasV4SpecificDependence(const MachineInstr &I, const MachineInstr &J)