|
LLVM
4.0.0
|
#include "llvm/IR/CallSite.h"#include "llvm/IR/Instruction.h"#include "llvm/IR/IntrinsicInst.h"#include "llvm/Support/DataTypes.h"Go to the source code of this file.
Classes | |
| class | llvm::ArrayRef< T > |
| ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory), i.e. More... | |
| struct | llvm::SelectPatternResult |
Namespaces | |
| llvm | |
| Compute iterated dominance frontiers using a linear time algorithm. | |
| llvm::Intrinsic | |
| This namespace contains an enum with a value for every intrinsic/builtin function known by LLVM. | |
Enumerations | |
| enum | llvm::OverflowResult { llvm::OverflowResult::AlwaysOverflows, llvm::OverflowResult::MayOverflow, llvm::OverflowResult::NeverOverflows } |
| enum | llvm::SelectPatternFlavor { llvm::SPF_UNKNOWN = 0, llvm::SPF_SMIN, llvm::SPF_UMIN, llvm::SPF_SMAX, llvm::SPF_UMAX, llvm::SPF_FMINNUM, llvm::SPF_FMAXNUM, llvm::SPF_ABS, llvm::SPF_NABS } |
| Specific patterns of select instructions we can match. More... | |
| enum | llvm::SelectPatternNaNBehavior { llvm::SPNB_NA = 0, llvm::SPNB_RETURNS_NAN, llvm::SPNB_RETURNS_OTHER, llvm::SPNB_RETURNS_ANY } |
| Behavior when a floating point min/max is given one NaN and one non-NaN as input. More... | |
Functions | |
| void | llvm::computeKnownBits (const Value *V, APInt &KnownZero, APInt &KnownOne, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Determine which bits of V are known to be either zero or one and return them in the KnownZero/KnownOne bit sets. More... | |
| void | llvm::computeKnownBitsFromRangeMetadata (const MDNode &Ranges, APInt &KnownZero, APInt &KnownOne) |
| Compute known bits from the range metadata. More... | |
| bool | llvm::haveNoCommonBitsSet (const Value *LHS, const Value *RHS, const DataLayout &DL, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Return true if LHS and RHS have no common bits set. More... | |
| void | llvm::ComputeSignBit (const Value *V, bool &KnownZero, bool &KnownOne, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Determine whether the sign bit is known to be zero or one. More... | |
| bool | llvm::isKnownToBeAPowerOfTwo (const Value *V, const DataLayout &DL, bool OrZero=false, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Return true if the given value is known to have exactly one bit set when defined. More... | |
| bool | llvm::isKnownNonZero (const Value *V, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Return true if the given value is known to be non-zero when defined. More... | |
| bool | llvm::isKnownNonNegative (const Value *V, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Returns true if the give value is known to be non-negative. More... | |
| bool | llvm::isKnownPositive (const Value *V, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Returns true if the given value is known be positive (i.e. More... | |
| bool | llvm::isKnownNegative (const Value *V, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Returns true if the given value is known be negative (i.e. More... | |
| bool | llvm::isKnownNonEqual (const Value *V1, const Value *V2, const DataLayout &DL, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Return true if the given values are known to be non-equal when defined. More... | |
| bool | llvm::MaskedValueIsZero (const Value *V, const APInt &Mask, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Return true if 'V & Mask' is known to be zero. More... | |
| unsigned | llvm::ComputeNumSignBits (const Value *Op, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Return the number of times the sign bit of the register is replicated into the other bits. More... | |
| bool | llvm::ComputeMultiple (Value *V, unsigned Base, Value *&Multiple, bool LookThroughSExt=false, unsigned Depth=0) |
| This function computes the integer multiple of Base that equals V. More... | |
| Intrinsic::ID | llvm::getIntrinsicForCallSite (ImmutableCallSite ICS, const TargetLibraryInfo *TLI) |
| Map a call instruction to an intrinsic ID. More... | |
| bool | llvm::CannotBeNegativeZero (const Value *V, const TargetLibraryInfo *TLI, unsigned Depth=0) |
| Return true if we can prove that the specified FP value is never equal to -0.0. More... | |
| bool | llvm::CannotBeOrderedLessThanZero (const Value *V, const TargetLibraryInfo *TLI) |
| Return true if we can prove that the specified FP value is either a NaN or never less than 0.0. More... | |
| bool | llvm::SignBitMustBeZero (const Value *V, const TargetLibraryInfo *TLI) |
| Value * | llvm::isBytewiseValue (Value *V) |
| If the specified value can be set by repeating the same byte in memory, return the i8 value that it is represented with. More... | |
| Value * | llvm::FindInsertedValue (Value *V, ArrayRef< unsigned > idx_range, Instruction *InsertBefore=nullptr) |
| Given an aggregrate and an sequence of indices, see if the scalar value indexed is already around as a register, for example if it were inserted directly into the aggregrate. More... | |
| Value * | llvm::GetPointerBaseWithConstantOffset (Value *Ptr, int64_t &Offset, const DataLayout &DL) |
| Analyze the specified pointer to see if it can be expressed as a base pointer plus a constant offset. More... | |
| static const Value * | llvm::GetPointerBaseWithConstantOffset (const Value *Ptr, int64_t &Offset, const DataLayout &DL) |
| bool | llvm::isGEPBasedOnPointerToString (const GEPOperator *GEP) |
| Returns true if the GEP is based on a pointer to a string (array of i8), and is indexing into this string. More... | |
| bool | llvm::getConstantStringInfo (const Value *V, StringRef &Str, uint64_t Offset=0, bool TrimAtNul=true) |
| This function computes the length of a null-terminated C string pointed to by V. More... | |
| uint64_t | llvm::GetStringLength (const Value *V) |
| If we can compute the length of the string pointed to by the specified pointer, return 'len+1'. More... | |
| Value * | llvm::GetUnderlyingObject (Value *V, const DataLayout &DL, unsigned MaxLookup=6) |
| This method strips off any GEP address adjustments and pointer casts from the specified value, returning the original object being addressed. More... | |
| static const Value * | llvm::GetUnderlyingObject (const Value *V, const DataLayout &DL, unsigned MaxLookup=6) |
| void | llvm::GetUnderlyingObjects (Value *V, SmallVectorImpl< Value * > &Objects, const DataLayout &DL, LoopInfo *LI=nullptr, unsigned MaxLookup=6) |
| This method is similar to GetUnderlyingObject except that it can look through phi and select instructions and return multiple objects. More... | |
| bool | llvm::onlyUsedByLifetimeMarkers (const Value *V) |
| Return true if the only users of this pointer are lifetime markers. More... | |
| bool | llvm::isSafeToSpeculativelyExecute (const Value *V, const Instruction *CtxI=nullptr, const DominatorTree *DT=nullptr) |
| Return true if the instruction does not have any effects besides calculating the result and does not have undefined behavior. More... | |
| bool | llvm::mayBeMemoryDependent (const Instruction &I) |
Returns true if the result or effects of the given instructions I depend on or influence global memory. More... | |
| bool | llvm::isKnownNonNull (const Value *V) |
| Return true if this pointer couldn't possibly be null by its definition. More... | |
| bool | llvm::isKnownNonNullAt (const Value *V, const Instruction *CtxI=nullptr, const DominatorTree *DT=nullptr) |
| Return true if this pointer couldn't possibly be null. More... | |
| bool | llvm::isValidAssumeForContext (const Instruction *I, const Instruction *CxtI, const DominatorTree *DT=nullptr) |
| Return true if it is valid to use the assumptions provided by an assume intrinsic, I, at the point in the control-flow identified by the context instruction, CxtI. More... | |
| OverflowResult | llvm::computeOverflowForUnsignedMul (const Value *LHS, const Value *RHS, const DataLayout &DL, AssumptionCache *AC, const Instruction *CxtI, const DominatorTree *DT) |
| OverflowResult | llvm::computeOverflowForUnsignedAdd (const Value *LHS, const Value *RHS, const DataLayout &DL, AssumptionCache *AC, const Instruction *CxtI, const DominatorTree *DT) |
| OverflowResult | llvm::computeOverflowForSignedAdd (const Value *LHS, const Value *RHS, const DataLayout &DL, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| OverflowResult | llvm::computeOverflowForSignedAdd (const AddOperator *Add, const DataLayout &DL, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| This version also leverages the sign bit of Add if known. More... | |
| bool | llvm::isOverflowIntrinsicNoWrap (const IntrinsicInst *II, const DominatorTree &DT) |
Returns true if the arithmetic part of the II 's result is used only along the paths control dependent on the computation not overflowing, II being an <op>.with.overflow intrinsic. More... | |
| bool | llvm::isGuaranteedToTransferExecutionToSuccessor (const Instruction *I) |
| Return true if this function can prove that the instruction I will always transfer execution to one of its successors (including the next instruction that follows within a basic block). More... | |
| bool | llvm::isGuaranteedToExecuteForEveryIteration (const Instruction *I, const Loop *L) |
| Return true if this function can prove that the instruction I is executed for every iteration of the loop L. More... | |
| bool | llvm::propagatesFullPoison (const Instruction *I) |
| Return true if this function can prove that I is guaranteed to yield full-poison (all bits poison) if at least one of its operands are full-poison (all bits poison). More... | |
| const Value * | llvm::getGuaranteedNonFullPoisonOp (const Instruction *I) |
| Return either nullptr or an operand of I such that I will trigger undefined behavior if I is executed and that operand has a full-poison value (all bits poison). More... | |
| bool | llvm::isKnownNotFullPoison (const Instruction *PoisonI) |
| Return true if this function can prove that if PoisonI is executed and yields a full-poison value (all bits poison), then that will trigger undefined behavior. More... | |
| SelectPatternResult | llvm::matchSelectPattern (Value *V, Value *&LHS, Value *&RHS, Instruction::CastOps *CastOp=nullptr) |
| Pattern match integer [SU]MIN, [SU]MAX and ABS idioms, returning the kind and providing the out parameter results if we successfully match. More... | |
| static SelectPatternResult | llvm::matchSelectPattern (const Value *V, const Value *&LHS, const Value *&RHS, Instruction::CastOps *CastOp=nullptr) |
| Optional< bool > | llvm::isImpliedCondition (const Value *LHS, const Value *RHS, const DataLayout &DL, bool InvertAPred=false, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr) |
| Return true if RHS is known to be implied true by LHS. More... | |
1.8.6