LLVM: llvm::GISelValueTracking Class Reference (original) (raw)

#include "[llvm/CodeGen/GlobalISel/GISelValueTracking.h](GISelValueTracking%5F8h%5Fsource.html)"

Public Member Functions
GISelValueTracking (MachineFunction &MF, unsigned MaxDepth=6)
~GISelValueTracking () override=default
const MachineFunction & getMachineFunction () const
const DataLayout & getDataLayout () const
void computeKnownBitsImpl (Register R, KnownBits &Known, const APInt &DemandedElts, unsigned Depth=0)
unsigned computeNumSignBits (Register R, const APInt &DemandedElts, unsigned Depth=0)
unsigned computeNumSignBits (Register R, unsigned Depth=0)
KnownBits getKnownBits (Register R)
KnownBits getKnownBits (Register R, const APInt &DemandedElts, unsigned Depth=0)
KnownBits getKnownBits (MachineInstr &MI)
APInt getKnownZeroes (Register R)
APInt getKnownOnes (Register R)
bool maskedValueIsZero (Register Val, const APInt &Mask)
bool signBitIsZero (Register Op)
Align computeKnownAlignment (Register R, unsigned Depth=0)
std::optional< ConstantRange > getValidShiftAmountRange (Register R, const APInt &DemandedElts, unsigned Depth)
If a G_SHL/G_ASHR/G_LSHR node with shift operand R has shift amounts that are all less than the element bit-width of the shift node, return the valid constant range.
std::optional< uint64_t > getValidMinimumShiftAmount (Register R, const APInt &DemandedElts, unsigned Depth=0)
If a G_SHL/G_ASHR/G_LSHR node with shift operand R has shift amounts that are all less than the element bit-width of the shift node, return the minimum possible value.
KnownFPClass computeKnownFPClass (Register R, const APInt &DemandedElts, FPClassTest InterestedClasses, unsigned Depth)
Determine which floating-point classes are valid for V, and return them in KnownFPClass bit sets.
KnownFPClass computeKnownFPClass (Register R, FPClassTest InterestedClasses=fcAllFlags, unsigned Depth=0)
KnownFPClass computeKnownFPClass (Register R, const APInt &DemandedElts, uint32_t Flags, FPClassTest InterestedClasses, unsigned Depth)
Wrapper to account for known fast math flags at the use instruction.
KnownFPClass computeKnownFPClass (Register R, uint32_t Flags, FPClassTest InterestedClasses, unsigned Depth)
void erasingInstr (MachineInstr &MI) override
An instruction is about to be erased.
void createdInstr (MachineInstr &MI) override
An instruction has been created and inserted into the function.
void changingInstr (MachineInstr &MI) override
This instruction is about to be mutated in some way.
void changedInstr (MachineInstr &MI) override
This instruction was mutated in some way.
Public Member Functions inherited from llvm::GISelChangeObserver
virtual ~GISelChangeObserver ()=default
LLVM_ABI void changingAllUsesOfReg (const MachineRegisterInfo &MRI, Register Reg)
All the instructions using the given register are being changed.
LLVM_ABI void finishedChangingAllUsesOfReg ()
All instructions reported as changing by changingAllUsesOfReg() have finished being changed.

Definition at line 34 of file GISelValueTracking.h.

~GISelValueTracking()

llvm::GISelValueTracking::~GISelValueTracking ( ) overridedefault

changedInstr()

void llvm::GISelValueTracking::changedInstr ( MachineInstr & MI) inlineoverridevirtual

changingInstr()

void llvm::GISelValueTracking::changingInstr ( MachineInstr & MI) inlineoverridevirtual

computeKnownAlignment()

computeKnownBitsForAlignment()

void llvm::GISelValueTracking::computeKnownBitsForAlignment ( KnownBits & Known, Align Alignment ) inlinestatic

computeKnownBitsImpl()

Definition at line 159 of file GISelValueTracking.cpp.

References llvm::KnownBits::abs(), AbstractManglingParser< Derived, Alloc >::NumOps, llvm::KnownBits::add(), llvm::KnownBits::anyext(), llvm::KnownBits::anyextOrTrunc(), llvm::KnownBits::ashr(), assert(), llvm::bit_width(), llvm::BitWidth, llvm::KnownBits::byteSwap(), llvm::cast(), llvm::APInt::clearLowBits(), llvm::computeKnownBitsFromRangeMetadata(), computeKnownBitsImpl(), computeNumSignBits(), llvm::KnownBits::countMaxLeadingZeros(), llvm::KnownBits::countMaxPopulation(), llvm::Depth, llvm::drop_begin(), dumpResult(), llvm::enumerate(), llvm::APInt::extractBits(), llvm::extractBits(), llvm::KnownBits::extractBits(), llvm::APInt::getAllOnes(), llvm::APInt::getBitWidth(), llvm::KnownBits::getBitWidth(), llvm::getIConstantVRegVal(), llvm::GExtractVectorElement::getIndexReg(), llvm::APInt::getLowBitsSet(), getMaxDepth(), llvm::MachineMemOperand::getMemoryType(), llvm::LLT::getNumElements(), llvm::APInt::getOneBitSet(), llvm::MachineMemOperand::getRanges(), getReg(), llvm::LLT::getScalarSizeInBits(), llvm::LLT::getScalarType(), llvm::getShuffleDemandedElts(), llvm::GExtractVectorElement::getVectorReg(), I, llvm::KnownBits::insertBits(), llvm::KnownBits::intersectWith(), llvm::LLT::isFixedVector(), llvm::LLT::isScalableVector(), llvm::KnownBits::isUnknown(), llvm::LLT::isValid(), llvm::LLT::isVector(), llvm::Register::isVirtual(), LLVM_DEBUG, llvm::Log2_64(), llvm::KnownBits::lshr(), llvm::KnownBits::makeConstant(), MI, llvm::KnownBits::mul(), llvm::KnownBits::mulhs(), llvm::KnownBits::mulhu(), llvm::KnownBits::One, llvm::KnownBits::reverseBits(), llvm::APInt::setAllBits(), llvm::APInt::setBitsFrom(), llvm::APInt::setHighBits(), llvm::APInt::setLowBits(), llvm::KnownBits::sext(), llvm::KnownBits::sextInReg(), llvm::APInt::shl(), llvm::KnownBits::shl(), llvm::KnownBits::smax(), llvm::KnownBits::smin(), llvm::KnownBits::sub(), llvm::KnownBits::trunc(), llvm::KnownBits::umax(), llvm::KnownBits::umin(), llvm::KnownBits::Zero, llvm::TargetLoweringBase::ZeroOrOneBooleanContent, llvm::APInt::zext(), llvm::KnownBits::zext(), and llvm::KnownBits::zextOrTrunc().

Referenced by llvm::SITargetLowering::computeKnownBitsForTargetInstr(), computeKnownBitsImpl(), getKnownBits(), and knownBitsForSBFE().

computeKnownFPClass() [1/4]

Determine which floating-point classes are valid for V, and return them in KnownFPClass bit sets.

This function is defined on values with floating-point type, values vectors of floating-point type, and arrays of floating-point type. InterestedClasses is a compile time optimization hint for which floating point classes should be queried. Queries not specified in InterestedClasses should be reliable if they are determined during the query.

Definition at line 1745 of file GISelValueTracking.cpp.

References llvm::Depth.

computeKnownFPClass() [2/4]

computeKnownFPClass() [3/4]

computeKnownFPClass() [4/4]

computeNumSignBits() [1/2]

Definition at line 1824 of file GISelValueTracking.cpp.

References llvm::CallingConv::C, llvm::cast(), computeNumSignBits(), computeNumSignBitsFromRangeMetadata(), llvm::Depth, llvm::drop_begin(), llvm::enumerate(), llvm::APInt::extractBits(), getDataLayout(), getKnownBits(), getMaxDepth(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::LLT::getScalarSizeInBits(), llvm::getShuffleDemandedElts(), llvm::MachineMemOperand::getSizeInBits(), getValidMinimumShiftAmount(), getValidShiftAmountRange(), llvm::LocationSize::getValue(), I, llvm::KnownBits::isAllOnes(), llvm::KnownBits::isNegative(), llvm::KnownBits::isNonNegative(), llvm::LLT::isValid(), llvm::LLT::isVector(), llvm::KnownBits::isZero(), MI, llvm::KnownBits::One, llvm::KnownBits::Zero, llvm::TargetLoweringBase::ZeroOrNegativeOneBooleanContent, and llvm::TargetLoweringBase::ZeroOrOneBooleanContent.

Referenced by computeKnownBitsImpl(), computeNumSignBits(), and computeNumSignBits().

computeNumSignBits() [2/2]

createdInstr()

void llvm::GISelValueTracking::createdInstr ( MachineInstr & MI) inlineoverridevirtual

erasingInstr()

void llvm::GISelValueTracking::erasingInstr ( MachineInstr & MI) inlineoverridevirtual

getDataLayout()

const DataLayout & llvm::GISelValueTracking::getDataLayout ( ) const inline

getKnownBits() [1/3]

getKnownBits() [2/3]

getKnownBits() [3/3]

getKnownOnes()

getKnownZeroes()

getMachineFunction()

getMaxDepth()

unsigned llvm::GISelValueTracking::getMaxDepth ( ) const inlineprotected

getValidMinimumShiftAmount()

getValidShiftAmountRange()

If a G_SHL/G_ASHR/G_LSHR node with shift operand R has shift amounts that are all less than the element bit-width of the shift node, return the valid constant range.

Definition at line 2217 of file GISelValueTracking.cpp.

References assert(), llvm::BitWidth, llvm::Depth, llvm::ConstantRange::fromKnownBits(), getKnownBits(), llvm::KnownBits::getMaxValue(), I, MI, llvm::APInt::uge(), llvm::APInt::ugt(), and llvm::APInt::ult().

Referenced by computeNumSignBits(), and getValidMinimumShiftAmount().

maskedValueIsZero()

signBitIsZero()


The documentation for this class was generated from the following files: