LLVM 17.0.0git
Namespaces | Typedefs | Functions
MacroFusion.h File Reference
#include <functional>
#include <memory>

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Typedefs

using llvm::ShouldSchedulePredTy = std::function< bool(const TargetInstrInfo &TII, const TargetSubtargetInfo &TSI, const MachineInstr *FirstMI, const MachineInstr &SecondMI)>
 Check if the instr pair, FirstMI and SecondMI, should be fused together.
 

Functions

bool llvm::hasLessThanNumFused (const SUnit &SU, unsigned FuseLimit)
 Checks if the number of cluster edges between SU and its predecessors is less than FuseLimit.
 
bool llvm::fuseInstructionPair (ScheduleDAGInstrs &DAG, SUnit &FirstSU, SUnit &SecondSU)
 Create an artificial edge between FirstSU and SecondSU.
 
std::unique_ptr< ScheduleDAGMutationllvm::createMacroFusionDAGMutation (ShouldSchedulePredTy shouldScheduleAdjacent)
 Create a DAG scheduling mutation to pair instructions back to back for instructions that benefit according to the target-specific shouldScheduleAdjacent predicate function.
 
std::unique_ptr< ScheduleDAGMutationllvm::createBranchMacroFusionDAGMutation (ShouldSchedulePredTy shouldScheduleAdjacent)
 Create a DAG scheduling mutation to pair branch instructions with one of their predecessors back to back for instructions that benefit according to the target-specific shouldScheduleAdjacent predicate function.