LLVM  15.0.0git
Macros | Functions
SplitKit.cpp File Reference
#include "SplitKit.h"
#include "llvm/ADT/None.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 47 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 417 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 408 of file SplitKit.cpp.

References getSubrangeImpl().

◆ getSubRangeForMaskExact() [2/2]

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

Definition at line 403 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 396 of file SplitKit.cpp.

References llvm_unreachable, and S.

Referenced by getSubRangeForMaskExact().

◆ hasTiedUseOf()

static bool hasTiedUseOf ( MachineInstr MI,
unsigned  Reg 
)
static

Definition at line 810 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"   
)