MLIR 23.0.0git
TosaOps.cpp File Reference
#include "mlir/Dialect/Tosa/IR/TosaOps.h"
#include "mlir/Dialect/Quant/IR/Quant.h"
#include "mlir/Dialect/Shard/Interfaces/ShardingInterface.h"
#include "mlir/Dialect/Tensor/IR/Tensor.h"
#include "mlir/Dialect/Tosa/Utils/QuantUtils.h"
#include "mlir/Dialect/Tosa/Utils/ShapeUtils.h"
#include "mlir/Dialect/Utils/IndexingUtils.h"
#include "mlir/Dialect/Utils/VerificationUtils.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/DialectImplementation.h"
#include "mlir/IR/Matchers.h"
#include "mlir/IR/TypeUtilities.h"
#include "mlir/Interfaces/InferTypeOpInterface.h"
#include "mlir/Transforms/InliningUtils.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/SmallVectorExtras.h"
#include "llvm/ADT/TypeSwitch.h"
#include <numeric>
#include <type_traits>
#include "mlir/Dialect/Tosa/IR/TosaOpsDialect.cpp.inc"
#include "mlir/Dialect/Tosa/Utils/ConversionUtils.h"
#include "mlir/Dialect/Tosa/IR/TosaAvailability.cpp.inc"
#include "mlir/Dialect/Tosa/IR/TosaEnums.cpp.inc"
#include "mlir/Dialect/Tosa/IR/TosaInterfaces.cpp.inc"
#include "mlir/Dialect/Tosa/IR/TosaOpAvailabilityImpl.inc"
#include "mlir/Dialect/Tosa/IR/TosaDialectBytecode.cpp.inc"
#include "mlir/Dialect/Tosa/IR/TosaOpsTypesBase.cpp.inc"
#include "mlir/Dialect/Tosa/IR/TosaOps.cpp.inc"
#include "mlir/Dialect/Tosa/IR/TosaAttributes.cpp.inc"

Go to the source code of this file.

Classes

class  ConvInferShapeAdaptorBase
class  ConvInferShapeAdaptor< Conv2DOp::Adaptor >
class  ConvInferShapeAdaptor< Conv2DBlockScaledOp::Adaptor >
class  ConvInferShapeAdaptor< Conv3DOp::Adaptor >

Macros

#define GET_TYPEDEF_LIST
#define GET_OP_LIST
#define GET_ATTRDEF_LIST
#define ZERO_POINT_HELPER(OP, OPERAND_NAME, SIGN_EXTEND)
#define COMPATIBLE_RETURN_TYPES(OP)
#define REDUCE_SHAPE_INFER(OP)
#define NARY_SHAPE_INFER(OP)
#define GET_ATTRDEF_CLASSES
#define GET_TYPEDEF_CLASSES
#define GET_OP_CLASSES

Functions

static SmallVector< int64_tconvertToMlirShape (ArrayRef< int64_t > shape)
static std::optional< int64_tidivCheck (const int64_t lhs, const int64_t rhs)
static Type getStorageElementTypeOrSelf (Type type)
static Type getStorageElementTypeOrSelf (Value value)
static LogicalResult verifyRescaleValueAndZpTypes (Operation *op, Value val, Value valZp, StringRef name)
LogicalResult tryUpdateDimOrFailure (Operation *op, int64_t &currDim, const int64_t newDim, const StringRef operandName, const StringRef dimName)
static void printShapeToDiagnostic (InFlightDiagnostic &diag, ArrayRef< int64_t > shape)
static LogicalResult verifyOutputShapeCompatibleWithExpected (Operation *op, ShapedType outputType, ArrayRef< int64_t > expectedShape, StringRef outputName="output")
LogicalResult verifyConvOutputSize (Operation *op, const int64_t inputSize, const int64_t kernelSize, const int64_t outputSize, const int64_t padBefore, const int64_t padAfter, const int64_t stride, const int64_t dilation, const llvm::StringRef dimName, const llvm::StringRef dimAxis, const llvm::StringRef padBeforeName, const llvm::StringRef padAfterName)
template<typename T>
static LogicalResult verifyConvOp (T op)
template<typename T>
static LogicalResult verifyConvOpModes (T op)
template<typename T>
static LogicalResult verifyConvOpErrorIf (T op)
static LogicalResult errorIfTypeOrShapeMismatch (Operation *op, Type type1, StringRef name1, Type type2, StringRef name2)
static LogicalResult errorIfTypeOrShapeMismatch (Operation *op, ValueRange list1, StringRef name1, ValueRange list2, StringRef name2)
static LogicalResult errorIfShapeNotSizeOne (Operation *op, Type type)
template<typename T>
static LogicalResult verifyVariableOpErrorIf (T op, Type type, StringRef name)
template<typename T>
static LogicalResult verifySameElementTypes (T op, Type aType, Type bType, StringRef aName="input", StringRef bName="output")
static LogicalResult verifyPoolingOpImpl (Operation *op, ArrayRef< int64_t > kernel, ArrayRef< int64_t > strides, ArrayRef< int64_t > padding, Value input, Value output)
template<typename T>
static LogicalResult verifyPoolingOp (T op)
template<typename T>
static LogicalResult verifyAvgPoolCommonTypeAndZpChecks (T op)
template<typename T, typename std::enable_if< IsSupportedAdaptivePoolConstShapeVerifyOp< T >, int >::type = 0>
static void extractAdaptivePoolingConstShapeOperands (T op, AdaptivePoolingConstShapeValues &values)
static void buildConvOpWithQuantInfo (OpBuilder &builder, OperationState &result, Type outputType, Value input, Value weight, Value bias, DenseI64ArrayAttr pad, DenseI64ArrayAttr stride, DenseI64ArrayAttr dilation, TypeAttr accType)
 This builder is called on all convolution operators except TransposeConv, which has specialized output shape semantics.
static void buildTransConvOpWithQuantInfo (OpBuilder &builder, OperationState &result, Type outputType, Value input, Value weight, Value bias, DenseI64ArrayAttr outpad, DenseI64ArrayAttr stride, TypeAttr accType)
 Handles tosa.transpose_conv2d which has outpad and output shape attributes.
static void buildMatMulOpWithQuantInfo (OpBuilder &builder, OperationState &result, Type outputType, Value a, Value b)
 The tosa.matmul op is also intended to be generated where a fully_connected op must be constructed where the weight is not a constant.
static void buildAvgPool2dOpWithQuantInfo (OpBuilder &builder, OperationState &result, Type outputType, Value input, DenseArrayAttr kernel, DenseArrayAttr stride, DenseArrayAttr pad, TypeAttr accType)
 Both the tosa.avg_pool2d and unary ops use the same UnaryOpQuantizationAttr but avg_pool operator has its own builder as it has additional parameters not part of the unary ops.
static void buildAvgPool2dAdaptiveOpWithQuantInfo (OpBuilder &builder, OperationState &result, Type outputType, Value input, DenseI64ArrayAttr kernel, DenseI64ArrayAttr stride, DenseI64ArrayAttr pad, TypeAttr accType)
 This builder mirrors avg_pool2d quant-info handling and materializes kernel/stride/pad as const_shape operands for avg_pool2d_adaptive.
static void buildNegateOpWithQuantInfo (OpBuilder &builder, OperationState &result, Type outputType, Value input)
 This builder is called on single-parameter negate operator to construct input and output zero points based on their types.
static void buildPadOpWithQuantInfo (OpBuilder &builder, OperationState &result, Type outputType, Value input, Value paddings)
 This builder is called on TOSA pad operator that needs to create its own OptionalAttr quantization_attr parameter to scale the padding values correctly.
static void buildVariableOp (OpBuilder &builder, OperationState &result, StringRef name, Type variableType, Attribute initialValue)
static FailureOr< int64_tresolveBroadcastDim (const int64_t dim1, const int64_t dim2)
static LogicalResult resolveBroadcastShape (const ValueShapeRange &operands, SmallVector< int64_t > &outShape)
static LogicalResult verifyDimIsPowerOfTwo (Operation *op, const int64_t dimSize, const llvm::StringRef dimName)
static FailureOr< int64_tgetZeroPoint (Value val, bool signExtend)
template<typename T>
static LogicalResult verifyZeroPoint (T op, Value val, const int64_t &zp, const std::string &operand)
static LogicalResult verifyZeroPoint (tosa::RescaleOp op, Value zpVal, const int64_t &zp, const std::string &operand)
static LogicalResult ReduceInferReturnTypes (ShapeAdaptor operandShape, Type inputType, IntegerAttr axis, SmallVectorImpl< ShapedTypeComponents > &inferredReturnShapes)
template<typename T>
static LogicalResult verifyReduceOp (T op)
static LogicalResult NAryInferReturnTypes (const ValueShapeRange &operands, SmallVectorImpl< ShapedTypeComponents > &inferredReturnShapes)
static LogicalResult poolingInferReturnTypes (ShapeAdaptor inputShape, ArrayRef< int64_t > kernel, ArrayRef< int64_t > stride, ArrayRef< int64_t > pad, SmallVectorImpl< ShapedTypeComponents > &inferredReturnShapes)
template<typename AdaptorT>
LogicalResult inferConvReturnTypeComponents (AdaptorT adaptor, SmallVectorImpl< ShapedTypeComponents > &inferredReturnShapes)
static void printInitializationList (OpAsmPrinter &parser, Block::BlockArgListType blocksArgs, ValueRange initializers, StringRef prefix="")

Variables

template<typename T>
static constexpr bool IsSupportedAdaptivePoolConstShapeVerifyOp

Macro Definition Documentation

◆ COMPATIBLE_RETURN_TYPES

#define COMPATIBLE_RETURN_TYPES ( OP)
Value:
bool OP::isCompatibleReturnTypes(TypeRange l, TypeRange r) { \
if (l.size() != r.size() || l.size() != 1) \
return false; \
return false; \
return succeeded(verifyCompatibleShape(l[0], r[0])); \
}
This class provides an abstraction over the various different ranges of value types.
Definition TypeRange.h:40
Type getElementTypeOrSelf(Type type)
Return the element type or return the type itself.
LogicalResult verifyCompatibleShape(ArrayRef< int64_t > shape1, ArrayRef< int64_t > shape2)
Returns success if the given two shapes are compatible.

Definition at line 3951 of file TosaOps.cpp.

◆ GET_ATTRDEF_CLASSES

#define GET_ATTRDEF_CLASSES

Definition at line 5836 of file TosaOps.cpp.

◆ GET_ATTRDEF_LIST

#define GET_ATTRDEF_LIST

◆ GET_OP_CLASSES

#define GET_OP_CLASSES

Definition at line 5849 of file TosaOps.cpp.

◆ GET_OP_LIST

#define GET_OP_LIST

◆ GET_TYPEDEF_CLASSES

#define GET_TYPEDEF_CLASSES

Definition at line 5842 of file TosaOps.cpp.

◆ GET_TYPEDEF_LIST

#define GET_TYPEDEF_LIST

◆ NARY_SHAPE_INFER

#define NARY_SHAPE_INFER ( OP)
Value:
LogicalResult OP::inferReturnTypeComponents( \
MLIRContext *context, ::std::optional<Location> location, \
ValueShapeRange operands, DictionaryAttr attributes, \
PropertyRef properties, RegionRange regions, \
SmallVectorImpl<ShapedTypeComponents> &inferredReturnShapes) { \
return NAryInferReturnTypes(operands, inferredReturnShapes); \
}
static LogicalResult NAryInferReturnTypes(const ValueShapeRange &operands, SmallVectorImpl< ShapedTypeComponents > &inferredReturnShapes)
Definition TosaOps.cpp:4041
MLIRContext is the top-level object for a collection of MLIR operations.
Definition MLIRContext.h:63
Type-safe wrapper around a void* for passing properties, including the properties structs of operatio...
This class provides an abstraction over the different types of ranges over Regions.
Definition Region.h:357
Range of values and shapes (corresponding effectively to Shapes dialect's ValueShape type concept).

Definition at line 4053 of file TosaOps.cpp.

◆ REDUCE_SHAPE_INFER

#define REDUCE_SHAPE_INFER ( OP)
Value:
LogicalResult OP::inferReturnTypeComponents( \
MLIRContext *context, ::std::optional<Location> location, \
OP::Adaptor adaptor, \
SmallVectorImpl<ShapedTypeComponents> &inferredReturnShapes) { \
Type inputType = \
llvm::cast<TensorType>(adaptor.getInput().getType()).getElementType(); \
ShapeAdaptor inputShape(adaptor.getInput().getType()); \
const Properties &prop = adaptor.getProperties(); \
return ReduceInferReturnTypes(inputShape, inputType, prop.axis, \
inferredReturnShapes); \
} \
COMPATIBLE_RETURN_TYPES(OP)
static LogicalResult ReduceInferReturnTypes(ShapeAdaptor operandShape, Type inputType, IntegerAttr axis, SmallVectorImpl< ShapedTypeComponents > &inferredReturnShapes)
Definition TosaOps.cpp:3935
Adaptor class to abstract the differences between whether value is from a ShapedType or ShapedTypeCom...
Instances of the Type class are uniqued, have an immutable identifier and an optional mutable compone...
Definition Types.h:74

Definition at line 3960 of file TosaOps.cpp.

◆ ZERO_POINT_HELPER

#define ZERO_POINT_HELPER ( OP,
OPERAND_NAME,
SIGN_EXTEND )
Value:
FailureOr<int64_t> tosa::OP::get##OPERAND_NAME##ZeroPoint() { \
return getZeroPoint(get##OPERAND_NAME##Zp(), SIGN_EXTEND); \
} \
LogicalResult tosa::OP::verify##OPERAND_NAME##ZeroPoint(int64_t zp) { \
return verifyZeroPoint(*this, get##OPERAND_NAME##Zp(), zp, #OPERAND_NAME); \
}
static FailureOr< int64_t > getZeroPoint(Value val, bool signExtend)
Definition TosaOps.cpp:3104
static LogicalResult verifyZeroPoint(T op, Value val, const int64_t &zp, const std::string &operand)
Definition TosaOps.cpp:3131
auto get(MLIRContext *context, Ts &&...params)
Helper method that injects context only if needed, this helps unify some of the attribute constructio...

Definition at line 3173 of file TosaOps.cpp.

Function Documentation

◆ buildAvgPool2dAdaptiveOpWithQuantInfo()

void buildAvgPool2dAdaptiveOpWithQuantInfo ( OpBuilder & builder,
OperationState & result,
Type outputType,
Value input,
DenseI64ArrayAttr kernel,
DenseI64ArrayAttr stride,
DenseI64ArrayAttr pad,
TypeAttr accType )
static

This builder mirrors avg_pool2d quant-info handling and materializes kernel/stride/pad as const_shape operands for avg_pool2d_adaptive.

Definition at line 1524 of file TosaOps.cpp.

References mlir::detail::DenseArrayAttrImpl< T >::asArrayRef(), b, mlir::tosa::buildUnaryOpQuantizationAttr(), mlir::tosa::createZeroPointTensor(), mlir::emitError(), mlir::tosa::getTosaConstShape(), mlir::Value::getType(), and result.

◆ buildAvgPool2dOpWithQuantInfo()

void buildAvgPool2dOpWithQuantInfo ( OpBuilder & builder,
OperationState & result,
Type outputType,
Value input,
DenseArrayAttr kernel,
DenseArrayAttr stride,
DenseArrayAttr pad,
TypeAttr accType )
static

Both the tosa.avg_pool2d and unary ops use the same UnaryOpQuantizationAttr but avg_pool operator has its own builder as it has additional parameters not part of the unary ops.

Definition at line 1480 of file TosaOps.cpp.

References mlir::tosa::buildUnaryOpQuantizationAttr(), mlir::tosa::createZeroPointTensor(), mlir::emitError(), mlir::Value::getType(), and result.

◆ buildConvOpWithQuantInfo()

void buildConvOpWithQuantInfo ( OpBuilder & builder,
OperationState & result,
Type outputType,
Value input,
Value weight,
Value bias,
DenseI64ArrayAttr pad,
DenseI64ArrayAttr stride,
DenseI64ArrayAttr dilation,
TypeAttr accType )
static

This builder is called on all convolution operators except TransposeConv, which has specialized output shape semantics.

The builder also defines the bitwidth of the output given the bit width of the input & weight content.

Definition at line 1405 of file TosaOps.cpp.

References mlir::tosa::buildConvOpQuantizationAttr(), mlir::tosa::buildConvOpResultTypeInfo(), mlir::tosa::createZPsAsConst(), and result.

◆ buildMatMulOpWithQuantInfo()

void buildMatMulOpWithQuantInfo ( OpBuilder & builder,
OperationState & result,
Type outputType,
Value a,
Value b )
static

The tosa.matmul op is also intended to be generated where a fully_connected op must be constructed where the weight is not a constant.

In this case, the fully_connected op must be expressed using matmul. TODO: Add link to the leglization document explaining this.

Definition at line 1451 of file TosaOps.cpp.

References b, mlir::tosa::buildMatMulOpQuantizationAttr(), mlir::tosa::createZPsAsConst(), mlir::Builder::getI32Type(), mlir::Builder::getIntegerType(), getStorageElementTypeOrSelf(), mlir::Value::getType(), and result.

◆ buildNegateOpWithQuantInfo()

void buildNegateOpWithQuantInfo ( OpBuilder & builder,
OperationState & result,
Type outputType,
Value input )
static

This builder is called on single-parameter negate operator to construct input and output zero points based on their types.

Definition at line 1571 of file TosaOps.cpp.

References mlir::tosa::buildUnaryOpQuantizationAttr(), mlir::tosa::createZeroPointTensor(), mlir::emitError(), mlir::Value::getType(), and result.

◆ buildPadOpWithQuantInfo()

void buildPadOpWithQuantInfo ( OpBuilder & builder,
OperationState & result,
Type outputType,
Value input,
Value paddings )
static

This builder is called on TOSA pad operator that needs to create its own OptionalAttr quantization_attr parameter to scale the padding values correctly.

No pad_const is interpreted as zero-padding.

Definition at line 1611 of file TosaOps.cpp.

References mlir::tosa::buildPadOpQuantizationAttr(), mlir::tosa::createPadConstTensor(), and result.

◆ buildTransConvOpWithQuantInfo()

void buildTransConvOpWithQuantInfo ( OpBuilder & builder,
OperationState & result,
Type outputType,
Value input,
Value weight,
Value bias,
DenseI64ArrayAttr outpad,
DenseI64ArrayAttr stride,
TypeAttr accType )
static

Handles tosa.transpose_conv2d which has outpad and output shape attributes.

Definition at line 1429 of file TosaOps.cpp.

References mlir::tosa::buildConvOpQuantizationAttr(), mlir::tosa::buildConvOpResultTypeInfo(), mlir::tosa::createZPsAsConst(), and result.

◆ buildVariableOp()

void buildVariableOp ( OpBuilder & builder,
OperationState & result,
StringRef name,
Type variableType,
Attribute initialValue )
static

◆ convertToMlirShape()

SmallVector< int64_t > convertToMlirShape ( ArrayRef< int64_t > shape)
static

Definition at line 139 of file TosaOps.cpp.

Referenced by mlir::tosa::printVariableOpTypeOrInitialValue().

◆ errorIfShapeNotSizeOne()

LogicalResult errorIfShapeNotSizeOne ( Operation * op,
Type type )
inlinestatic

◆ errorIfTypeOrShapeMismatch() [1/2]

LogicalResult errorIfTypeOrShapeMismatch ( Operation * op,
Type type1,
StringRef name1,
Type type2,
StringRef name2 )
static

◆ errorIfTypeOrShapeMismatch() [2/2]

LogicalResult errorIfTypeOrShapeMismatch ( Operation * op,
ValueRange list1,
StringRef name1,
ValueRange list2,
StringRef name2 )
static

◆ extractAdaptivePoolingConstShapeOperands()

template<typename T, typename std::enable_if< IsSupportedAdaptivePoolConstShapeVerifyOp< T >, int >::type = 0>
void extractAdaptivePoolingConstShapeOperands ( T op,
AdaptivePoolingConstShapeValues & values )
static

Definition at line 1298 of file TosaOps.cpp.

References mlir::tosa::getConstShapeValues().

◆ getStorageElementTypeOrSelf() [1/2]

◆ getStorageElementTypeOrSelf() [2/2]

Type getStorageElementTypeOrSelf ( Value value)
static

Definition at line 591 of file TosaOps.cpp.

References getStorageElementTypeOrSelf(), and mlir::Value::getType().

◆ getZeroPoint()

FailureOr< int64_t > getZeroPoint ( Value val,
bool signExtend )
static

◆ idivCheck()

std::optional< int64_t > idivCheck ( const int64_t lhs,
const int64_t rhs )
static

◆ inferConvReturnTypeComponents()

template<typename AdaptorT>
LogicalResult inferConvReturnTypeComponents ( AdaptorT adaptor,
SmallVectorImpl< ShapedTypeComponents > & inferredReturnShapes )

◆ NAryInferReturnTypes()

LogicalResult NAryInferReturnTypes ( const ValueShapeRange & operands,
SmallVectorImpl< ShapedTypeComponents > & inferredReturnShapes )
static

Definition at line 4041 of file TosaOps.cpp.

References resolveBroadcastShape(), and success().

◆ poolingInferReturnTypes()

LogicalResult poolingInferReturnTypes ( ShapeAdaptor inputShape,
ArrayRef< int64_t > kernel,
ArrayRef< int64_t > stride,
ArrayRef< int64_t > pad,
SmallVectorImpl< ShapedTypeComponents > & inferredReturnShapes )
static

◆ printInitializationList()

void printInitializationList ( OpAsmPrinter & parser,
Block::BlockArgListType blocksArgs,
ValueRange initializers,
StringRef prefix = "" )
static

Definition at line 5315 of file TosaOps.cpp.

◆ printShapeToDiagnostic()

void printShapeToDiagnostic ( InFlightDiagnostic & diag,
ArrayRef< int64_t > shape )
static

Definition at line 653 of file TosaOps.cpp.

References diag().

Referenced by verifyOutputShapeCompatibleWithExpected().

◆ ReduceInferReturnTypes()

LogicalResult ReduceInferReturnTypes ( ShapeAdaptor operandShape,
Type inputType,
IntegerAttr axis,
SmallVectorImpl< ShapedTypeComponents > & inferredReturnShapes )
static

◆ resolveBroadcastDim()

FailureOr< int64_t > resolveBroadcastDim ( const int64_t dim1,
const int64_t dim2 )
static

Definition at line 1655 of file TosaOps.cpp.

Referenced by resolveBroadcastShape().

◆ resolveBroadcastShape()

LogicalResult resolveBroadcastShape ( const ValueShapeRange & operands,
SmallVector< int64_t > & outShape )
static

Definition at line 1669 of file TosaOps.cpp.

References mlir::ValueShapeRange::getShape(), resolveBroadcastDim(), and success().

Referenced by NAryInferReturnTypes().

◆ tryUpdateDimOrFailure()

LogicalResult tryUpdateDimOrFailure ( Operation * op,
int64_t & currDim,
const int64_t newDim,
const StringRef operandName,
const StringRef dimName )

Definition at line 638 of file TosaOps.cpp.

References mlir::Operation::emitOpError(), and success().

◆ verifyAvgPoolCommonTypeAndZpChecks()

template<typename T>
LogicalResult verifyAvgPoolCommonTypeAndZpChecks ( T op)
static

◆ verifyConvOp()

template<typename T>
LogicalResult verifyConvOp ( T op)
static

◆ verifyConvOpErrorIf()

template<typename T>
LogicalResult verifyConvOpErrorIf ( T op)
static

Definition at line 896 of file TosaOps.cpp.

References success(), and verifyConvOutputSize().

◆ verifyConvOpModes()

template<typename T>
LogicalResult verifyConvOpModes ( T op)
static

Definition at line 847 of file TosaOps.cpp.

References mlir::tosa::getStorageElementTypeFromQuantized(), and success().

◆ verifyConvOutputSize()

LogicalResult verifyConvOutputSize ( Operation * op,
const int64_t inputSize,
const int64_t kernelSize,
const int64_t outputSize,
const int64_t padBefore,
const int64_t padAfter,
const int64_t stride,
const int64_t dilation,
const llvm::StringRef dimName,
const llvm::StringRef dimAxis,
const llvm::StringRef padBeforeName,
const llvm::StringRef padAfterName )

Definition at line 682 of file TosaOps.cpp.

References mlir::Operation::emitOpError(), idivCheck(), and success().

Referenced by verifyConvOpErrorIf().

◆ verifyDimIsPowerOfTwo()

LogicalResult verifyDimIsPowerOfTwo ( Operation * op,
const int64_t dimSize,
const llvm::StringRef dimName )
static

Definition at line 1755 of file TosaOps.cpp.

References mlir::Operation::emitOpError(), and success().

◆ verifyOutputShapeCompatibleWithExpected()

LogicalResult verifyOutputShapeCompatibleWithExpected ( Operation * op,
ShapedType outputType,
ArrayRef< int64_t > expectedShape,
StringRef outputName = "output" )
static

◆ verifyPoolingOp()

template<typename T>
LogicalResult verifyPoolingOp ( T op)
static

Definition at line 1234 of file TosaOps.cpp.

References verifyPoolingOpImpl().

◆ verifyPoolingOpImpl()

LogicalResult verifyPoolingOpImpl ( Operation * op,
ArrayRef< int64_t > kernel,
ArrayRef< int64_t > strides,
ArrayRef< int64_t > padding,
Value input,
Value output )
static

Definition at line 1142 of file TosaOps.cpp.

References mlir::Operation::emitOpError(), mlir::Value::getType(), idivCheck(), and success().

Referenced by verifyPoolingOp().

◆ verifyReduceOp()

template<typename T>
LogicalResult verifyReduceOp ( T op)
static

◆ verifyRescaleValueAndZpTypes()

LogicalResult verifyRescaleValueAndZpTypes ( Operation * op,
Value val,
Value valZp,
StringRef name )
static

◆ verifySameElementTypes()

template<typename T>
LogicalResult verifySameElementTypes ( T op,
Type aType,
Type bType,
StringRef aName = "input",
StringRef bName = "output" )
static

Definition at line 1077 of file TosaOps.cpp.

References success().

◆ verifyVariableOpErrorIf()

template<typename T>
LogicalResult verifyVariableOpErrorIf ( T op,
Type type,
StringRef name )
static

◆ verifyZeroPoint() [1/2]

template<typename T>
LogicalResult verifyZeroPoint ( T op,
Value val,
const int64_t & zp,
const std::string & operand )
static

Definition at line 3131 of file TosaOps.cpp.

References mlir::getElementTypeOrSelf(), mlir::Type::isInteger(), and success().

◆ verifyZeroPoint() [2/2]

LogicalResult verifyZeroPoint ( tosa::RescaleOp op,
Value zpVal,
const int64_t & zp,
const std::string & operand )
static

Definition at line 3146 of file TosaOps.cpp.

References mlir::getElementTypeOrSelf(), mlir::Type::isInteger(), and success().

Variable Documentation

◆ IsSupportedAdaptivePoolConstShapeVerifyOp

template<typename T>
bool IsSupportedAdaptivePoolConstShapeVerifyOp
staticconstexpr
Initial value:
=
std::is_same_v<T, tosa::AvgPool2dAdaptiveOp> ||
std::is_same_v<T, tosa::MaxPool2dAdaptiveOp>

Definition at line 1291 of file TosaOps.cpp.