LLVM 19.0.0git
Namespaces | Functions
X86MacroFusion.cpp File Reference
#include "X86MacroFusion.h"
#include "MCTargetDesc/X86BaseInfo.h"
#include "X86Subtarget.h"
#include "llvm/CodeGen/MacroFusion.h"
#include "llvm/CodeGen/ScheduleDAGMutation.h"
#include "llvm/CodeGen/TargetInstrInfo.h"

Go to the source code of this file.


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


static X86::FirstMacroFusionInstKind classifyFirst (const MachineInstr &MI)
static X86::SecondMacroFusionInstKind classifySecond (const MachineInstr &MI)
static bool shouldScheduleAdjacent (const TargetInstrInfo &TII, const TargetSubtargetInfo &TSI, const MachineInstr *FirstMI, const MachineInstr &SecondMI)
 Check if the instr pair, FirstMI and SecondMI, should be fused together.
std::unique_ptr< ScheduleDAGMutationllvm::createX86MacroFusionDAGMutation ()
 Note that you have to add: DAG.addMutation(createX86MacroFusionDAGMutation()); to X86PassConfig::createMachineScheduler() to have an effect.

Function Documentation

◆ classifyFirst()

static X86::FirstMacroFusionInstKind classifyFirst ( const MachineInstr MI)

Definition at line 23 of file X86MacroFusion.cpp.

References llvm::X86::classifyFirstOpcodeInMacroFusion(), and MI.

Referenced by shouldScheduleAdjacent().

◆ classifySecond()

static X86::SecondMacroFusionInstKind classifySecond ( const MachineInstr MI)

◆ shouldScheduleAdjacent()

static bool shouldScheduleAdjacent ( const TargetInstrInfo TII,
const TargetSubtargetInfo TSI,
const MachineInstr FirstMI,
const MachineInstr SecondMI 

Check if the instr pair, FirstMI and SecondMI, should be fused together.

Given SecondMI, when FirstMI is unspecified, then check if SecondMI may be part of a fused pair at all.

Definition at line 35 of file X86MacroFusion.cpp.

References classifyFirst(), classifySecond(), llvm::X86::isMacroFused(), and llvm_unreachable.