LLVM
12.0.0git
|
#include "llvm/Analysis/InstructionSimplify.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 | getWithInstruction (Instruction *I) const |
SimplifyQuery | getWithoutUndef () const |
bool | isUndefValue (Value *V) const |
If CanUseUndef is true, returns whether V is undef. More... | |
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. More... | |
Definition at line 93 of file InstructionSimplify.h.
|
inline |
Definition at line 110 of file InstructionSimplify.h.
|
inline |
Definition at line 113 of file InstructionSimplify.h.
|
inline |
Definition at line 120 of file InstructionSimplify.h.
References I.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::SimplifyInstruction(), simplifyLoopInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), ThreadCmpOverPHI(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitShl(), and llvm::InstCombinerImpl::visitShuffleVectorInst().
|
inline |
Definition at line 125 of file InstructionSimplify.h.
Referenced by expandBinOp(), and simplifyBinaryIntrinsic().
If CanUseUndef is true, returns whether V
is undef.
Otherwise always return false.
Definition at line 133 of file InstructionSimplify.h.
References CanUseUndef.
Referenced by isPoisonShift(), SimplifyAddInst(), SimplifyAndInst(), simplifyBinaryIntrinsic(), simplifyDivRem(), SimplifyExtractElementInst(), SimplifyFCmpInst(), simplifyFPOp(), SimplifyGEPInst(), SimplifyICmpInst(), llvm::SimplifyInsertElementInst(), SimplifyInsertValueInst(), simplifyIntrinsic(), SimplifyMulInst(), SimplifyOrInst(), SimplifyPHINode(), SimplifyRightShift(), SimplifySelectInst(), SimplifyShlInst(), SimplifyShuffleVectorInst(), SimplifySubInst(), SimplifyXorInst(), and ThreadBinOpOverSelect().
AssumptionCache* llvm::SimplifyQuery::AC = nullptr |
Definition at line 97 of file InstructionSimplify.h.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), foldUnsignedUnderflowCheck(), SimplifyAndInst(), SimplifyAShrInst(), SimplifyFreezeInst(), SimplifyICmpInst(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithDominatingAssume(), simplifyICmpWithZero(), SimplifyLShrInst(), SimplifyOrInst(), 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 108 of file InstructionSimplify.h.
Referenced by isUndefValue().
const Instruction* llvm::SimplifyQuery::CxtI = nullptr |
Definition at line 98 of file InstructionSimplify.h.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), foldUnsignedUnderflowCheck(), SimplifyAndInst(), SimplifyAShrInst(), simplifyBinaryIntrinsic(), SimplifyFreezeInst(), SimplifyICmpInst(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithDominatingAssume(), simplifyICmpWithZero(), llvm::SimplifyInstruction(), SimplifyLShrInst(), SimplifyOrInst(), SimplifyRightShift(), SimplifySelectInst(), simplifySelectWithFCmp(), SimplifyShift(), SimplifySubInst(), simplifyUnaryIntrinsic(), and simplifyUnsignedRangeCheck().
const DataLayout& llvm::SimplifyQuery::DL |
Definition at line 94 of file InstructionSimplify.h.
Referenced by foldConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), foldOrCommuteConstant(), foldUnsignedUnderflowCheck(), SimplifyAndInst(), SimplifyAShrInst(), simplifyBinaryIntrinsic(), SimplifyCastInst(), SimplifyFCmpInst(), SimplifyGEPInst(), SimplifyICmpInst(), simplifyICmpOfBools(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithDominatingAssume(), simplifyICmpWithZero(), llvm::SimplifyInstruction(), SimplifyLShrInst(), SimplifyOrInst(), SimplifyRightShift(), SimplifySelectInst(), SimplifyShift(), SimplifySubInst(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), and SimplifyWithOpReplaced().
const DominatorTree* llvm::SimplifyQuery::DT = nullptr |
Definition at line 96 of file InstructionSimplify.h.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), foldUnsignedUnderflowCheck(), runImpl(), SimplifyAndInst(), SimplifyAShrInst(), SimplifyFreezeInst(), SimplifyICmpInst(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithDominatingAssume(), simplifyICmpWithZero(), SimplifyLShrInst(), SimplifyOrInst(), SimplifyPHINode(), SimplifyRightShift(), SimplifySelectInst(), SimplifyShift(), SimplifySubInst(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), ThreadBinOpOverPHI(), and ThreadCmpOverPHI().
const InstrInfoQuery llvm::SimplifyQuery::IIQ |
Definition at line 103 of file InstructionSimplify.h.
Referenced by simplifyAndOfICmps(), SimplifyAShrInst(), simplifyDiv(), SimplifyICmpInst(), simplifyICmpWithBinOp(), simplifyICmpWithZero(), llvm::SimplifyInstruction(), SimplifyMulInst(), simplifyOrOfICmps(), simplifyRem(), and SimplifyShlInst().
const TargetLibraryInfo* llvm::SimplifyQuery::TLI = nullptr |
Definition at line 95 of file InstructionSimplify.h.
Referenced by runImpl(), simplifyAndOrOfCmps(), SimplifyFAddInst(), SimplifyFCmpInst(), SimplifyFSubInst(), SimplifyICmpInst(), llvm::SimplifyInstruction(), simplifyUnaryIntrinsic(), SimplifyWithOpReplaced(), and tryConstantFoldCall().