LLVM  8.0.0svn
Classes | Namespaces | Functions
InstructionSimplify.h File Reference
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/User.h"
Include dependency graph for InstructionSimplify.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::AnalysisManager< IRUnitT, ExtraArgTs >
 A container for analyses that lazily runs them and caches their results. More...
 
class  llvm::ArrayRef< T >
 ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory), i.e. More...
 
struct  llvm::InstrInfoQuery
 InstrInfoQuery provides an interface to query additional information for instructions like metadata or keywords like nsw, which provides conservative results if the users specified it is safe to use. More...
 
struct  llvm::SimplifyQuery
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Functions

Valuellvm::SimplifyAddInst (Value *LHS, Value *RHS, bool isNSW, bool isNUW, const SimplifyQuery &Q)
 Given operands for an Add, fold the result or return null. More...
 
Valuellvm::SimplifySubInst (Value *LHS, Value *RHS, bool isNSW, bool isNUW, const SimplifyQuery &Q)
 Given operands for a Sub, fold the result or return null. More...
 
Valuellvm::SimplifyFAddInst (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operands for an FAdd, fold the result or return null. More...
 
Valuellvm::SimplifyFSubInst (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operands for an FSub, fold the result or return null. More...
 
Valuellvm::SimplifyFMulInst (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operands for an FMul, fold the result or return null. More...
 
Valuellvm::SimplifyMulInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for a Mul, fold the result or return null. More...
 
Valuellvm::SimplifySDivInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an SDiv, fold the result or return null. More...
 
Valuellvm::SimplifyUDivInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for a UDiv, fold the result or return null. More...
 
Valuellvm::SimplifyFDivInst (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operands for an FDiv, fold the result or return null. More...
 
Valuellvm::SimplifySRemInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an SRem, fold the result or return null. More...
 
Valuellvm::SimplifyURemInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for a URem, fold the result or return null. More...
 
Valuellvm::SimplifyFRemInst (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operands for an FRem, fold the result or return null. More...
 
Valuellvm::SimplifyShlInst (Value *Op0, Value *Op1, bool isNSW, bool isNUW, const SimplifyQuery &Q)
 Given operands for a Shl, fold the result or return null. More...
 
Valuellvm::SimplifyLShrInst (Value *Op0, Value *Op1, bool isExact, const SimplifyQuery &Q)
 Given operands for a LShr, fold the result or return null. More...
 
Valuellvm::SimplifyAShrInst (Value *Op0, Value *Op1, bool isExact, const SimplifyQuery &Q)
 Given operands for a AShr, fold the result or return nulll. More...
 
Valuellvm::SimplifyAndInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an And, fold the result or return null. More...
 
Valuellvm::SimplifyOrInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an Or, fold the result or return null. More...
 
Valuellvm::SimplifyXorInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an Xor, fold the result or return null. More...
 
Valuellvm::SimplifyICmpInst (unsigned Predicate, Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an ICmpInst, fold the result or return null. More...
 
Valuellvm::SimplifyFCmpInst (unsigned Predicate, Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operands for an FCmpInst, fold the result or return null. More...
 
Valuellvm::SimplifySelectInst (Value *Cond, Value *TrueVal, Value *FalseVal, const SimplifyQuery &Q)
 Given operands for a SelectInst, fold the result or return null. More...
 
Valuellvm::SimplifyGEPInst (Type *SrcTy, ArrayRef< Value *> Ops, const SimplifyQuery &Q)
 Given operands for a GetElementPtrInst, fold the result or return null. More...
 
Valuellvm::SimplifyInsertValueInst (Value *Agg, Value *Val, ArrayRef< unsigned > Idxs, const SimplifyQuery &Q)
 Given operands for an InsertValueInst, fold the result or return null. More...
 
Valuellvm::SimplifyInsertElementInst (Value *Vec, Value *Elt, Value *Idx, const SimplifyQuery &Q)
 Given operands for an InsertElement, fold the result or return null. More...
 
Valuellvm::SimplifyExtractValueInst (Value *Agg, ArrayRef< unsigned > Idxs, const SimplifyQuery &Q)
 Given operands for an ExtractValueInst, fold the result or return null. More...
 
Valuellvm::SimplifyExtractElementInst (Value *Vec, Value *Idx, const SimplifyQuery &Q)
 Given operands for an ExtractElementInst, fold the result or return null. More...
 
Valuellvm::SimplifyCastInst (unsigned CastOpc, Value *Op, Type *Ty, const SimplifyQuery &Q)
 Given operands for a CastInst, fold the result or return null. More...
 
Valuellvm::SimplifyShuffleVectorInst (Value *Op0, Value *Op1, Constant *Mask, Type *RetTy, const SimplifyQuery &Q)
 Given operands for a ShuffleVectorInst, fold the result or return null. More...
 
Valuellvm::SimplifyCmpInst (unsigned Predicate, Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for a CmpInst, fold the result or return null. More...
 
Valuellvm::SimplifyBinOp (unsigned Opcode, Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for a BinaryOperator, fold the result or return null. More...
 
Valuellvm::SimplifyFPBinOp (unsigned Opcode, Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operands for an FP BinaryOperator, fold the result or return null. More...
 
Valuellvm::SimplifyCall (ImmutableCallSite CS, const SimplifyQuery &Q)
 Given a callsite, fold the result or return null. More...
 
Valuellvm::SimplifyCall (ImmutableCallSite CS, Value *V, User::op_iterator ArgBegin, User::op_iterator ArgEnd, const SimplifyQuery &Q)
 Given a function and iterators over arguments, fold the result or return null. More...
 
Valuellvm::SimplifyCall (ImmutableCallSite CS, Value *V, ArrayRef< Value *> Args, const SimplifyQuery &Q)
 Given a function and set of arguments, fold the result or return null. More...
 
Valuellvm::SimplifyInstruction (Instruction *I, const SimplifyQuery &Q, OptimizationRemarkEmitter *ORE=nullptr)
 See if we can compute a simplified version of this instruction. More...
 
bool llvm::replaceAndRecursivelySimplify (Instruction *I, Value *SimpleV, const TargetLibraryInfo *TLI=nullptr, const DominatorTree *DT=nullptr, AssumptionCache *AC=nullptr)
 Replace all uses of 'I' with 'SimpleV' and simplify the uses recursively. More...
 
bool llvm::recursivelySimplifyInstruction (Instruction *I, const TargetLibraryInfo *TLI=nullptr, const DominatorTree *DT=nullptr, AssumptionCache *AC=nullptr)
 Recursively attempt to simplify an instruction. More...
 
const SimplifyQuery llvm::getBestSimplifyQuery (Pass &, Function &)
 
template<class T , class... TArgs>
const SimplifyQuery llvm::getBestSimplifyQuery (AnalysisManager< T, TArgs... > &, Function &)
 
const SimplifyQuery llvm::getBestSimplifyQuery (LoopStandardAnalysisResults &, const DataLayout &)