LLVM 20.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.

Namespaces

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

Functions

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)
static

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)
static

◆ shouldScheduleAdjacent()

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

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.