LLVM  17.0.0git
Macros | Functions
SplitKit.cpp File Reference
#include "SplitKit.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/CodeGen/LiveRangeEdit.h"
#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetOpcodes.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/CodeGen/VirtRegMap.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/BlockFrequency.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <iterator>
#include <limits>
#include <tuple>
Include dependency graph for SplitKit.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "regalloc"
 

Functions

 STATISTIC (NumFinished, "Number of splits finished")
 
 STATISTIC (NumSimple, "Number of splits that were simple")
 
 STATISTIC (NumCopies, "Number of copies inserted for splitting")
 
 STATISTIC (NumRemats, "Number of rematerialized defs for splitting")
 
template<typename T >
auto & getSubrangeImpl (LaneBitmask LM, T &LI)
 Find a subrange corresponding to the exact lane mask LM in the live interval LI. More...
 
LiveInterval::SubRangegetSubRangeForMaskExact (LaneBitmask LM, LiveInterval &LI)
 
const LiveInterval::SubRangegetSubRangeForMaskExact (LaneBitmask LM, const LiveInterval &LI)
 
const LiveInterval::SubRangegetSubRangeForMask (LaneBitmask LM, const LiveInterval &LI)
 Find a subrange corresponding to the lane mask LM, or a superset of it, in the live interval LI. More...
 
static bool hasTiedUseOf (MachineInstr &MI, unsigned Reg)
 
static bool removeDeadSegment (SlotIndex Def, LiveRange &LR)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "regalloc"

Definition at line 46 of file SplitKit.cpp.

Function Documentation

◆ getSubRangeForMask()

const LiveInterval::SubRange& getSubRangeForMask ( LaneBitmask  LM,
const LiveInterval LI 
)

Find a subrange corresponding to the lane mask LM, or a superset of it, in the live interval LI.

The interval LI is assumed to contain such a subrange. This function is used to find corresponding subranges between the original interval and the new intervals.

Definition at line 412 of file SplitKit.cpp.

References llvm_unreachable, S, and llvm::LiveInterval::subranges().

◆ getSubRangeForMaskExact() [1/2]

const LiveInterval::SubRange& getSubRangeForMaskExact ( LaneBitmask  LM,
const LiveInterval LI 
)

Definition at line 403 of file SplitKit.cpp.

References getSubrangeImpl().

◆ getSubRangeForMaskExact() [2/2]

LiveInterval::SubRange& getSubRangeForMaskExact ( LaneBitmask  LM,
LiveInterval LI 
)

Definition at line 398 of file SplitKit.cpp.

References getSubrangeImpl().

◆ getSubrangeImpl()

template<typename T >
auto& getSubrangeImpl ( LaneBitmask  LM,
T LI 
)

Find a subrange corresponding to the exact lane mask LM in the live interval LI.

The interval LI is assumed to contain such a subrange. This function is used to find corresponding subranges between the original interval and the new intervals.

Definition at line 391 of file SplitKit.cpp.

References llvm_unreachable, and S.

Referenced by getSubRangeForMaskExact().

◆ hasTiedUseOf()

static bool hasTiedUseOf ( MachineInstr MI,
unsigned  Reg 
)
static

Definition at line 805 of file SplitKit.cpp.

References llvm::any_of(), and MI.

◆ removeDeadSegment()

static bool removeDeadSegment ( SlotIndex  Def,
LiveRange LR 
)
static

◆ STATISTIC() [1/4]

STATISTIC ( NumCopies  ,
"Number of copies inserted for splitting  
)

◆ STATISTIC() [2/4]

STATISTIC ( NumFinished  ,
"Number of splits finished"   
)

◆ STATISTIC() [3/4]

STATISTIC ( NumRemats  ,
"Number of rematerialized defs for splitting  
)

◆ STATISTIC() [4/4]

STATISTIC ( NumSimple  ,
"Number of splits that were simple"   
)