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)
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)
static FailureOr< int64_tgetConstantScalarIntValue (Value val)
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 3830 of file TosaOps.cpp.

◆ GET_ATTRDEF_CLASSES

#define GET_ATTRDEF_CLASSES

Definition at line 5746 of file TosaOps.cpp.

◆ GET_ATTRDEF_LIST

#define GET_ATTRDEF_LIST

◆ GET_OP_CLASSES

#define GET_OP_CLASSES

Definition at line 5759 of file TosaOps.cpp.

◆ GET_OP_LIST

#define GET_OP_LIST

◆ GET_TYPEDEF_CLASSES

#define GET_TYPEDEF_CLASSES

Definition at line 5752 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:3920
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 3932 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:3814
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 3839 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:3055
static LogicalResult verifyZeroPoint(T op, Value val, const int64_t &zp, const std::string &operand)
Definition TosaOps.cpp:3094
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 3136 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 1484 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 1440 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 1365 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 1411 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 1531 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 1571 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 1389 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 1258 of file TosaOps.cpp.

References mlir::tosa::getConstShapeValues().

◆ getConstantScalarIntValue()

FailureOr< int64_t > getConstantScalarIntValue ( Value val)
static

Definition at line 3081 of file TosaOps.cpp.

References mlir::m_Constant(), and mlir::matchPattern().

◆ 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

Definition at line 578 of file TosaOps.cpp.

References lhs, and rhs.

Referenced by mlir::tosa::createTosaValidation(), verifyConvOutputSize(), and verifyPoolingOpImpl().

◆ inferConvReturnTypeComponents()

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

◆ NAryInferReturnTypes()

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

Definition at line 3920 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 5211 of file TosaOps.cpp.

◆ printShapeToDiagnostic()

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

Definition at line 653 of file TosaOps.cpp.

References diag().

◆ 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 1615 of file TosaOps.cpp.

Referenced by resolveBroadcastShape().

◆ resolveBroadcastShape()

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

Definition at line 1629 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 856 of file TosaOps.cpp.

References success(), and verifyConvOutputSize().

◆ verifyConvOpModes()

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

Definition at line 807 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 665 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 1715 of file TosaOps.cpp.

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

◆ verifyPoolingOp()

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

Definition at line 1194 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 1102 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 1037 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 3094 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 3109 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 1251 of file TosaOps.cpp.