[llvm] Revert "Add HexagonGlobalScheduler pass (#180803)" (PR #181418)

via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 13 12:51:12 PST 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-hexagon

Author: Fateme Hosseini (fhossein-quic)

<details>
<summary>Changes</summary>

This reverts commit 892ac614bf8fafd4d13381bb45b369721309785a.

---

Patch is 329.51 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/181418.diff


16 Files Affected:

- (modified) llvm/lib/Target/Hexagon/CMakeLists.txt (-1) 
- (modified) llvm/lib/Target/Hexagon/Hexagon.h (-2) 
- (removed) llvm/lib/Target/Hexagon/HexagonGlobalScheduler.cpp (-5319) 
- (modified) llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp (-19) 
- (modified) llvm/lib/Target/Hexagon/HexagonRegisterInfo.h (-10) 
- (modified) llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp (+1-6) 
- (modified) llvm/test/CodeGen/Hexagon/autohvx/hfsplat.ll (+2-1) 
- (removed) llvm/test/CodeGen/Hexagon/avoid-debug-increment.mir (-311) 
- (modified) llvm/test/CodeGen/Hexagon/cext-check.ll (+1-1) 
- (removed) llvm/test/CodeGen/Hexagon/dbg-label-pullup.ll (-305) 
- (removed) llvm/test/CodeGen/Hexagon/global-sched-skip-vsub_fake.ll (-831) 
- (removed) llvm/test/CodeGen/Hexagon/pull-delayed-new.mir (-268) 
- (removed) llvm/test/CodeGen/Hexagon/pull-no-comp-code.ll (-91) 
- (removed) llvm/test/CodeGen/Hexagon/pull-up-dbg-label.mir (-144) 
- (removed) llvm/test/CodeGen/Hexagon/pull-up-slots.mir (-363) 
- (removed) llvm/test/CodeGen/Hexagon/pull-up.ll (-39) 


``````````diff
diff --git a/llvm/lib/Target/Hexagon/CMakeLists.txt b/llvm/lib/Target/Hexagon/CMakeLists.txt
index b4716693c3dc9..bd87b9c894292 100644
--- a/llvm/lib/Target/Hexagon/CMakeLists.txt
+++ b/llvm/lib/Target/Hexagon/CMakeLists.txt
@@ -39,7 +39,6 @@ add_llvm_target(HexagonCodeGen
   HexagonGenMux.cpp
   HexagonGenPredicate.cpp
   HexagonGlobalRegion.cpp
-  HexagonGlobalScheduler.cpp
   HexagonLiveVariables.cpp
   HexagonHardwareLoops.cpp
   HexagonHazardRecognizer.cpp
diff --git a/llvm/lib/Target/Hexagon/Hexagon.h b/llvm/lib/Target/Hexagon/Hexagon.h
index 1db2326b274dc..b3be89abd527b 100644
--- a/llvm/lib/Target/Hexagon/Hexagon.h
+++ b/llvm/lib/Target/Hexagon/Hexagon.h
@@ -41,7 +41,6 @@ void initializeHexagonEarlyIfConversionPass(PassRegistry &);
 void initializeHexagonExpandCondsetsPass(PassRegistry &);
 void initializeHexagonGenMemAbsolutePass(PassRegistry &);
 void initializeHexagonGenMuxPass(PassRegistry &);
-void initializeHexagonGlobalSchedulerPass(PassRegistry &);
 void initializeHexagonHardwareLoopsPass(PassRegistry &);
 void initializeHexagonLiveVariablesPass(PassRegistry &);
 void initializeHexagonLoopIdiomRecognizeLegacyPassPass(PassRegistry &);
@@ -95,7 +94,6 @@ FunctionPass *createHexagonGenInsert();
 FunctionPass *createHexagonGenMemAbsolute();
 FunctionPass *createHexagonGenMux();
 FunctionPass *createHexagonGenPredicate();
-FunctionPass *createHexagonGlobalScheduler();
 FunctionPass *createHexagonHardwareLoops();
 FunctionPass *createHexagonISelDag(HexagonTargetMachine &TM,
                                    CodeGenOptLevel OptLevel);
diff --git a/llvm/lib/Target/Hexagon/HexagonGlobalScheduler.cpp b/llvm/lib/Target/Hexagon/HexagonGlobalScheduler.cpp
deleted file mode 100644
index 092d07431e253..0000000000000
--- a/llvm/lib/Target/Hexagon/HexagonGlobalScheduler.cpp
+++ /dev/null
@@ -1,5319 +0,0 @@
-
-//===----- HexagonGlobalScheduler.cpp - Global Scheduler ------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// Basic infrastructure for the global scheduling + Hexagon pull-up pass.
-// Currently run at the very end of code generation for Hexagon, cleans
-// up lost scheduling opportunities. Currently breaks liveness, so no passes
-// that rely on liveness info should run afterwards. Will be fixed in future
-// versions.
-//
-//===----------------------------------------------------------------------===//
-#include "Hexagon.h"
-#include "HexagonGlobalRegion.h"
-#include "HexagonMachineFunctionInfo.h"
-#include "HexagonRegisterInfo.h"
-#include "HexagonSubtarget.h"
-#include "HexagonTargetMachine.h"
-#include "HexagonVLIWPacketizer.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/SmallSet.h"
-#include "llvm/ADT/Statistic.h"
-#include "llvm/Analysis/AliasAnalysis.h"
-#include "llvm/Analysis/ValueTracking.h"
-#include "llvm/CodeGen/DFAPacketizer.h"
-#include "llvm/CodeGen/LatencyPriorityQueue.h"
-#include "llvm/CodeGen/LiveIntervals.h"
-#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
-#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
-#include "llvm/CodeGen/MachineDominators.h"
-#include "llvm/CodeGen/MachineFrameInfo.h"
-#include "llvm/CodeGen/MachineFunctionPass.h"
-#include "llvm/CodeGen/MachineInstrBuilder.h"
-#include "llvm/CodeGen/MachineLoopInfo.h"
-#include "llvm/CodeGen/MachineRegisterInfo.h"
-#include "llvm/CodeGen/Passes.h"
-#include "llvm/CodeGen/PseudoSourceValue.h"
-#include "llvm/CodeGen/SchedulerRegistry.h"
-#include "llvm/CodeGen/TargetInstrInfo.h"
-#include "llvm/CodeGen/TargetRegisterInfo.h"
-#include "llvm/CodeGen/TargetSchedule.h"
-#include "llvm/IR/Operator.h"
-#include "llvm/InitializePasses.h"
-#include "llvm/MC/MCInstrItineraries.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Compiler.h"
-#include "llvm/Support/Debug.h"
-#include "llvm/Support/MathExtras.h"
-#include "llvm/Target/TargetMachine.h"
-#include "llvm/Transforms/Utils/BasicBlockUtils.h"
-
-#include <list>
-#include <map>
-
-#define DEBUG_TYPE "global_sched"
-
-using namespace llvm;
-
-STATISTIC(HexagonNumPullUps, "Number of instructions pull-ups");
-STATISTIC(HexagonNumDualJumps, "Number of dual jumps formed");
-
-static cl::opt<bool> DisablePullUp("disable-pull-up", cl::Hidden,
-                                   cl::desc("Disable Hexagon pull-up pass"));
-
-static cl::opt<bool> EnableSpeculativePullUp(
-    "enable-speculative-pull-up", cl::Hidden,
-    cl::desc("Enable speculation during Hexagon pull-up pass"));
-
-static cl::opt<bool> EnableLocalPullUp(
-    "enable-local-pull-up", cl::Hidden, cl::init(true),
-    cl::desc("Enable same BB pull during Hexagon pull-up pass"));
-
-static cl::opt<bool> AllowSpeculateLoads(
-    "speculate-loads-on-pull-up", cl::Hidden, cl::init(true),
-    cl::desc("Allow speculative loads during Hexagon pull-up pass"));
-
-static cl::opt<bool> AllowCmpBranchLoads(
-    "cmp-branch-loads-pull-up", cl::Hidden, cl::init(true),
-    cl::desc("Allow compare-branch loads during Hexagon pull-up pass"));
-
-static cl::opt<bool> AllowUnlikelyPath("unlikely-path-pull-up", cl::Hidden,
-                                       cl::init(true),
-                                       cl::desc("Allow unlikely path pull up"));
-
-static cl::opt<bool>
-    PerformDualJumps("dual-jump-in-pull-up", cl::Hidden, cl::init(true),
-                     cl::desc("Perform dual jump formation during pull up"));
-
-static cl::opt<bool> AllowDependentPullUp(
-    "enable-dependent-pull-up", cl::Hidden, cl::init(true),
-    cl::desc("Perform dual jump formation during pull up"));
-
-static cl::opt<bool>
-    AllowBBPeelPullUp("enable-bb-peel-pull-up", cl::Hidden, cl::init(true),
-                      cl::desc("Peel a reg copy out of a BBloop"));
-
-static cl::opt<bool> PreventCompoundSeparation(
-    "prevent-compound-separation", cl::Hidden,
-    cl::desc("Do not destroy existing compounds during pull up"));
-
-static cl::opt<bool> PreventDuplexSeparation(
-    "prevent-duplex-separation", cl::Hidden, cl::init(true),
-    cl::desc("Do not destroy existing duplexes during pull up"));
-
-static cl::opt<unsigned> MainCandidateQueueSize("pull-up-main-queue-size",
-                                                cl::Hidden, cl::init(8));
-
-static cl::opt<unsigned> SecondaryCandidateQueueSize("pull-up-sec-queue-size",
-                                                     cl::Hidden, cl::init(2));
-
-static cl::opt<bool> PostPullUpOpt(
-    "post-pull-up-opt", cl::Hidden, cl::Optional, cl::init(true),
-    cl::desc("Enable opt. exposed by pull-up e.g., remove redundant jumps"));
-
-static cl::opt<bool> SpeculateNonPredInsn(
-    "speculate-non-pred-insn", cl::Hidden, cl::Optional, cl::init(true),
-    cl::desc("Speculate non-predicable instructions in parent BB"));
-
-static cl::opt<bool>
-    DisableCheckBundles("disable-hexagon-check-bundles", cl::Hidden,
-                        cl::init(true),
-                        cl::desc("Disable Hexagon check bundles pass"));
-
-static cl::opt<bool>
-    WarnOnBundleSize("warn-on-bundle-size", cl::Hidden,
-                     cl::desc("Hexagon check bundles and warn on size"));
-
-static cl::opt<bool>
-    ForceNoopHazards("force-noop-hazards", cl::Hidden, cl::init(false),
-                     cl::desc("Force noop hazards in scheduler"));
-static cl::opt<bool> OneFloatPerPacket(
-    "single-float-packet", cl::Hidden,
-    cl::desc("Allow only one single floating point instruction in a packet"));
-static cl::opt<bool> OneComplexPerPacket(
-    "single-complex-packet", cl::Hidden,
-    cl::desc("Allow only one complex instruction in a packet"));
-
-namespace llvm {
-FunctionPass *createHexagonGlobalScheduler();
-void initializeHexagonGlobalSchedulerPass(PassRegistry &);
-} // namespace llvm
-
-namespace {
-class HexagonGlobalSchedulerImpl;
-
-class HexagonGlobalScheduler : public MachineFunctionPass {
-public:
-  static char ID;
-  HexagonGlobalScheduler() : MachineFunctionPass(ID) {
-    initializeHexagonGlobalSchedulerPass(*PassRegistry::getPassRegistry());
-  }
-
-  void getAnalysisUsage(AnalysisUsage &AU) const override {
-    AU.addRequiredID(MachineDominatorsID);
-    AU.addRequired<MachineLoopInfoWrapperPass>();
-    AU.addRequired<AAResultsWrapperPass>();
-    AU.addRequired<MachineBranchProbabilityInfoWrapperPass>();
-    AU.addRequired<MachineBlockFrequencyInfoWrapperPass>();
-    AU.addRequired<MachineDominatorTreeWrapperPass>();
-    MachineFunctionPass::getAnalysisUsage(AU);
-  }
-
-  StringRef getPassName() const override { return "Hexagon Global Scheduler"; }
-
-  bool runOnMachineFunction(MachineFunction &Fn) override;
-};
-char HexagonGlobalScheduler::ID = 0;
-
-// Describes a single pull-up candidate.
-class PullUpCandidate {
-  MachineBasicBlock::instr_iterator CandidateLocation;
-  MachineBasicBlock::iterator HomeBundle;
-  bool DependentOp;
-  signed BenefitCost;
-  std::vector<MachineInstr *> Backtrack;
-
-public:
-  PullUpCandidate(MachineBasicBlock::instr_iterator MII) {
-    CandidateLocation = MII;
-    BenefitCost = 0;
-  }
-
-  PullUpCandidate(MachineBasicBlock::instr_iterator MII,
-                  MachineBasicBlock::iterator HomeBundle,
-                  std::vector<MachineInstr *> &backtrack, bool DependentOp,
-                  signed Cost)
-      : CandidateLocation(MII), HomeBundle(HomeBundle),
-        DependentOp(DependentOp), BenefitCost(Cost) {
-    // Copy of the backtrack.
-    Backtrack = backtrack;
-  }
-
-  void populate(MachineBasicBlock::instr_iterator &MII,
-                MachineBasicBlock::iterator &WorkPoint,
-                std::vector<MachineInstr *> &backtrack, bool &dependentOp) {
-    MII = CandidateLocation;
-    WorkPoint = HomeBundle;
-    backtrack = Backtrack;
-    dependentOp = DependentOp;
-  }
-
-  signed getCost() { return BenefitCost; }
-
-  MachineInstr *getCandidate() { return &*CandidateLocation; }
-
-  void dump() {
-    dbgs() << "Cost(" << BenefitCost;
-    dbgs() << ") Dependent(" << DependentOp;
-    dbgs() << ") backtrack size(" << Backtrack.size() << ")\t";
-    CandidateLocation->dump();
-  }
-};
-
-/// PullUpCandidateSorter - A Sort utility for pull-up candidates.
-struct PullUpCandidateSorter {
-  PullUpCandidateSorter() {}
-  bool operator()(PullUpCandidate *LHS, PullUpCandidate *RHS) {
-    return LHS->getCost() > RHS->getCost();
-  }
-};
-
-// Describes a single pull-up opportunity: location to which
-// pull-up is possible with additional information about it.
-// Also contains a list of pull-up candidates for this location.
-class PullUpState {
-  friend class HexagonGlobalSchedulerImpl;
-  // Available opportunity for pull-up.
-  // FAIAP a bundle with an empty slot.
-  MachineBasicBlock::iterator HomeLocation;
-  // Home bundle copy. This is here for speed of iteration.
-  SmallVector<MachineInstr *, HEXAGON_PACKET_SIZE> HomeBundle;
-  // Multiple candidates for the Home location.
-  SmallVector<PullUpCandidate *, 8> PullUpCandidates;
-
-  const HexagonInstrInfo *QII;
-
-public:
-  PullUpState(const HexagonInstrInfo *QII) : HomeLocation(NULL), QII(QII) {}
-
-  ~PullUpState() { reset(); }
-
-  void addPullUpCandidate(MachineBasicBlock::instr_iterator MII,
-                          MachineBasicBlock::iterator HomeBundle,
-                          std::vector<MachineInstr *> &backtrack,
-                          bool DependentOp, signed Cost) {
-    LLVM_DEBUG(dbgs() << "\t[addPullUpCandidate]: "; (*MII).dump());
-    PullUpCandidate *PUI =
-        new PullUpCandidate(MII, HomeBundle, backtrack, DependentOp, Cost);
-    PullUpCandidates.push_back(PUI);
-  }
-
-  void dump() {
-    unsigned element = 0;
-    for (unsigned i = 0; i < HomeBundle.size(); i++) {
-      dbgs() << "[" << element++;
-      dbgs() << "] Home Duplex("
-             << QII->getDuplexCandidateGroup(*HomeBundle[i]);
-      dbgs() << ") Compound (" << QII->getCompoundCandidateGroup(*HomeBundle[i])
-             << ") ";
-      HomeBundle[i]->dump();
-    }
-    dbgs() << "\n";
-    element = 0;
-    for (SmallVector<PullUpCandidate *, 4>::iterator
-             I = PullUpCandidates.begin(),
-             E = PullUpCandidates.end();
-         I != E; ++I) {
-      dbgs() << "[" << element++ << "] Cand: Compound(";
-      dbgs() << QII->getCompoundCandidateGroup(*(*I)->getCandidate()) << ") ";
-      (*I)->dump();
-    }
-  }
-
-  void reset() {
-    HomeLocation = NULL;
-    for (SmallVector<PullUpCandidate *, 4>::iterator
-             I = PullUpCandidates.begin(),
-             E = PullUpCandidates.end();
-         I != E; ++I)
-      delete *I;
-    PullUpCandidates.clear();
-    HomeBundle.clear();
-  }
-
-  void addHomeLocation(MachineBasicBlock::iterator WorkPoint) {
-    reset();
-    HomeLocation = WorkPoint;
-  }
-
-  unsigned haveCandidates() { return PullUpCandidates.size(); }
-};
-
-class HexagonGlobalSchedulerImpl : public HexagonPacketizerList {
-  // List of PullUp regions for this function.
-  std::vector<BasicBlockRegion *> PullUpRegions;
-  // Map of approximate distance for each BB from the
-  // function base.
-  DenseMap<MachineBasicBlock *, unsigned> BlockToInstOffset;
-  // Keep track of multiple pull-up candidates.
-  PullUpState CurrentState;
-  // Empty basic blocks as a result of pull-up.
-  std::vector<MachineBasicBlock *> EmptyBBs;
-  // Save all the Speculated MachineInstr that were moved
-  // FROM MachineBasicBlock because we don't want to have
-  // more than one speculated instructions pulled into one packet.
-  // TODO: This can be removed once we have a use-def dependency chain
-  // for all the instructions in a function.
-  std::map<MachineInstr *, MachineBasicBlock *> SpeculatedIns;
-  // All the regs and their aliases used by an instruction.
-  std::map<MachineInstr *, std::vector<unsigned>> MIUseSet;
-  // All the regs and their aliases defined by an instruction.
-  std::map<MachineInstr *, std::vector<unsigned>> MIDefSet;
-
-  AliasAnalysis *AA;
-  const MachineBranchProbabilityInfo *MBPI;
-  const MachineBlockFrequencyInfo *MBFI;
-  const MachineRegisterInfo *MRI;
-  const MachineFrameInfo &MFI;
-  const HexagonRegisterInfo *QRI;
-  const HexagonInstrInfo *QII;
-  MachineLoopInfo &MLI;
-  MachineDominatorTree &MDT;
-  MachineInstrBuilder Ext;
-  MachineInstrBuilder Nop;
-  const unsigned PacketSize;
-  TargetSchedModel TSchedModel;
-
-public:
-  // Ctor.
-  HexagonGlobalSchedulerImpl(MachineFunction &MF, MachineLoopInfo &MLI,
-                             MachineDominatorTree &MDT, AliasAnalysis *AA,
-                             const MachineBranchProbabilityInfo *MBPI,
-                             const MachineBlockFrequencyInfo *MBFI,
-                             const MachineRegisterInfo *MRI,
-                             const MachineFrameInfo &MFI,
-                             const HexagonRegisterInfo *QRI);
-  HexagonGlobalSchedulerImpl(const HexagonGlobalSchedulerImpl &) = delete;
-  HexagonGlobalSchedulerImpl &
-  operator=(const HexagonGlobalSchedulerImpl &) = delete;
-
-  ~HexagonGlobalSchedulerImpl() {
-    // Free regions.
-    for (std::vector<BasicBlockRegion *>::iterator I = PullUpRegions.begin(),
-                                                   E = PullUpRegions.end();
-         I != E; ++I)
-      delete *I;
-    MF.deleteMachineInstr(Ext);
-    MF.deleteMachineInstr(Nop);
-  }
-
-  // initPacketizerState - initialize some internal flags.
-  void initPacketizerState() override;
-
-  // ignorePseudoInstruction - Ignore bundling of pseudo instructions.
-  bool ignoreInstruction(MachineInstr *MI);
-
-  // isSoloInstruction - return true if instruction MI can not be packetized
-  // with any other instruction, which means that MI itself is a packet.
-  bool isSoloInstruction(const MachineInstr &MI) override;
-
-  // Add MI to packetizer state. Returns false if it cannot fit in the packet.
-  bool incrementalAddToPacket(MachineInstr &MI);
-
-  // formPullUpRegions - Top level call to form regions.
-  bool formPullUpRegions(MachineFunction &Fn);
-
-  // performPullUp - Top level call for pull-up.
-  bool performPullUp();
-
-  // performPullUpCFG - Top level call for pull-up CFG.
-  bool performPullUpCFG(MachineFunction &Fn);
-
-  // performExposedOptimizations -
-  // Look for optimization opportunities after pullup.
-  bool performExposedOptimizations(MachineFunction &Fn);
-
-  // optimizeBranching -
-  // 1. A conditional-jump transfers control to a BB with
-  // jump as the only instruction.
-  // if(p0) jump t1
-  // // ...
-  // t1: jump t2
-  // 2. When a BB with a single conditional jump, jumps to succ-of-succ and
-  // falls-through BB with only jump instruction.
-  // { if(p0) jump t1 }
-  // { jump t2 }
-  // t1: { ... }
-  MachineBasicBlock *optimizeBranches(MachineBasicBlock *MBB,
-                                      MachineBasicBlock *TBB,
-                                      MachineInstr *FirstTerm,
-                                      MachineBasicBlock *FBB);
-
-  // removeRedundantBranches -
-  // 1. Remove jump to the layout successor.
-  // 2. Remove multiple (dual) jump to the same target.
-  bool removeRedundantBranches(MachineBasicBlock *MBB, MachineBasicBlock *TBB,
-                               MachineInstr *FirstTerm, MachineBasicBlock *FBB,
-                               MachineInstr *SecondTerm);
-
-  // optimizeDualJumps - optimize dual jumps in a packet
-  // For now: Replace dual jump by single jump in case of a fall through.
-  bool optimizeDualJumps(MachineBasicBlock *MBB, MachineBasicBlock *TBB,
-                         MachineInstr *FirstTerm, MachineBasicBlock *FBB,
-                         MachineInstr *SecondTerm);
-
-  void GenUseDefChain(MachineFunction &Fn);
-
-  // Return region pointer or null if none found.
-  BasicBlockRegion *getRegionForMBB(std::vector<BasicBlockRegion *> &Regions,
-                                    MachineBasicBlock *MBB);
-
-  // Saves all the used-regs and their aliases in Uses.
-  // Saves all the defined-regs and their aliases in Defs.
-  void MIUseDefSet(MachineInstr *MI, std::vector<unsigned> &Defs,
-                   std::vector<unsigned> &Uses);
-
-  // This is a very useful debug utility.
-  unsigned countCompounds(MachineFunction &Fn);
-
-  // Check bundle counts
-  void checkBundleCounts(MachineFunction &Fn);
-
-private:
-  // Get next BB to be included into the region.
-  MachineBasicBlock *getNextPURBB(MachineBasicBlock *MBB, bool SecondBest);
-
-  void setUsedRegs(BitVector &Set, unsigned Reg);
-  bool AliasingRegs(unsigned RegA, unsigned RegB);
-
-  // Test is true if the two MIs cannot be safely reordered.
-  bool ReorderDependencyTest(MachineInstr *MIa, MachineInstr *MIb);
-
-  bool canAddMIToThisPacket(
-      MachineInstr *MI,
-      SmallVector<MachineInstr *, HEXAGON_PACKET_SIZE> &Bundle);
-
-  bool CanPromoteToDotNew(MachineInstr *MI, unsigned Reg);
-
-  bool pullUpPeelBBLoop(MachineBasicBlock *PredBB, MachineBasicBlock *LoopBB);
-
-  MachineInstr *findBundleAndBranch(MachineBasicBlock *BB,
-                                    MachineBasicBlock::iterator &Bundle);
-
-  // Does this bundle have any slots left?
-  bool ResourcesAvailableInBundle(BasicBlockRegion *CurrentRegion,
-                                  MachineBasicBlock::iterator &TargetPacket);
-
-  // Perform the actual move.
-  MachineInstr *MoveAndUpdateLiveness(
-      BasicBlockRegion *CurrentRegion, MachineBasicBlock *HomeBB,
-      MachineInstr *InstrToMove, bool NeedToNewify, unsigned DepReg,
-      bool MovingDependentOp, MachineBasicBlock *OriginBB,
-      MachineInstr *OriginalInstruction, SmallVector<MachineOperand, 4> &Cond,
-      MachineBasicBlock::iterator &SourceLocation,
-      MachineBasicBlock::iterator &TargetPacket,
-      MachineBasicBlock::iterator &NextMI,
-      std::vector<MachineInstr *> &backtrack);
-
-  // Updates incremental kill patterns along the backtrack.
-  void updateKillAlongThePath(MachineBasicBlock *HomeBB,
-                              MachineBasicBlock *OriginBB,
-                              MachineBasicBlock::instr_iterator &Head,
-                              MachineBasicBlock::instr_iterator &Tail,
-                              MachineBasicBlock::iterator &SourcePacket,
-                              MachineBasicBlock::iterator &T...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/181418


More information about the llvm-commits mailing list