LLVM 20.0.0git
|
#include "llvm/CodeGen/LiveInterval.h"
#include "LiveRangeUtils.h"
#include "RegisterCoalescer.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/CodeGen/LiveIntervals.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/SlotIndexes.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/MC/LaneBitmask.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <iterator>
#include <utility>
Go to the source code of this file.
Functions | |
static void | stripValuesNotDefiningMask (unsigned Reg, LiveInterval::SubRange &SR, LaneBitmask LaneMask, const SlotIndexes &Indexes, const TargetRegisterInfo &TRI, unsigned ComposeSubRegIdx) |
For each VNI in SR , check whether or not that value defines part of the mask describe by LaneMask and if not, remove that value from SR . | |
static bool | coalescable (const LiveRange::Segment &A, const LiveRange::Segment &B) |
|
inlinestatic |
Definition at line 1179 of file LiveInterval.cpp.
References A, assert(), and B.
Referenced by llvm::LiveRangeUpdater::add().
|
static |
For each VNI in SR
, check whether or not that value defines part of the mask describe by LaneMask
and if not, remove that value from SR
.
Definition at line 872 of file LiveInterval.cpp.
References assert(), llvm::VNInfo::def, llvm::SlotIndexes::getInstructionFromIndex(), llvm::VNInfo::isPHIDef(), llvm::VNInfo::isUnused(), llvm::MIBundleOperandIteratorBase< ValueT >::isValid(), llvm::Register::isVirtualRegister(), MI, none, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::LiveRange::removeValNo(), TRI, and llvm::LiveRange::valnos.
Referenced by llvm::LiveInterval::refineSubRanges().