My Project
Namespaces | Classes | Typedefs | Functions | Variables
mlir::detail Namespace Reference

Check if a Callable type can be invoked with the given set of arg types. More...

Namespaces

 analysis_impl
 

Classes

struct  AffineBinaryOpExprStorage
 A binary operation appearing in an affine expression. More...
 
struct  AffineConstantExprStorage
 An integer constant appearing in affine expression. More...
 
struct  AffineDimExprStorage
 A dimensional or symbolic identifier appearing in an affine expression. More...
 
struct  AffineExprStorage
 Base storage class appearing in an affine expression. More...
 
struct  AffineMapAttributeStorage
 
struct  AffineMapStorage
 
struct  AnalysisConcept
 The abstract polymorphic base class representing an analysis. More...
 
class  AnalysisMap
 
struct  AnalysisModel
 A derived analysis model used to hold a specific analysis object. More...
 
struct  AnyValueMatcher
 Terminal matcher, always returns true. More...
 
struct  ArrayAttributeStorage
 An attribute representing an array of other attributes. More...
 
struct  attr_value_binder
 
class  AttributeUniquer
 
class  BlockArgumentImpl
 The internal implementation of a BlockArgument. More...
 
struct  BoolAttributeStorage
 An attribute representing a boolean value. More...
 
struct  CallSiteLocationStorage
 
struct  ComplexTypeStorage
 Complex Type Storage. More...
 
struct  constant_int_not_value_matcher
 
struct  constant_int_op_binder
 
struct  constant_int_value_matcher
 
struct  constant_op_binder
 
struct  ConversionPatternRewriterImpl
 
class  DenseElementDataPointerTypeTraits
 
class  DenseElementIndexedIteratorImpl
 
struct  DenseElementsAttributeStorage
 An attribute representing a reference to a dense vector or tensor object. More...
 
struct  detector
 
struct  detector< void_t< Op< Args... > >, Op, Args... >
 
struct  DiagnosticEngineImpl
 
class  DialectInterfaceBase
 
class  DialectInterfaceCollectionBase
 
struct  DictionaryAttributeStorage
 An attribute representing a dictionary of sorted named attributes. More...
 
class  DominanceInfoBase
 
class  ElementsAttrIterator
 
class  ElementsAttrRange
 
struct  ExpectedDiag
 
struct  FileLineColLocationStorage
 
struct  FloatAttributeStorage
 An attribute representing a floating point value. More...
 
struct  FunctionTypeStorage
 Function Type Storage and Uniquing. More...
 
struct  FusedLocationStorage
 
class  indexed_accessor_range_base
 
struct  IntegerAttributeStorage
 An attribute representing a integral value. More...
 
struct  IntegerSetAttributeStorage
 
struct  IntegerSetStorage
 
struct  IntegerTypeStorage
 Integer Type Storage and Uniquing. More...
 
struct  MemRefTypeStorage
 
struct  NameLocationStorage
 
struct  NestedAnalysisMap
 
struct  op_matcher
 The matcher that matches a certain kind of op. More...
 
struct  OpaqueAttributeStorage
 Opaque Attribute Storage and Uniquing. More...
 
struct  OpaqueElementsAttributeStorage
 
struct  OpaqueLocationStorage
 
struct  OpaqueTypeStorage
 Opaque Type Storage and Uniquing. More...
 
class  OpaqueValue
 This class provides an opaque type erased wrapper around a Value. More...
 
class  OperandStorage
 
struct  OpPassManagerImpl
 
class  OpToOpPassAdaptor
 
class  OpToOpPassAdaptorBase
 A base class for Op-to-Op adaptor passes. More...
 
class  OpToOpPassAdaptorParallel
 
struct  ParallelDiagnosticHandlerImpl
 
struct  PassExecutionState
 
struct  PassInstrumentorImpl
 
class  PassModel
 
class  PassOptions
 Base container class and manager for all pass options. More...
 
struct  PassPipelineCLParserImpl
 
struct  PatternMatcherValue
 Binds to a specific value and matches it. More...
 
class  PreservedAnalyses
 A utility class to represent the analyses that are known to be preserved. More...
 
struct  RankedTensorTypeStorage
 
struct  RecursivePatternMatcher
 RecursivePatternMatcher that composes. More...
 
struct  ResizableStorage
 
struct  SDBMBinaryExprStorage
 
struct  SDBMConstantExprStorage
 
struct  SDBMDiffExprStorage
 
struct  SDBMExprStorage
 
struct  SDBMNegExprStorage
 
struct  SDBMTermExprStorage
 
struct  ShapedTypeStorage
 Shaped Type Storage. More...
 
struct  SourceMgrDiagnosticHandlerImpl
 
struct  SourceMgrDiagnosticVerifierHandlerImpl
 
struct  SparseElementsAttributeStorage
 An attribute representing a reference to a sparse vector or tensor object. More...
 
struct  StorageUniquerImpl
 This is the implementation of the StorageUniquer class. More...
 
class  StorageUserBase
 
struct  StringAttributeStorage
 An attribute representing a string value. More...
 
struct  SymbolRefAttributeStorage
 An attribute representing a symbol reference. More...
 
struct  TrailingOpResult
 This class provides the implementation for a trailing operation result. More...
 
struct  TupleTypeStorage
 A type representing a collection of other types. More...
 
struct  TypeAttributeStorage
 An attribute representing a reference to a type. More...
 
class  TypeSwitchBase
 
class  TypeUniquer
 
struct  UnrankedMemRefTypeStorage
 
struct  UnrankedTensorTypeStorage
 
struct  ValueRangeOwner
 
class  ValueUseIteratorImpl
 
struct  VectorTypeStorage
 Vector Type Storage and Uniquing. More...
 
class  VerifierPass
 Pass to verify an operation and signal failure if necessary. More...
 

Typedefs

using DenseIterPtrAndSplat = llvm::PointerIntPair< const char *, 1, bool, DenseElementDataPointerTypeTraits >
 Pair of raw pointer and a boolean flag of whether the pointer holds a splat,. More...
 
template<typename T , typename OperationOrValue >
using has_operation_or_value_matcher_t = decltype(std::declval< T >().match(std::declval< OperationOrValue >()))
 
template<typename T >
using first_argument = decltype(first_argument_type(std::declval< T >()))
 Type definition of the first argument to the given callable 'T'. More...
 
template<typename FnT >
using walkResultType = decltype(walkOperations(nullptr, std::declval< FnT >()))
 Utility to provide the return type of a templated walk method. More...
 
template<typename RangeT >
using ValueOfRange = typename std::remove_reference< decltype(*std::begin(std::declval< RangeT & >()))>::type
 
template<typename... >
using void_t = void
 
template<typename Callable , typename... Args>
using is_invocable = decltype(std::declval< Callable & >()(std::declval< Args >()...))
 
template<typename ImplTy , typename... Args>
using has_impltype_getkey_t = decltype(ImplTy::getKey(std::declval< Args >()...))
 Trait to check if ImplTy provides a 'getKey' method with types 'Args'. More...
 
template<typename ImplTy , typename T >
using has_impltype_hash_t = decltype(ImplTy::hashKey(std::declval< T >()))
 Trait to check if ImplTy provides a 'hashKey' method for 'T'. More...
 

Functions

OpToOpPassAdaptorBasegetAdaptorPassBase (Pass *pass)
 
bool isAdaptorPass (Pass *pass)
 
template<int N>
void bindDims (MLIRContext *ctx)
 
template<int N, typename AffineExprTy , typename... AffineExprTy2>
void bindDims (MLIRContext *ctx, AffineExprTy &e, AffineExprTy2 &... exprs)
 
template<typename MatcherClass >
std::enable_if_t< is_detected< detail::has_operation_or_value_matcher_t, MatcherClass, Value >::value, bool > matchOperandOrValueAtIndex (Operation *op, unsigned idx, MatcherClass &matcher)
 Statically switch to a Value matcher. More...
 
template<typename MatcherClass >
std::enable_if_t< is_detected< detail::has_operation_or_value_matcher_t, MatcherClass, Operation * >::value, bool > matchOperandOrValueAtIndex (Operation *op, unsigned idx, MatcherClass &matcher)
 Statically switch to an Operation matcher. More...
 
template<typename TupleT , class CallbackT , std::size_t... Is>
constexpr void enumerateImpl (TupleT &&tuple, CallbackT &&callback, std::index_sequence< Is... >)
 
template<typename... Tys, typename CallbackT >
constexpr void enumerate (std::tuple< Tys... > &tuple, CallbackT &&callback)
 
template<typename Ret , typename Arg >
Arg first_argument_type (Ret(*)(Arg))
 Helper templates to deduce the first argument of a callback parameter. More...
 
template<typename Ret , typename F , typename Arg >
Arg first_argument_type (Ret(F::*)(Arg))
 
void walkOperations (Operation *op, function_ref< void(Operation *op)> callback)
 Walk all of the operations nested under and including the given operation. More...
 
WalkResult walkOperations (Operation *op, function_ref< WalkResult(Operation *op)> callback)
 
template<typename FuncTy , typename ArgT = detail::first_argument<FuncTy>, typename RetT = decltype(std::declval<FuncTy>()(std::declval<ArgT>()))>
std::enable_if< std::is_same< ArgT, Operation * >::value, RetT >::type walkOperations (Operation *op, FuncTy &&callback)
 
template<typename FuncTy , typename ArgT = detail::first_argument<FuncTy>, typename RetT = decltype(std::declval<FuncTy>()(std::declval<ArgT>()))>
std::enable_if<!std::is_same< ArgT, Operation * >::value &&std::is_same< RetT, void >::value, RetT >::type walkOperations (Operation *op, FuncTy &&callback)
 
template<typename FuncTy , typename ArgT = detail::first_argument<FuncTy>, typename RetT = decltype(std::declval<FuncTy>()(std::declval<ArgT>()))>
std::enable_if<!std::is_same< ArgT, Operation * >::value &&std::is_same< RetT, WalkResult >::value, RetT >::type walkOperations (Operation *op, FuncTy &&callback)
 

Variables

template<typename F >
decltype(first_argument_type(&F::operator())) first_argument_type (F)
 

Detailed Description

Check if a Callable type can be invoked with the given set of arg types.

Utilities for detecting if a given trait holds for some set of arguments 'Args'. For example, the given trait could be used to detect if a given type has a copy assignment operator: template<class T> using has_copy_assign_t = decltype(std::declval<T&>() = std::declval<const T&>()); bool fooHasCopyAssign = is_detected<has_copy_assign_t, FooClass>::value;

Typedef Documentation

◆ DenseIterPtrAndSplat

using mlir::detail::DenseIterPtrAndSplat = typedef llvm::PointerIntPair<const char *, 1, bool, DenseElementDataPointerTypeTraits>

Pair of raw pointer and a boolean flag of whether the pointer holds a splat,.

◆ first_argument

template<typename T >
using mlir::detail::first_argument = typedef decltype(first_argument_type(std::declval<T>()))

Type definition of the first argument to the given callable 'T'.

◆ has_impltype_getkey_t

template<typename ImplTy , typename... Args>
using mlir::detail::has_impltype_getkey_t = typedef decltype(ImplTy::getKey(std::declval<Args>()...))

Trait to check if ImplTy provides a 'getKey' method with types 'Args'.

◆ has_impltype_hash_t

template<typename ImplTy , typename T >
using mlir::detail::has_impltype_hash_t = typedef decltype(ImplTy::hashKey(std::declval<T>()))

Trait to check if ImplTy provides a 'hashKey' method for 'T'.

◆ has_operation_or_value_matcher_t

template<typename T , typename OperationOrValue >
using mlir::detail::has_operation_or_value_matcher_t = typedef decltype(std::declval<T>().match(std::declval<OperationOrValue>()))

Trait to check whether T provides a 'match' method with type OperationOrValue.

◆ is_invocable

template<typename Callable , typename... Args>
using mlir::detail::is_invocable = typedef decltype(std::declval<Callable &>()(std::declval<Args>()...))

◆ ValueOfRange

template<typename RangeT >
using mlir::detail::ValueOfRange = typedef typename std::remove_reference<decltype( *std::begin(std::declval<RangeT &>()))>::type

◆ void_t

template<typename... >
using mlir::detail::void_t = typedef void

◆ walkResultType

template<typename FnT >
using mlir::detail::walkResultType = typedef decltype(walkOperations(nullptr, std::declval<FnT>()))

Utility to provide the return type of a templated walk method.

Function Documentation

◆ bindDims() [1/2]

template<int N>
void mlir::detail::bindDims ( MLIRContext ctx)

◆ bindDims() [2/2]

template<int N, typename AffineExprTy , typename... AffineExprTy2>
void mlir::detail::bindDims ( MLIRContext ctx,
AffineExprTy &  e,
AffineExprTy2 &...  exprs 
)

◆ enumerate()

template<typename... Tys, typename CallbackT >
constexpr void mlir::detail::enumerate ( std::tuple< Tys... > &  tuple,
CallbackT &&  callback 
)

◆ enumerateImpl()

template<typename TupleT , class CallbackT , std::size_t... Is>
constexpr void mlir::detail::enumerateImpl ( TupleT &&  tuple,
CallbackT &&  callback,
std::index_sequence< Is... >   
)

◆ first_argument_type() [1/2]

template<typename Ret , typename Arg >
Arg mlir::detail::first_argument_type ( Ret(*)(Arg)  )

Helper templates to deduce the first argument of a callback parameter.

◆ first_argument_type() [2/2]

template<typename Ret , typename F , typename Arg >
Arg mlir::detail::first_argument_type ( Ret(F::*)(Arg)  )

◆ getAdaptorPassBase()

OpToOpPassAdaptorBase * mlir::detail::getAdaptorPassBase ( Pass pass)

Utility function to convert the given class to the base adaptor it is an adaptor pass, returns nullptr otherwise.

◆ isAdaptorPass()

bool mlir::detail::isAdaptorPass ( Pass pass)
inline

Utility function to return if a pass refers to an adaptor pass. Adaptor passes are those that internally execute a pipeline.

◆ matchOperandOrValueAtIndex() [1/2]

template<typename MatcherClass >
std::enable_if_t<is_detected<detail::has_operation_or_value_matcher_t, MatcherClass, Value>::value, bool> mlir::detail::matchOperandOrValueAtIndex ( Operation op,
unsigned  idx,
MatcherClass &  matcher 
)

Statically switch to a Value matcher.

◆ matchOperandOrValueAtIndex() [2/2]

template<typename MatcherClass >
std::enable_if_t<is_detected<detail::has_operation_or_value_matcher_t, MatcherClass, Operation *>::value, bool> mlir::detail::matchOperandOrValueAtIndex ( Operation op,
unsigned  idx,
MatcherClass &  matcher 
)

Statically switch to an Operation matcher.

◆ walkOperations() [1/5]

void mlir::detail::walkOperations ( Operation op,
function_ref< void(Operation *op)>  callback 
)

Walk all of the operations nested under and including the given operation.

Walk all of the operations nested under and including the given operations.

◆ walkOperations() [2/5]

WalkResult mlir::detail::walkOperations ( Operation op,
function_ref< WalkResult(Operation *op)>  callback 
)

Walk all of the operations nested under and including the given operation. This methods walks operations until an interrupt result is returned by the callback.

Walk all of the operations nested under and including the given operations. This methods walks operations until an interrupt signal is received.

◆ walkOperations() [3/5]

template<typename FuncTy , typename ArgT = detail::first_argument<FuncTy>, typename RetT = decltype(std::declval<FuncTy>()(std::declval<ArgT>()))>
std::enable_if<std::is_same<ArgT, Operation *>::value, RetT>::type mlir::detail::walkOperations ( Operation op,
FuncTy &&  callback 
)

Walk all of the operations nested under and including the given operation. This method is selected for callbacks that operation on Operation*.

Example: op->walk([](Operation *op) { ... });

◆ walkOperations() [4/5]

template<typename FuncTy , typename ArgT = detail::first_argument<FuncTy>, typename RetT = decltype(std::declval<FuncTy>()(std::declval<ArgT>()))>
std::enable_if<!std::is_same<ArgT, Operation *>::value && std::is_same<RetT, void>::value, RetT>::type mlir::detail::walkOperations ( Operation op,
FuncTy &&  callback 
)

Walk all of the operations of type 'ArgT' nested under and including the given operation. This method is selected for void returning callbacks that operate on a specific derived operation type.

Example: op->walk([](ReturnOp op) { ... });

◆ walkOperations() [5/5]

template<typename FuncTy , typename ArgT = detail::first_argument<FuncTy>, typename RetT = decltype(std::declval<FuncTy>()(std::declval<ArgT>()))>
std::enable_if<!std::is_same<ArgT, Operation *>::value && std::is_same<RetT, WalkResult>::value, RetT>::type mlir::detail::walkOperations ( Operation op,
FuncTy &&  callback 
)

Walk all of the operations of type 'ArgT' nested under and including the given operation. This method is selected for WalkReturn returning interruptible callbacks that operate on a specific derived operation type.

Example: op->walk([](ReturnOp op) { if (some_invariant) return WalkResult::interrupt(); return WalkResult::advance(); });

Variable Documentation

◆ first_argument_type

template<typename F >
decltype(first_argument_type(&F::operator())) mlir::detail::first_argument_type(F)