MLIR
17.0.0git
|
A helper type converter class that automatically populates the relevant materializations and type conversions for bufferization. More...
#include "mlir/Dialect/Bufferization/Transforms/Bufferize.h"
Public Member Functions | |
BufferizeTypeConverter () | |
Registers conversions into BufferizeTypeConverter. More... | |
![]() | |
template<typename FnT , typename T = typename llvm::function_traits< std::decay_t<FnT>>::template arg_t<0>> | |
void | addConversion (FnT &&callback) |
Register a conversion function. More... | |
template<typename FnT , typename T = typename llvm::function_traits< std::decay_t<FnT>>::template arg_t<1>> | |
void | addArgumentMaterialization (FnT &&callback) |
Register a materialization function, which must be convertible to the following form: std::optional<Value>(OpBuilder &, T, ValueRange, Location) , where T is any subclass of Type . More... | |
template<typename FnT , typename T = typename llvm::function_traits< std::decay_t<FnT>>::template arg_t<1>> | |
void | addSourceMaterialization (FnT &&callback) |
This method registers a materialization that will be called when converting a legal type to an illegal source type. More... | |
template<typename FnT , typename T = typename llvm::function_traits< std::decay_t<FnT>>::template arg_t<1>> | |
void | addTargetMaterialization (FnT &&callback) |
This method registers a materialization that will be called when converting type from an illegal, or source, type to a legal type. More... | |
LogicalResult | convertType (Type t, SmallVectorImpl< Type > &results) |
Convert the given type. More... | |
Type | convertType (Type t) |
This hook simplifies defining 1-1 type conversions. More... | |
LogicalResult | convertTypes (TypeRange types, SmallVectorImpl< Type > &results) |
Convert the given set of types, filling 'results' as necessary. More... | |
bool | isLegal (Type type) |
Return true if the given type is legal for this type converter, i.e. More... | |
template<typename RangeT > | |
std::enable_if_t<!std::is_convertible< RangeT, Type >::value &&!std::is_convertible< RangeT, Operation * >::value, bool > | isLegal (RangeT &&range) |
Return true if all of the given types are legal for this type converter. More... | |
bool | isLegal (Operation *op) |
Return true if the given operation has legal operand and result types. More... | |
bool | isLegal (Region *region) |
Return true if the types of block arguments within the region are legal. More... | |
bool | isSignatureLegal (FunctionType ty) |
Return true if the inputs and outputs of the given function type are legal. More... | |
LogicalResult | convertSignatureArg (unsigned inputNo, Type type, SignatureConversion &result) |
This method allows for converting a specific argument of a signature. More... | |
LogicalResult | convertSignatureArgs (TypeRange types, SignatureConversion &result, unsigned origInputOffset=0) |
std::optional< SignatureConversion > | convertBlockSignature (Block *block) |
This function converts the type signature of the given block, by invoking 'convertSignatureArg' for each argument. More... | |
Value | materializeArgumentConversion (OpBuilder &builder, Location loc, Type resultType, ValueRange inputs) |
Materialize a conversion from a set of types into one result type by generating a cast sequence of some kind. More... | |
Value | materializeSourceConversion (OpBuilder &builder, Location loc, Type resultType, ValueRange inputs) |
Value | materializeTargetConversion (OpBuilder &builder, Location loc, Type resultType, ValueRange inputs) |
A helper type converter class that automatically populates the relevant materializations and type conversions for bufferization.
Definition at line 43 of file Bufferize.h.
BufferizeTypeConverter::BufferizeTypeConverter | ( | ) |
Registers conversions into BufferizeTypeConverter.
Definition at line 52 of file Bufferize.cpp.
References mlir::TypeConverter::addArgumentMaterialization(), mlir::TypeConverter::addConversion(), mlir::TypeConverter::addSourceMaterialization(), mlir::TypeConverter::addTargetMaterialization(), mlir::bufferization::castOrReallocMemRefValue(), mlir::OpBuilder::create(), mlir::Type::dyn_cast(), mlir::failed(), and materializeToTensor().