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:
- include/llvm/CodeGen/GlobalISel/GISelValueTracking.h
- lib/CodeGen/GlobalISel/GISelValueTracking.cpp