MLIR 22.0.0git
mlir::op_definition_impl Namespace Reference

Typedefs

template<typename T, typename... Args>
using has_single_result_fold_trait
 Trait to check if T provides a 'foldTrait' method for single result operations.
template<typename T>
using detect_has_single_result_fold_trait
template<typename T, typename... Args>
using has_fold_trait
 Trait to check if T provides a general 'foldTrait' method.
template<typename T>
using detect_has_fold_trait = llvm::is_detected<has_fold_trait, T>
template<typename T>
using detect_has_any_fold_trait
 Trait to check if T provides any foldTrait method.
template<typename T, typename... Args>
using has_verify_trait = decltype(T::verifyTrait(std::declval<Operation *>()))
 Trait to check if T provides a verifyTrait method.
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
 Trait to check if T provides a verifyTrait method.
template<typename T>
using detect_has_verify_region_trait

Functions

template<template< typename T > class... Traits>
bool hasTrait (TypeID traitID)
 Returns true if this given Trait ID matches the IDs of any of the provided trait types Traits.
template<>
bool hasTrait (TypeID traitID)
template<typename Trait>
static std::enable_if_t< detect_has_single_result_fold_trait< Trait >::value, LogicalResult > foldTrait (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.
template<typename Trait>
static std::enable_if_t< detect_has_fold_trait< Trait >::value, LogicalResult > foldTrait (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.
template<typename Trait>
static std::enable_if_t<!detect_has_any_fold_trait< Trait >::value, LogicalResult > foldTrait (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.
template<typename T>
LogicalResult verifyTrait (Operation *op)
 Verify the given trait if it provides a verifier.
template<typename... Ts>
LogicalResult verifyTraits (Operation *op)
 Given a set of traits, return the result of verifying the given operation.
template<typename T>
LogicalResult verifyRegionTrait (Operation *op)
 Verify the given trait if it provides a region verifier.
template<typename... Ts>
LogicalResult verifyRegionTraits (Operation *op)
 Given a set of traits, return the result of verifying the regions of the given operation.

Typedef Documentation

◆ detect_has_any_fold_trait

Initial value:
std::disjunction<detect_has_fold_trait<T>,
llvm::is_detected< has_single_result_fold_trait, T > detect_has_single_result_fold_trait

Trait to check if T provides any foldTrait method.

Definition at line 1564 of file OpDefinition.h.

◆ detect_has_fold_trait

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

Definition at line 1561 of file OpDefinition.h.

◆ detect_has_single_result_fold_trait

Initial value:
llvm::is_detected<has_single_result_fold_trait, T>

Definition at line 1552 of file OpDefinition.h.

◆ detect_has_verify_region_trait

Initial value:
llvm::is_detected<has_verify_region_trait, T>

Definition at line 1630 of file OpDefinition.h.

◆ detect_has_verify_trait

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

Definition at line 1623 of file OpDefinition.h.

◆ has_fold_trait

template<typename T, typename... Args>
using mlir::op_definition_impl::has_fold_trait
Initial value:
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 1556 of file OpDefinition.h.

◆ has_single_result_fold_trait

template<typename T, typename... Args>
using mlir::op_definition_impl::has_single_result_fold_trait
Initial value:
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 1549 of file OpDefinition.h.

◆ has_verify_region_trait

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

Trait to check if T provides a verifyTrait method.

Definition at line 1627 of file OpDefinition.h.

◆ has_verify_trait

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

Trait to check if T provides a verifyTrait method.

Definition at line 1621 of file OpDefinition.h.

Function Documentation

◆ foldTrait() [1/3]

template<typename Trait>
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 1603 of file OpDefinition.h.

References foldTrait().

◆ foldTrait() [2/3]

template<typename Trait>
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 1573 of file OpDefinition.h.

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

Referenced by foldTrait(), foldTrait(), and foldTraits().

◆ foldTrait() [3/3]

template<typename Trait>
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 1594 of file OpDefinition.h.

References foldTrait().

◆ foldTraits()

template<typename... Ts>
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 1610 of file OpDefinition.h.

References foldTrait(), foldTraits(), and success().

Referenced by foldTraits().

◆ hasTrait() [1/2]

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

Returns true if this given Trait ID matches the IDs of any of the provided trait types Traits.

Definition at line 1530 of file OpDefinition.h.

References mlir::TypeID::get(), and hasTrait().

Referenced by hasTrait().

◆ hasTrait() [2/2]

template<>
bool mlir::op_definition_impl::hasTrait ( TypeID traitID)
inline

Definition at line 1538 of file OpDefinition.h.

References hasTrait().

◆ verifyRegionTrait()

template<typename T>
LogicalResult mlir::op_definition_impl::verifyRegionTrait ( Operation * op)

Verify the given trait if it provides a region verifier.

Definition at line 1650 of file OpDefinition.h.

References success(), and verifyRegionTrait().

Referenced by verifyRegionTrait(), and verifyRegionTraits().

◆ 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 1660 of file OpDefinition.h.

References success(), verifyRegionTrait(), and verifyRegionTraits().

Referenced by verifyRegionTraits().

◆ verifyTrait()

template<typename T>
LogicalResult mlir::op_definition_impl::verifyTrait ( Operation * op)

Verify the given trait if it provides a verifier.

Definition at line 1635 of file OpDefinition.h.

References success(), and verifyTrait().

Referenced by verifyTrait(), and verifyTraits().

◆ verifyTraits()

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

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

Definition at line 1644 of file OpDefinition.h.

References success(), verifyTrait(), and verifyTraits().

Referenced by verifyTraits().