LLVM 18.0.0git
|
#include "llvm/Analysis/SimplifyQuery.h"
Public Member Functions | |
SimplifyQuery (const DataLayout &DL, const Instruction *CXTI=nullptr) | |
SimplifyQuery (const DataLayout &DL, const TargetLibraryInfo *TLI, const DominatorTree *DT=nullptr, AssumptionCache *AC=nullptr, const Instruction *CXTI=nullptr, bool UseInstrInfo=true, bool CanUseUndef=true) | |
SimplifyQuery (const DataLayout &DL, const DominatorTree *DT, AssumptionCache *AC=nullptr, const Instruction *CXTI=nullptr, bool UseInstrInfo=true, bool CanUseUndef=true) | |
SimplifyQuery | getWithInstruction (const Instruction *I) const |
SimplifyQuery | getWithoutUndef () const |
bool | isUndefValue (Value *V) const |
If CanUseUndef is true, returns whether V is undef. | |
Public Attributes | |
const DataLayout & | DL |
const TargetLibraryInfo * | TLI = nullptr |
const DominatorTree * | DT = nullptr |
AssumptionCache * | AC = nullptr |
const Instruction * | CxtI = nullptr |
const InstrInfoQuery | IIQ |
bool | CanUseUndef = true |
Controls whether simplifications are allowed to constrain the range of possible values for uses of undef. | |
Definition at line 59 of file SimplifyQuery.h.
|
inline |
Definition at line 76 of file SimplifyQuery.h.
|
inline |
Definition at line 79 of file SimplifyQuery.h.
|
inline |
Definition at line 87 of file SimplifyQuery.h.
|
inline |
Definition at line 94 of file SimplifyQuery.h.
References I.
Referenced by llvm::InstCombiner::computeKnownBits(), llvm::InstCombiner::computeOverflowForSignedAdd(), llvm::InstCombiner::computeOverflowForSignedMul(), llvm::InstCombiner::computeOverflowForSignedSub(), llvm::InstCombiner::computeOverflowForUnsignedAdd(), llvm::InstCombiner::computeOverflowForUnsignedMul(), llvm::InstCombiner::computeOverflowForUnsignedSub(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpIntrinsicWithConstant(), llvm::InstCombinerImpl::foldICmpWithMinMaxImpl(), llvm::InstCombinerImpl::foldICmpWithZero(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldUsingDistributiveLaws(), llvm::InstCombiner::MaskedValueIsZero(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), simplifyInstructionWithOperands(), simplifyInstructionWithPHI(), simplifyLoopInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), threadBinOpOverPHI(), threadCmpOverPHI(), tryFactorization(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::visitExtractValueInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitFRem(), llvm::InstCombinerImpl::visitGEPOfGEP(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitInsertElementInst(), llvm::InstCombinerImpl::visitInsertValueInst(), llvm::InstCombinerImpl::visitLoadInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitPHINode(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitShuffleVectorInst(), llvm::InstCombinerImpl::visitSRem(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitURem(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Definition at line 99 of file SimplifyQuery.h.
Referenced by expandBinOp(), llvm::InstCombinerImpl::foldUsingDistributiveLaws(), and simplifyBinaryIntrinsic().
If CanUseUndef is true, returns whether V
is undef.
Otherwise always return false.
Definition at line 107 of file SimplifyQuery.h.
References CanUseUndef, llvm::PatternMatch::m_Undef(), and llvm::PatternMatch::match().
Referenced by llvm::GCNTTIImpl::instCombineIntrinsic(), isPoisonShift(), simplifyAddInst(), simplifyAndInst(), simplifyBinaryIntrinsic(), simplifyDivRem(), simplifyExtractElementInst(), simplifyFCmpInst(), simplifyFPOp(), simplifyGEPInst(), simplifyICmpInst(), llvm::simplifyInsertElementInst(), simplifyInsertValueInst(), simplifyIntrinsic(), simplifyLdexp(), simplifyMulInst(), simplifyOrInst(), simplifyPHINode(), simplifyRightShift(), simplifySelectInst(), simplifyShlInst(), simplifyShuffleVectorInst(), simplifySubInst(), simplifyXorInst(), and threadBinOpOverSelect().
AssumptionCache* llvm::SimplifyQuery::AC = nullptr |
Definition at line 63 of file SimplifyQuery.h.
Referenced by llvm::computeKnownBitsFromContext(), computeKnownBitsFromOperator(), computeKnownBitsMul(), computeKnownFPClass(), computeKnownFPClassFromAssumes(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCtpopPow2Test(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpWithZero(), foldICmpXorXX(), foldUnsignedUnderflowCheck(), isDivZero(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), setShiftFlags(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOrOfFCmps(), simplifyAShrInst(), simplifyDiv(), simplifyDivRem(), simplifyFCmpInst(), simplifyFMAFMul(), simplifyFreezeInst(), simplifyICmpInst(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithDominatingAssume(), simplifyICmpWithZero(), simplifyLShrInst(), simplifyRightShift(), simplifySelectInst(), simplifyShift(), simplifySubInst(), simplifyUnaryIntrinsic(), and simplifyUnsignedRangeCheck().
Controls whether simplifications are allowed to constrain the range of possible values for uses of undef.
If it is false, simplifications are not allowed to assume a particular value for a use of undef for example.
Definition at line 74 of file SimplifyQuery.h.
Referenced by isUndefValue().
const Instruction* llvm::SimplifyQuery::CxtI = nullptr |
Definition at line 64 of file SimplifyQuery.h.
Referenced by llvm::computeKnownBitsFromContext(), computeKnownBitsFromOperator(), computeKnownBitsMul(), computeKnownFPClass(), computeKnownFPClassFromAssumes(), ComputeNumSignBitsImpl(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), computePointerICmp(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCtpopPow2Test(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpWithZero(), foldICmpXorXX(), foldOrCommuteConstant(), foldUnsignedUnderflowCheck(), isDivZero(), isKnownNonZero(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), isKnownToBeAPowerOfTwo(), isNonEqualPHIs(), isPowerOfTwoRecurrence(), setShiftFlags(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOrOfFCmps(), simplifyAShrInst(), simplifyByDomEq(), simplifyDiv(), simplifyDivRem(), simplifyFCmpInst(), simplifyFMAFMul(), simplifyFreezeInst(), simplifyICmpInst(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithDominatingAssume(), simplifyICmpWithZero(), simplifyInstructionWithOperands(), simplifyLShrInst(), simplifyRightShift(), simplifySelectInst(), simplifySelectWithFCmp(), simplifyShift(), simplifySubInst(), simplifyUnaryIntrinsic(), and simplifyUnsignedRangeCheck().
const DataLayout& llvm::SimplifyQuery::DL |
Definition at line 60 of file SimplifyQuery.h.
Referenced by computeKnownBits(), llvm::computeKnownBits(), computeKnownBitsFromCmp(), computeKnownBitsFromOperator(), ComputeNumSignBitsImpl(), llvm::computeOverflowForUnsignedSub(), computePointerICmp(), dropRedundantMaskingOfLeftShiftInput(), foldConstant(), foldCtpopPow2Test(), llvm::InstCombinerImpl::foldICmpBinOp(), foldICmpXorXX(), foldOrCommuteConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldUnsignedUnderflowCheck(), isDivZero(), isGEPKnownNonNull(), isKnownNonZeroFromOperator(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), setShiftFlags(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOrOfCmps(), simplifyAndOrOfFCmps(), simplifyAShrInst(), simplifyBinaryIntrinsic(), simplifyByDomEq(), simplifyCastInst(), simplifyDiv(), simplifyDivRem(), simplifyFAddInst(), simplifyFCmpInst(), simplifyFMAFMul(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpInst(), simplifyICmpOfBools(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithDominatingAssume(), simplifyICmpWithZero(), simplifyInstructionWithOperands(), llvm::simplifyLoadInst(), simplifyLShrInst(), simplifyOrInst(), simplifyRightShift(), simplifySelectInst(), simplifyShift(), simplifySubInst(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyWithOpReplaced(), and llvm::InstCombinerImpl::visitFSub().
const DominatorTree* llvm::SimplifyQuery::DT = nullptr |
Definition at line 62 of file SimplifyQuery.h.
Referenced by llvm::computeKnownBitsFromContext(), computeKnownBitsFromOperator(), computeKnownBitsMul(), computeKnownFPClass(), computeKnownFPClassFromAssumes(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), computePointerICmp(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCtpopPow2Test(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpWithZero(), foldICmpXorXX(), foldUnsignedUnderflowCheck(), isDivZero(), isKnownNonZero(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), runImpl(), setShiftFlags(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOrOfFCmps(), simplifyAShrInst(), simplifyDiv(), simplifyDivRem(), simplifyFCmpInst(), simplifyFMAFMul(), simplifyFreezeInst(), simplifyICmpInst(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithDominatingAssume(), simplifyICmpWithZero(), simplifyLShrInst(), simplifyPHINode(), simplifyRightShift(), simplifySelectInst(), simplifyShift(), simplifySubInst(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), threadBinOpOverPHI(), and threadCmpOverPHI().
const InstrInfoQuery llvm::SimplifyQuery::IIQ |
Definition at line 69 of file SimplifyQuery.h.
Referenced by computeConstantRangeIncludingKnownBits(), computeKnownBitsFromOperator(), computeKnownFPClass(), isKnownNonZero(), isKnownNonZeroFromOperator(), isKnownToBeAPowerOfTwo(), isPowerOfTwoRecurrence(), simplifyAndInst(), simplifyAndOfICmps(), simplifyAShrInst(), simplifyDivRem(), simplifyFCmpInst(), simplifyICmpInst(), simplifyICmpWithBinOp(), simplifyICmpWithZero(), simplifyInstructionWithOperands(), simplifyLShrInst(), simplifyMulInst(), simplifyOrOfICmps(), simplifyRem(), and simplifyShlInst().
const TargetLibraryInfo* llvm::SimplifyQuery::TLI = nullptr |
Definition at line 61 of file SimplifyQuery.h.
Referenced by computePointerICmp(), runImpl(), simplifyAndOrOfFCmps(), simplifyFAddInst(), simplifyFCmpInst(), simplifyFMAFMul(), simplifyFSubInst(), simplifyICmpInst(), simplifyInstructionWithOperands(), simplifyUnaryIntrinsic(), simplifyWithOpReplaced(), tryConstantFoldCall(), and llvm::InstCombinerImpl::visitFSub().