MLIR  20.0.0git
Classes | Namespaces | Typedefs | Enumerations | Functions | Variables
SideEffectInterfaces.h File Reference
#include "mlir/IR/OpDefinition.h"
#include "mlir/Interfaces/SideEffectInterfaces.h.inc"

Go to the source code of this file.

Classes

class  mlir::SideEffects::Effect
 This class represents a base class for a specific effect type. More...
 
class  mlir::SideEffects::Effect::Base< DerivedEffect, BaseEffect >
 This base class is used for derived effects that are non-parametric. More...
 
class  mlir::SideEffects::Resource
 This class represents a specific resource that an effect applies to. More...
 
class  mlir::SideEffects::Resource::Base< DerivedResource, BaseResource >
 This base class is used for derived effects that are non-parametric. More...
 
struct  mlir::SideEffects::DefaultResource
 A conservative default resource kind. More...
 
struct  mlir::SideEffects::AutomaticAllocationScopeResource
 An automatic allocation-scope resource that is valid in the context of a parent AutomaticAllocationScope trait. More...
 
class  mlir::SideEffects::EffectInstance< EffectT >
 This class represents a specific instance of an effect. More...
 
class  mlir::OpTrait::HasRecursiveMemoryEffects< ConcreteType >
 This trait indicates that the memory effects of an operation includes the effects of operations nested within its regions. More...
 
struct  mlir::OpTrait::RecursivelySpeculatableImplTrait< ConcreteType >
 This trait marks an op (which must be tagged as implementing the ConditionallySpeculatable interface) as being recursively speculatable. More...
 
struct  mlir::OpTrait::AlwaysSpeculatableImplTrait< ConcreteType >
 This trait marks an op (which must be tagged as implementing the ConditionallySpeculatable interface) as being always speculatable. More...
 
struct  mlir::MemoryEffects::Effect
 This class represents the base class used for memory effects. More...
 
struct  mlir::MemoryEffects::Allocate
 The following effect indicates that the operation allocates from some resource. More...
 
struct  mlir::MemoryEffects::Free
 The following effect indicates that the operation frees some resource that has been allocated. More...
 
struct  mlir::MemoryEffects::Read
 The following effect indicates that the operation reads from some resource. More...
 
struct  mlir::MemoryEffects::Write
 The following effect indicates that the operation writes to some resource. More...
 

Namespaces

 mlir
 Include the generated interface declarations.
 
 mlir::SideEffects
 
 mlir::Speculation
 
 mlir::OpTrait
 
 mlir::MemoryEffects
 

Typedefs

using mlir::MemoryEffects::EffectInstance = SideEffects::EffectInstance< Effect >
 

Enumerations

enum class  mlir::Speculation::Speculatability { mlir::Speculation::NotSpeculatable , mlir::Speculation::Speculatable , mlir::Speculation::RecursivelySpeculatable }
 This enum is returned from the getSpeculatability method in the ConditionallySpeculatable op interface. More...
 

Functions

template<typename EffectTy >
bool mlir::hasSingleEffect (Operation *op)
 Returns true if op has only an effect of type EffectTy. More...
 
template<typename EffectTy >
bool mlir::hasSingleEffect (Operation *op, Value value)
 Returns true if op has only an effect of type EffectTy (and of no other type) on value. More...
 
template<typename ValueTy , typename EffectTy >
bool mlir::hasSingleEffect (Operation *op, ValueTy value)
 Returns true if op has only an effect of type EffectTy (and of no other type) on value of type ValueTy. More...
 
template<typename... EffectTys>
bool mlir::hasEffect (Operation *op)
 Returns true if op has an effect of type EffectTy. More...
 
template<typename... EffectTys>
bool mlir::hasEffect (Operation *op, Value value)
 Returns true if op has an effect of type EffectTy on value. More...
 
template<typename ValueTy , typename... EffectTys>
bool mlir::hasEffect (Operation *op, ValueTy value)
 Returns true if op has an effect of type EffectTy on value of type ValueTy. More...
 
bool mlir::isOpTriviallyDead (Operation *op)
 Return true if the given operation is unused, and has no side effects on memory that prevent erasing. More...
 
bool mlir::wouldOpBeTriviallyDead (Operation *op)
 Return true if the given operation would be dead if unused, and has no side effects on memory that would prevent erasing. More...
 
bool mlir::isMemoryEffectFree (Operation *op)
 Returns true if the given operation is free of memory effects. More...
 
std::optional< llvm::SmallVector< MemoryEffects::EffectInstance > > mlir::getEffectsRecursively (Operation *rootOp)
 Returns the side effects of an operation. More...
 
bool mlir::isSpeculatable (Operation *op)
 Returns true if the given operation is speculatable, i.e. More...
 
bool mlir::isPure (Operation *op)
 Returns true if the given operation is pure, i.e., is speculatable that does not touch memory. More...
 

Variables

constexpr auto mlir::Speculation::NotSpeculatable = Speculatability::NotSpeculatable
 
constexpr auto mlir::Speculation::Speculatable = Speculatability::Speculatable
 
constexpr auto mlir::Speculation::RecursivelySpeculatable