|
LLVM 22.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 (Register 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) |
Definition at line 1185 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(), MI, none, llvm::SmallVectorTemplateBase< T, bool >::push_back(), Reg, llvm::LiveRange::removeValNo(), TRI, and llvm::LiveRange::valnos.
Referenced by llvm::LiveInterval::refineSubRanges().