MLIR  16.0.0git
Typedefs | Functions
mlir::op_definition_impl Namespace Reference

Typedefs

template<typename T , typename... Args>
using has_single_result_fold_trait = decltype(T::foldTrait(std::declval< Operation * >(), std::declval< ArrayRef< Attribute > >()))
 Trait to check if T provides a 'foldTrait' method for single result operations. More...
 
template<typename T >
using detect_has_single_result_fold_trait = llvm::is_detected< has_single_result_fold_trait, T >
 
template<typename T , typename... Args>
using has_fold_trait = decltype(T::foldTrait(std::declval< Operation * >(), std::declval< ArrayRef< Attribute > >(), std::declval< SmallVectorImpl< OpFoldResult > & >()))
 Trait to check if T provides a general 'foldTrait' method. More...
 
template<typename T >
using detect_has_fold_trait = llvm::is_detected< has_fold_trait, T >
 
template<typename T >
using detect_has_any_fold_trait = std::disjunction< detect_has_fold_trait< T >, detect_has_single_result_fold_trait< T > >
 Trait to check if T provides any foldTrait method. More...
 
template<typename T , typename... Args>
using has_verify_trait = decltype(T::verifyTrait(std::declval< Operation * >()))
 Trait to check if T provides a verifyTrait method. More...
 
template<typename T >
using detect_has_verify_trait = llvm::is_detected< has_verify_trait, T >
 
template<typename T , typename... Args>
using has_verify_region_trait = decltype(T::verifyRegionTrait(std::declval< Operation * >()))
 Trait to check if T provides a verifyTrait method. More...
 
template<typename T >
using detect_has_verify_region_trait = llvm::is_detected< has_verify_region_trait, T >
 

Functions

template<template< typename T > class... Traits>
static bool hasTrait (TypeID traitID)
 Returns true if this given Trait ID matches the IDs of any of the provided trait types Traits. More...
 
template<typename Trait >
static std::enable_if_t< detect_has_single_result_fold_trait< Trait >::value, LogicalResultfoldTrait (Operation *op, ArrayRef< Attribute > operands, SmallVectorImpl< OpFoldResult > &results)
 Returns the result of folding a trait that implements a foldTrait function that is specialized for operations that have a single result. More...
 
template<typename Trait >
static std::enable_if_t< detect_has_fold_trait< Trait >::value, LogicalResultfoldTrait (Operation *op, ArrayRef< Attribute > operands, SmallVectorImpl< OpFoldResult > &results)
 Returns the result of folding a trait that implements a generalized foldTrait function that is supports any operation type. More...
 
template<typename Trait >
static std::enable_if_t<!detect_has_any_fold_trait< Trait >::value, LogicalResultfoldTrait (Operation *, ArrayRef< Attribute >, SmallVectorImpl< OpFoldResult > &)
 
template<typename... Ts>
static LogicalResult foldTraits (Operation *op, ArrayRef< Attribute > operands, SmallVectorImpl< OpFoldResult > &results)
 Given a tuple type containing a set of traits, return the result of folding the given operation. More...
 
template<typename T >
std::enable_if_t< detect_has_verify_trait< T >::value, LogicalResultverifyTrait (Operation *op)
 Verify the given trait if it provides a verifier. More...
 
template<typename T >
std::enable_if_t<!detect_has_verify_trait< T >::value, LogicalResultverifyTrait (Operation *)
 
template<typename... Ts>
LogicalResult verifyTraits (Operation *op)
 Given a set of traits, return the result of verifying the given operation. More...
 
template<typename T >
std::enable_if_t< detect_has_verify_region_trait< T >::value, LogicalResultverifyRegionTrait (Operation *op)
 Verify the given trait if it provides a region verifier. More...
 
template<typename T >
std::enable_if_t<!detect_has_verify_region_trait< T >::value, LogicalResultverifyRegionTrait (Operation *)
 
template<typename... Ts>
LogicalResult verifyRegionTraits (Operation *op)
 Given a set of traits, return the result of verifying the regions of the given operation. More...
 

Typedef Documentation

◆ detect_has_any_fold_trait

Trait to check if T provides any foldTrait method.

Definition at line 1498 of file OpDefinition.h.

◆ detect_has_fold_trait

template<typename T >
using mlir::op_definition_impl::detect_has_fold_trait = typedef llvm::is_detected<has_fold_trait, T>

Definition at line 1493 of file OpDefinition.h.

◆ detect_has_single_result_fold_trait

template<typename T >
using mlir::op_definition_impl::detect_has_single_result_fold_trait = typedef llvm::is_detected<has_single_result_fold_trait, T>

Definition at line 1485 of file OpDefinition.h.

◆ detect_has_verify_region_trait

template<typename T >
using mlir::op_definition_impl::detect_has_verify_region_trait = typedef llvm::is_detected<has_verify_region_trait, T>

Definition at line 1562 of file OpDefinition.h.

◆ detect_has_verify_trait

template<typename T >
using mlir::op_definition_impl::detect_has_verify_trait = typedef llvm::is_detected<has_verify_trait, T>

Definition at line 1554 of file OpDefinition.h.

◆ has_fold_trait

template<typename T , typename... Args>
using mlir::op_definition_impl::has_fold_trait = typedef decltype(T::foldTrait(std::declval<Operation *>(), std::declval<ArrayRef<Attribute> >(), std::declval<SmallVectorImpl<OpFoldResult> &>()))

Trait to check if T provides a general 'foldTrait' method.

Definition at line 1491 of file OpDefinition.h.

◆ has_single_result_fold_trait

template<typename T , typename... Args>
using mlir::op_definition_impl::has_single_result_fold_trait = typedef decltype(T::foldTrait( std::declval<Operation *>(), std::declval<ArrayRef<Attribute> >()))

Trait to check if T provides a 'foldTrait' method for single result operations.

Definition at line 1482 of file OpDefinition.h.

◆ has_verify_region_trait

template<typename T , typename... Args>
using mlir::op_definition_impl::has_verify_region_trait = typedef decltype(T::verifyRegionTrait(std::declval<Operation *>()))

Trait to check if T provides a verifyTrait method.

Definition at line 1559 of file OpDefinition.h.

◆ has_verify_trait

template<typename T , typename... Args>
using mlir::op_definition_impl::has_verify_trait = typedef decltype(T::verifyTrait(std::declval<Operation *>()))

Trait to check if T provides a verifyTrait method.

Definition at line 1552 of file OpDefinition.h.

Function Documentation

◆ foldTrait() [1/3]

template<typename Trait >
static std::enable_if_t<detect_has_single_result_fold_trait<Trait>::value, LogicalResult> mlir::op_definition_impl::foldTrait ( Operation op,
ArrayRef< Attribute operands,
SmallVectorImpl< OpFoldResult > &  results 
)
static

Returns the result of folding a trait that implements a foldTrait function that is specialized for operations that have a single result.

Definition at line 1505 of file OpDefinition.h.

References mlir::failure(), foldTrait(), mlir::Operation::getResult(), mlir::Operation::hasTrait(), mlir::success(), and value.

◆ foldTrait() [2/3]

template<typename Trait >
static std::enable_if_t<detect_has_fold_trait<Trait>::value, LogicalResult> mlir::op_definition_impl::foldTrait ( Operation op,
ArrayRef< Attribute operands,
SmallVectorImpl< OpFoldResult > &  results 
)
static

Returns the result of folding a trait that implements a generalized foldTrait function that is supports any operation type.

Definition at line 1526 of file OpDefinition.h.

References mlir::failure(), foldTrait(), and value.

◆ foldTrait() [3/3]

template<typename Trait >
static std::enable_if_t<!detect_has_any_fold_trait<Trait>::value, LogicalResult> mlir::op_definition_impl::foldTrait ( Operation ,
ArrayRef< Attribute ,
SmallVectorImpl< OpFoldResult > &   
)
inlinestatic

Definition at line 1535 of file OpDefinition.h.

References mlir::failure().

Referenced by foldTrait(), and hasTrait().

◆ foldTraits()

template<typename... Ts>
static LogicalResult mlir::op_definition_impl::foldTraits ( Operation op,
ArrayRef< Attribute operands,
SmallVectorImpl< OpFoldResult > &  results 
)
static

Given a tuple type containing a set of traits, return the result of folding the given operation.

Definition at line 1542 of file OpDefinition.h.

References mlir::succeeded(), and mlir::success().

Referenced by mlir::Op< AffineDmaStartOp, OpTrait::MemRefsNormalizable, OpTrait::VariadicOperands, OpTrait::ZeroResults, OpTrait::OpInvariants, AffineMapAccessInterface::Trait >::attachInterface().

◆ hasTrait()

template<template< typename T > class... Traits>
static bool mlir::op_definition_impl::hasTrait ( TypeID  traitID)
static

◆ verifyRegionTrait() [1/2]

template<typename T >
std::enable_if_t<detect_has_verify_region_trait<T>::value, LogicalResult> mlir::op_definition_impl::verifyRegionTrait ( Operation op)

Verify the given trait if it provides a region verifier.

Definition at line 1585 of file OpDefinition.h.

References value, and verifyRegionTrait().

◆ verifyRegionTrait() [2/2]

template<typename T >
std::enable_if_t<!detect_has_verify_region_trait<T>::value, LogicalResult> mlir::op_definition_impl::verifyRegionTrait ( Operation )
inline

Definition at line 1591 of file OpDefinition.h.

References mlir::success().

Referenced by verifyRegionTrait().

◆ verifyRegionTraits()

template<typename... Ts>
LogicalResult mlir::op_definition_impl::verifyRegionTraits ( Operation op)

Given a set of traits, return the result of verifying the regions of the given operation.

Definition at line 1598 of file OpDefinition.h.

References mlir::succeeded(), and mlir::success().

Referenced by mlir::Op< AffineDmaStartOp, OpTrait::MemRefsNormalizable, OpTrait::VariadicOperands, OpTrait::ZeroResults, OpTrait::OpInvariants, AffineMapAccessInterface::Trait >::attachInterface().

◆ verifyTrait() [1/2]

template<typename T >
std::enable_if_t<detect_has_verify_trait<T>::value, LogicalResult> mlir::op_definition_impl::verifyTrait ( Operation op)

Verify the given trait if it provides a verifier.

Definition at line 1567 of file OpDefinition.h.

References value, and verifyTrait().

◆ verifyTrait() [2/2]

template<typename T >
std::enable_if_t<!detect_has_verify_trait<T>::value, LogicalResult> mlir::op_definition_impl::verifyTrait ( Operation )
inline

◆ verifyTraits()

template<typename... Ts>
LogicalResult mlir::op_definition_impl::verifyTraits ( Operation op)