Lines Matching defs:SchedGroup

64 // classified into a SchedGroup.
83 class SchedGroup;
86 // not an SU maps to a given SchedGroup. It contains complementary data
99 SmallVectorImpl<SchedGroup> &) {
119 class SchedGroup {
122 // SchedGroup. The instruction types correspond to the mask from SCHED_BARRIER
136 // The different rules each instruction in this SchedGroup must conform to
146 // SchedGroup object.
156 // Returns true if SU can be added to this SchedGroup.
159 // Add DAG dependencies from all SUnits in this SchedGroup and this SU. If
161 // SchedGroup, otherwise SU will be a successor.
169 // Add DAG dependencies from all SUnits in this SchedGroup and this SU.
171 // true) or a successor (P = false) of this SchedGroup.
176 void link(SchedGroup &OtherGroup);
182 // SchedGroup. Since many rules involve the relationship between a SchedGroup
184 // time (rather than SchedGroup init time.)
191 SmallVectorImpl<SchedGroup> &SyncPipe) const {
199 // Add SU to the SchedGroup.
201 LLVM_DEBUG(dbgs() << "For SchedGroup with mask "
207 // Remove last element in the SchedGroup
210 // Identify and add all relevant SUs from the DAG to this SchedGroup.
213 // Add instructions to the SchedGroup bottom up starting from RIter.
215 // SchedGroup even when the other conditions for adding it are satisfied.
216 // RIter will be added to the SchedGroup as well, and dependencies will be
229 SchedGroup(SchedGroupMask SGMask, std::optional<unsigned> MaxSize,
235 SchedGroup(SchedGroupMask SGMask, std::optional<unsigned> MaxSize, int SyncID,
249 // assigned to a SchedGroup. The PipelineSolver class implements two algorithms
260 DenseMap<int, SmallVector<SchedGroup, 4>> SyncedSchedGroups;
262 SmallVector<SmallVector<SchedGroup, 4>, 4> CurrPipeline;
264 SmallVector<SmallVector<SchedGroup, 4>, 4> BestPipeline;
273 // The cost penalty of not assigning a SU to a SchedGroup
304 // Find the best SchedGroup for the current SU using the heuristic given all
306 // the SchedGroup iterator (either reverse or forward).
313 // Templated against the SchedGroup iterator (either reverse or forward).
320 // Tmplated against the SchedGroup iterator (either reverse or forward).
324 int addEdges(SmallVectorImpl<SchedGroup> &SyncPipeline, SUnit *SU, int SGID,
326 /// Link the pipeline as if \p SU was in the SchedGroup with ID \p SGID. It
344 PipelineSolver(DenseMap<int, SmallVector<SchedGroup, 4>> &SyncedSchedGroups,
434 LLVM_DEBUG(dbgs() << "SchedGroup with SGID " << SG.getSGID()
474 SmallVectorImpl<SchedGroup> &SyncPipeline, SUnit *SU, int SGID,
477 // For IsBottomUp, the first SchedGroup in SyncPipeline contains the
480 // candidate SGID are successors of the candidate SchedGroup, thus the current
573 SchedGroup *Match = llvm::find_if(SyncPipeline, [CandSGID](SchedGroup &SG) {
615 // SchedGroup -> Cost pairs
636 SchedGroup *Match;
648 LLVM_DEBUG(dbgs() << "Assigning to SchedGroup with Mask "
705 SchedGroup *BestGroup = nullptr;
718 SchedGroup *Match = llvm::find_if(SyncPipeline, [CandSGID](SchedGroup &SG) {
832 DenseMap<int, SmallVector<SchedGroup, 4>> &SyncedSchedGroups,
852 DenseMap<int, SmallVector<SchedGroup, 4>> &SyncedSchedGroups,
868 DenseMap<int, SmallVector<SchedGroup, 4>> &SyncedSchedGroups,
877 SchedGroup *SG = nullptr;
925 SmallVectorImpl<SchedGroup> &SyncPipe) override {
958 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1000 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1049 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1090 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1125 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1138 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1150 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1158 /// of the SchedGroup \p Distance steps before.
1165 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1166 SchedGroup *OtherGroup = nullptr;
1195 /// instruction the the SchedGroup \p Distance steps before.
1202 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1203 SchedGroup *OtherGroup = nullptr;
1237 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1255 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1297 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1322 DenseMap<int, SmallVector<SchedGroup, 4>> &SyncedSchedGroups,
1542 DenseMap<int, SmallVector<SchedGroup, 4>> &SyncedSchedGroups,
1557 SchedGroup *SG = nullptr;
1835 DenseMap<int, SmallVector<SchedGroup, 4>> &SyncedSchedGroups,
1851 DenseMap<int, SmallVector<SchedGroup, 4>> &SyncedSchedGroups,
1861 SchedGroup *SG = &SyncedSchedGroups[PipelineSyncID].emplace_back(
1879 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1912 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1946 // Whether the SU is a successor of any element in previous SchedGroup
1950 SmallVectorImpl<SchedGroup> &SyncPipe) override {
1951 SchedGroup *OtherGroup = nullptr;
1978 SmallVectorImpl<SchedGroup> &SyncPipe) override {
2011 /// Whether the SU shares a V_PERM predecessor with any SU in the SchedGroup
2019 SmallVectorImpl<SchedGroup> &SyncPipe) override {
2020 SchedGroup *OtherGroup = nullptr;
2065 DenseMap<int, SmallVector<SchedGroup, 4>> &SyncedSchedGroups,
2085 DenseMap<int, SmallVector<SchedGroup, 4>> &SyncedSchedGroups,
2172 SchedGroup *SG;
2354 DenseMap<int, SmallVector<SchedGroup, 4>> SyncedSchedGroups;
2383 // SchedGroup for a PipelineInstr. BOTTOM_UP will try to add SUs to the last
2384 // created SchedGroup first, and will consider that as the ultimate
2386 // first created SchedGroup first.
2396 unsigned SchedGroup::NumSchedGroups = 0;
2398 bool SchedGroup::tryAddEdge(SUnit *A, SUnit *B) {
2406 bool SchedGroup::canAddMI(const MachineInstr &MI) const {
2459 dbgs() << "For SchedGroup with mask " << format_hex((int)SGMask, 10, true)
2465 int SchedGroup::link(SUnit &SU, bool MakePred,
2490 void SchedGroup::link(SUnit &SU, bool MakePred) {
2502 void SchedGroup::link(SUnit &SU,
2513 void SchedGroup::link(SchedGroup &OtherGroup) {
2518 bool SchedGroup::canAddSU(SUnit &SU) const {
2533 void SchedGroup::initSchedGroup() {
2543 void SchedGroup::initSchedGroup(std::vector<SUnit>::reverse_iterator RIter,
2560 void SchedGroup::initSchedGroup(SUnitsToCandidateSGsMap &SyncedInstrs) {
2617 LLVM_DEBUG(dbgs() << "Building SchedGroup for SchedBarrier with Mask: "
2621 SchedGroup SG(InvertedMask, std::nullopt, DAG, TII);
2664 LLVM_DEBUG(dbgs() << "After Inverting, SchedGroup Mask: " << (int)InvertedMask