diff options
Diffstat (limited to 'lib/Target/Hexagon/HexagonHazardRecognizer.h')
-rw-r--r-- | lib/Target/Hexagon/HexagonHazardRecognizer.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/Target/Hexagon/HexagonHazardRecognizer.h b/lib/Target/Hexagon/HexagonHazardRecognizer.h index 70efcb7a9f76..2874d73ce819 100644 --- a/lib/Target/Hexagon/HexagonHazardRecognizer.h +++ b/lib/Target/Hexagon/HexagonHazardRecognizer.h @@ -23,13 +23,21 @@ namespace llvm { class HexagonHazardRecognizer : public ScheduleHazardRecognizer { DFAPacketizer *Resources; const HexagonInstrInfo *TII; - unsigned PacketNum; + unsigned PacketNum = 0; // If the packet contains a potential dot cur instruction. This is // used for the scheduling priority function. - SUnit *UsesDotCur; + SUnit *UsesDotCur = nullptr; // The packet number when a dor cur is emitted. If its use is not generated // in the same packet, then try to wait another cycle before emitting. - int DotCurPNum; + int DotCurPNum = -1; + // Does the packet contain a load. Used to restrict another load, if possible. + bool UsesLoad = false; + // Check if we should prefer a vector store that will become a .new version. + // The .new store uses different resources than a normal store, and the + // packetizer will not generate the .new if the regular store does not have + // resources available (even if the .new version does). To help, the schedule + // attempts to schedule the .new as soon as possible in the packet. + SUnit *PrefVectorStoreNew = nullptr; // The set of registers defined by instructions in the current packet. SmallSet<unsigned, 8> RegDefs; @@ -37,8 +45,7 @@ public: HexagonHazardRecognizer(const InstrItineraryData *II, const HexagonInstrInfo *HII, const HexagonSubtarget &ST) - : Resources(ST.createDFAPacketizer(II)), TII(HII), PacketNum(0), - UsesDotCur(nullptr), DotCurPNum(-1) { } + : Resources(ST.createDFAPacketizer(II)), TII(HII) { } ~HexagonHazardRecognizer() override { if (Resources) |