LLVM 20.0.0git
|
#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>
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 . | |
LiveInterval::SubRange & | getSubRangeForMaskExact (LaneBitmask LM, LiveInterval &LI) |
const LiveInterval::SubRange & | getSubRangeForMaskExact (LaneBitmask LM, const LiveInterval &LI) |
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 . | |
static bool | hasTiedUseOf (MachineInstr &MI, unsigned Reg) |
static bool | removeDeadSegment (SlotIndex Def, LiveRange &LR) |
Variables | |
static cl::opt< bool > | EnableLoopIVHeuristic ("enable-split-loopiv-heuristic", cl::desc("Enable loop iv regalloc heuristic"), cl::init(true)) |
#define DEBUG_TYPE "regalloc" |
Definition at line 46 of file SplitKit.cpp.
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 422 of file SplitKit.cpp.
References llvm_unreachable, and llvm::LiveInterval::subranges().
const LiveInterval::SubRange & getSubRangeForMaskExact | ( | LaneBitmask | LM, |
const LiveInterval & | LI | ||
) |
Definition at line 413 of file SplitKit.cpp.
References getSubrangeImpl().
LiveInterval::SubRange & getSubRangeForMaskExact | ( | LaneBitmask | LM, |
LiveInterval & | LI | ||
) |
Definition at line 408 of file SplitKit.cpp.
References getSubrangeImpl().
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 401 of file SplitKit.cpp.
References llvm_unreachable.
Referenced by getSubRangeForMaskExact().
|
static |
Definition at line 818 of file SplitKit.cpp.
References llvm::any_of(), and MI.
Referenced by llvm::SplitEditor::overlapIntv().
Definition at line 1244 of file SplitKit.cpp.
References llvm::LiveRange::Segment::end, llvm::LiveRange::getSegmentContaining(), and llvm::LiveRange::removeSegment().
STATISTIC | ( | NumFinished | , |
"Number of splits finished" | |||
) |
STATISTIC | ( | NumRemats | , |
"Number of rematerialized defs for splitting" | |||
) |
STATISTIC | ( | NumSimple | , |
"Number of splits that were simple" | |||
) |