LLVM  14.0.0git
Classes | Namespaces | Typedefs | Enumerations | Functions | Variables
AssumeBundleQueries.h File Reference
#include "llvm/IR/Attributes.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/ADT/DenseMap.h"
Include dependency graph for AssumeBundleQueries.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  llvm::DenseMapInfo< Attribute::AttrKind >
 
struct  llvm::MinMax
 
struct  llvm::RetainedKnowledge
 Represent one information held inside an operand bundle of an llvm.assume. More...
 

Namespaces

 llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Typedefs

using llvm::RetainedKnowledgeKey = std::pair< Value *, Attribute::AttrKind >
 The map Key contains the Value on for which the attribute is valid and the Attribute that is valid for that value. More...
 
using llvm::Assume2KnowledgeMap = DenseMap< AssumeInst *, MinMax >
 A mapping from intrinsics (=llvm.assume calls) to a value range (=knowledge) that is encoded in them. More...
 
using llvm::RetainedKnowledgeMap = DenseMap< RetainedKnowledgeKey, Assume2KnowledgeMap >
 

Enumerations

enum  llvm::AssumeBundleArg { llvm::ABA_WasOn = 0, llvm::ABA_Argument = 1 }
 Index of elements in the operand bundle. More...
 

Functions

bool llvm::hasAttributeInAssume (AssumeInst &Assume, Value *IsOn, StringRef AttrName, uint64_t *ArgVal=nullptr)
 Query the operand bundle of an llvm.assume to find a single attribute of the specified kind applied on a specified Value. More...
 
bool llvm::hasAttributeInAssume (AssumeInst &Assume, Value *IsOn, Attribute::AttrKind Kind, uint64_t *ArgVal=nullptr)
 
void llvm::fillMapFromAssume (AssumeInst &Assume, RetainedKnowledgeMap &Result)
 Insert into the map all the informations contained in the operand bundles of the llvm.assume. More...
 
RetainedKnowledge llvm::getKnowledgeFromOperandInAssume (AssumeInst &Assume, unsigned Idx)
 Retreive the information help by Assume on the operand at index Idx. More...
 
RetainedKnowledge llvm::getKnowledgeFromUseInAssume (const Use *U)
 Retreive the information help by the Use U of an llvm.assume. More...
 
bool llvm::isAssumeWithEmptyBundle (AssumeInst &Assume)
 Return true iff the operand bundles of the provided llvm.assume doesn't contain any valuable information. More...
 
RetainedKnowledge llvm::getKnowledgeFromUse (const Use *U, ArrayRef< Attribute::AttrKind > AttrKinds)
 Return a valid Knowledge associated to the Use U if its Attribute kind is in AttrKinds. More...
 
RetainedKnowledge llvm::getKnowledgeForValue (const Value *V, ArrayRef< Attribute::AttrKind > AttrKinds, AssumptionCache *AC=nullptr, function_ref< bool(RetainedKnowledge, Instruction *, const CallBase::BundleOpInfo *)> Filter=[](auto...) { return true;})
 Return a valid Knowledge associated to the Value V if its Attribute kind is in AttrKinds and it matches the Filter. More...
 
RetainedKnowledge llvm::getKnowledgeValidInContext (const Value *V, ArrayRef< Attribute::AttrKind > AttrKinds, const Instruction *CtxI, const DominatorTree *DT=nullptr, AssumptionCache *AC=nullptr)
 Return a valid Knowledge associated to the Value V if its Attribute kind is in AttrKinds and the knowledge is suitable to be used in the context of CtxI. More...
 
RetainedKnowledge llvm::getKnowledgeFromBundle (AssumeInst &Assume, const CallBase::BundleOpInfo &BOI)
 This extracts the Knowledge from an element of an operand bundle. More...
 

Variables

constexpr StringRef llvm::IgnoreBundleTag = "ignore"
 Tag in operand bundle indicating that this bundle should be ignored. More...