MLIR
20.0.0git
|
Classes | |
struct | ValidationOptions |
struct | ValueKnowledge |
Statically known information for a particular Value. More... | |
Functions | |
std::unique_ptr< Pass > | createTosaToArith (bool includeApplyRescale=false, bool use32BitApplyRescale=false) |
void | populateTosaToArithConversionPatterns (RewritePatternSet *patterns) |
void | populateTosaRescaleToArithConversionPatterns (RewritePatternSet *patterns, bool include32Bit=false) |
std::unique_ptr< Pass > | createTosaToLinalg () |
std::unique_ptr< Pass > | createTosaToLinalgNamed (const TosaToLinalgNamedOptions &options=TosaToLinalgNamedOptions()) |
void | addTosaToLinalgPasses (OpPassManager &pm, const TosaToLinalgOptions &options, const TosaToLinalgNamedOptions &tosaToLinalgNamedOptions=TosaToLinalgNamedOptions(), std::optional< tosa::TosaValidationOptions > validationOptions=tosa::TosaValidationOptions{ {"none"}, false, tosa::TosaLevelEnum::None}) |
Populates passes to convert from TOSA to Linalg on buffers. More... | |
void | registerTosaToLinalgPipelines () |
Populates TOSA to linalg pipelines Currently, this includes only the "tosa-to-linalg-pipeline". More... | |
void | populateTosaToLinalgConversionPatterns (const TypeConverter &converter, RewritePatternSet *patterns) |
Populates conversion passes from TOSA dialect to Linalg dialect. More... | |
void | populateTosaToLinalgNamedConversionPatterns (RewritePatternSet *patterns, const TosaToLinalgNamedOptions &options) |
Populates conversion passes from TOSA dialect to Linalg named operations. More... | |
void | populateTosaToMLProgramConversionPatterns (RewritePatternSet *patterns) |
std::unique_ptr< Pass > | createTosaToSCF () |
void | populateTosaToSCFConversionPatterns (RewritePatternSet *patterns) |
void | addTosaToSCFPasses (OpPassManager &pm) |
Populates passes to convert from TOSA to SCF. More... | |
std::unique_ptr< Pass > | createTosaToTensor () |
void | populateTosaToTensorConversionPatterns (const TypeConverter &converter, RewritePatternSet *patterns) |
void | registerShardingInterfaceExternalModels (DialectRegistry ®istry) |
ParseResult | parseTypeOrAttr (OpAsmParser &parser, TypeAttr &typeAttr, Attribute &attr) |
void | printTypeOrAttr (OpAsmPrinter &p, Operation *op, TypeAttr type, Attribute attr) |
void | populateTosaDecomposeConv2D (MLIRContext *ctx, RewritePatternSet &patterns) |
void | populateTosaDecomposeTransposeConv (MLIRContext *ctx, RewritePatternSet &patterns) |
void | populateTosaDecomposeDepthwise (MLIRContext *ctx, RewritePatternSet &patterns) |
void | populateTosaFoldConstantReciprocalPatterns (MLIRContext *ctx, RewritePatternSet &patterns) |
void | populateTosaFoldConstantTransposePatterns (MLIRContext *ctx, RewritePatternSet &patterns) |
void | populateTosaConstantReduction (MLIRContext *ctx, RewritePatternSet &patterns, bool aggressiveReduceConstant) |
void | populateTosaTypeConversion (TypeConverter &converter) |
std::unique_ptr< Pass > | createTosaLayerwiseConstantFoldPass () |
std::unique_ptr< Pass > | createTosaLayerwiseConstantFoldPass (const TosaLayerwiseConstantFoldPassOptions &options) |
std::unique_ptr< Pass > | createTosaInferShapesPass () |
std::unique_ptr< Pass > | createTosaMakeBroadcastablePass () |
std::unique_ptr< Pass > | createTosaTestQuantUtilAPIPass () |
std::unique_ptr< Pass > | createTosaOptionalDecompositions () |
SmallVector< utils::IteratorType > | getNParallelLoopsAttrs (unsigned nParallelLoops) |
SmallVector< Value > | condenseValues (const SmallVector< Value > &values) |
Value | clampFloatHelper (Location loc, Value arg, Value min, Value max, OpBuilder &rewriter) |
Value | clampIntHelper (Location loc, Value arg, Value min, Value max, OpBuilder &rewriter, bool isUnsigned) |
bool | validIntegerRange (IntegerType ty, int64_t value) |
template<typename Op > | |
std::optional< SmallVector< Value > > | checkHasDynamicBatchDims (PatternRewriter &rewriter, Op op, ArrayRef< Value > params) |
LogicalResult | EqualizeRanks (PatternRewriter &rewriter, Location loc, Value &input1, Value &input2) |
Common code to create the reshape op where necessary to make the rank of two values equal. More... | |
LogicalResult | EqualizeRanks (ImplicitLocOpBuilder &builder, Value &input1, Value &input2) |
template<typename TosaOp , typename... Args> | |
TosaOp | CreateOpAndInferShape (ImplicitLocOpBuilder &builder, Type resultTy, Args &&...args) |
template<typename TosaOp , typename... Args> | |
TosaOp | CreateOpAndInferShape (PatternRewriter &rewriter, Location loc, Type resultTy, Args &&...args) |
template<typename T > | |
SmallVector< T > | applyTOSAPermutation (ArrayRef< T > input, ArrayRef< int32_t > perms) |
void | computeMultiplierAndShift (double scale, int32_t &multiplier, int32_t &shift, int32_t scaleWidth) |
From a scale value, computes multiplier and shift values for 16 or 32-bit scale widths. More... | |
ConvOpQuantizationAttr | buildConvOpQuantizationAttr (OpBuilder &builder, Value input, Value weight) |
Method to build ConvOpQuantizationAttr, called from ConvOpQuantInfoBuilder/TransConvOpQuantInfoBuilder: input_zp: input zeropoint weight_zp: weight zeropoint. More... | |
MatMulOpQuantizationAttr | buildMatMulOpQuantizationAttr (OpBuilder &builder, Value a, Value b) |
Builds MatMulOpQuantizationAttr, called from MatMulOpQuantInfoBuilder: aZp: input a zeropoint bZp: input b zeropoint. More... | |
UnaryOpQuantizationAttr | buildUnaryOpQuantizationAttr (OpBuilder &builder, Value input, Type outputRawType) |
Builds UnaryOpQuantizationAttr UnaryOpQuantInfoBuilder: inputZp: input zeropoint outputZp: output zeropoint. More... | |
PadOpQuantizationAttr | buildPadOpQuantizationAttr (OpBuilder &builder, Value input) |
Builds PadOpQuantizationAttr, called from PadOpQuantInfoBuilder: inputZp: input zeropoint. More... | |
Type | buildConvOpResultTypeInfo (OpBuilder &builder, Type outputType, Value input, Value weight) |
construct ConvOp output type with correct bitwidth based on input/weight width. More... | |
Type | buildQTypeFromMinMax (OpBuilder builder, Type inputDType, Attribute minAttr, Attribute maxAttr, IntegerAttr quantBits, int filterQuantDim, bool isSigned, BoolAttr narrowRange) |
Builds Tosa quantization attributes from min/max values. More... | |
TypeAttr | buildQTypeAttrFromMinMax (OpBuilder builder, Type inputDType, Attribute minAttr, Attribute maxAttr, IntegerAttr quantBits, int filterQuantDim, bool isSigned, BoolAttr narrowRange) |
Builds Tosa quantization attributes from min/max values. More... | |
void mlir::tosa::addTosaToLinalgPasses | ( | OpPassManager & | pm, |
const TosaToLinalgOptions & | options, | ||
const TosaToLinalgNamedOptions & | tosaToLinalgNamedOptions = TosaToLinalgNamedOptions() , |
||
std::optional< tosa::TosaValidationOptions > | validationOptions = tosa::TosaValidationOptions{ {"none"}, false, tosa::TosaLevelEnum::None} |
||
) |
Populates passes to convert from TOSA to Linalg on buffers.
At the end of the pass, the function will only contain linalg ops or standard ops if the pipeline succeeds. The option to disable decompositions is available for benchmarking performance improvements from the canonicalizations.
Definition at line 81 of file TosaToLinalgPass.cpp.
References mlir::OpPassManager::addNestedPass(), mlir::OpPassManager::addPass(), mlir::createCanonicalizerPass(), createTosaInferShapesPass(), createTosaLayerwiseConstantFoldPass(), createTosaMakeBroadcastablePass(), createTosaOptionalDecompositions(), createTosaToLinalg(), createTosaToLinalgNamed(), and options.
Referenced by registerTosaToLinalgPipelines().
void mlir::tosa::addTosaToSCFPasses | ( | OpPassManager & | pm | ) |
Populates passes to convert from TOSA to SCF.
Definition at line 55 of file TosaToSCFPass.cpp.
References mlir::OpPassManager::addNestedPass(), and createTosaToSCF().
SmallVector<T> mlir::tosa::applyTOSAPermutation | ( | ArrayRef< T > | input, |
ArrayRef< int32_t > | perms | ||
) |
Definition at line 222 of file ConversionUtils.h.
ConvOpQuantizationAttr mlir::tosa::buildConvOpQuantizationAttr | ( | OpBuilder & | builder, |
Value | input, | ||
Value | weight | ||
) |
Method to build ConvOpQuantizationAttr, called from ConvOpQuantInfoBuilder/TransConvOpQuantInfoBuilder: input_zp: input zeropoint weight_zp: weight zeropoint.
Definition at line 120 of file QuantUtils.cpp.
References GET_UQTYPE, mlir::Builder::getAttr(), and mlir::Value::getType().
Referenced by buildConvOpWithQuantInfo(), buildFCOpWithQuantInfo(), and buildTransConvOpWithQuantInfo().
Type mlir::tosa::buildConvOpResultTypeInfo | ( | OpBuilder & | builder, |
Type | outputType, | ||
Value | input, | ||
Value | weight | ||
) |
construct ConvOp output type with correct bitwidth based on input/weight width.
Builds output type for a quantized ConvOp with the right bitwidth.
This is called by the builder when dealing with quantized content.
Definition at line 239 of file QuantUtils.cpp.
References GET_QTYPE, mlir::Builder::getI32Type(), mlir::Builder::getIntegerType(), and mlir::Value::getType().
Referenced by buildConvOpWithQuantInfo(), buildFCOpWithQuantInfo(), and buildTransConvOpWithQuantInfo().
MatMulOpQuantizationAttr mlir::tosa::buildMatMulOpQuantizationAttr | ( | OpBuilder & | builder, |
Value | a, | ||
Value | b | ||
) |
Builds MatMulOpQuantizationAttr, called from MatMulOpQuantInfoBuilder: aZp: input a zeropoint bZp: input b zeropoint.
Definition at line 164 of file QuantUtils.cpp.
References GET_UQTYPE, mlir::Builder::getAttr(), and mlir::Value::getType().
Referenced by buildMatMulOpWithQuantInfo().
Builds PadOpQuantizationAttr, called from PadOpQuantInfoBuilder: inputZp: input zeropoint.
Definition at line 219 of file QuantUtils.cpp.
References GET_UQTYPE, mlir::Builder::getAttr(), and mlir::Value::getType().
Referenced by buildExplicitValuePadOpWithQuantInfo(), and buildPadOpWithQuantInfo().
TypeAttr mlir::tosa::buildQTypeAttrFromMinMax | ( | OpBuilder | builder, |
Type | inputDType, | ||
Attribute | minAttr, | ||
Attribute | maxAttr, | ||
IntegerAttr | quantBits, | ||
int | filterQuantDim, | ||
bool | isSigned, | ||
BoolAttr | narrowRange | ||
) |
Builds Tosa quantization attributes from min/max values.
Definition at line 339 of file QuantUtils.cpp.
References buildQTypeFromMinMax(), and mlir::get().
Type mlir::tosa::buildQTypeFromMinMax | ( | OpBuilder | builder, |
Type | inputDType, | ||
Attribute | minAttr, | ||
Attribute | maxAttr, | ||
IntegerAttr | quantBits, | ||
int | filterQuantDim, | ||
bool | isSigned, | ||
BoolAttr | narrowRange | ||
) |
Builds Tosa quantization attributes from min/max values.
Definition at line 271 of file QuantUtils.cpp.
References mlir::quant::fakeQuantAttrsToType(), mlir::quant::ExpressedToQuantizedConverter::forInputType(), mlir::Builder::getUnknownLoc(), mlir::BoolAttr::getValue(), max(), and min().
Referenced by buildQTypeAttrFromMinMax().
UnaryOpQuantizationAttr mlir::tosa::buildUnaryOpQuantizationAttr | ( | OpBuilder & | builder, |
Value | input, | ||
Type | outputRawType | ||
) |
Builds UnaryOpQuantizationAttr UnaryOpQuantInfoBuilder: inputZp: input zeropoint outputZp: output zeropoint.
Definition at line 193 of file QuantUtils.cpp.
References GET_UQTYPE, mlir::Builder::getAttr(), and mlir::Value::getType().
Referenced by buildAvgPool2dOpWithQuantInfo(), and buildUnaryOpWithQuantInfo().
std::optional<SmallVector<Value> > mlir::tosa::checkHasDynamicBatchDims | ( | PatternRewriter & | rewriter, |
Op | op, | ||
ArrayRef< Value > | params | ||
) |
Definition at line 51 of file ConversionUtils.h.
References mlir::OpBuilder::create(), mlir::OpState::getLoc(), and mlir::RewriterBase::notifyMatchFailure().
Value mlir::tosa::clampFloatHelper | ( | Location | loc, |
Value | arg, | ||
Value | min, | ||
Value | max, | ||
OpBuilder & | rewriter | ||
) |
Definition at line 34 of file ConversionUtils.cpp.
References mlir::OpBuilder::create(), max(), and min().
Referenced by createLinalgBodyCalculationForElementwiseOp().
Value mlir::tosa::clampIntHelper | ( | Location | loc, |
Value | arg, | ||
Value | min, | ||
Value | max, | ||
OpBuilder & | rewriter, | ||
bool | isUnsigned | ||
) |
Definition at line 40 of file ConversionUtils.cpp.
References mlir::OpBuilder::create(), max(), and min().
Referenced by createLinalgBodyCalculationForElementwiseOp().
void mlir::tosa::computeMultiplierAndShift | ( | double | scale, |
int32_t & | multiplier, | ||
int32_t & | shift, | ||
int32_t | scaleWidth | ||
) |
From a scale value, computes multiplier and shift values for 16 or 32-bit scale widths.
Generates a quantized multiplier/shift from double.
Definition at line 95 of file QuantUtils.cpp.
References computeMultiplierAndShiftTosaScale16(), and computeMultiplierAndShiftTosaScale32().
SmallVector< Value > mlir::tosa::condenseValues | ( | const SmallVector< Value > & | values | ) |
Definition at line 26 of file ConversionUtils.cpp.
Referenced by inferDynamicDimsForConv().
TosaOp mlir::tosa::CreateOpAndInferShape | ( | ImplicitLocOpBuilder & | builder, |
Type | resultTy, | ||
Args &&... | args | ||
) |
Definition at line 146 of file ConversionUtils.h.
References EqualizeRanks(), and mlir::presburger::round().
TosaOp mlir::tosa::CreateOpAndInferShape | ( | PatternRewriter & | rewriter, |
Location | loc, | ||
Type | resultTy, | ||
Args &&... | args | ||
) |
Definition at line 213 of file ConversionUtils.h.
std::unique_ptr< Pass > mlir::tosa::createTosaInferShapesPass | ( | ) |
Definition at line 320 of file TosaInferShapes.cpp.
Referenced by addTosaToLinalgPasses().
std::unique_ptr< Pass > mlir::tosa::createTosaLayerwiseConstantFoldPass | ( | ) |
Definition at line 70 of file TosaLayerwiseConstantFoldPass.cpp.
Referenced by addTosaToLinalgPasses().
std::unique_ptr< Pass > mlir::tosa::createTosaLayerwiseConstantFoldPass | ( | const TosaLayerwiseConstantFoldPassOptions & | options | ) |
Definition at line 75 of file TosaLayerwiseConstantFoldPass.cpp.
References options.
std::unique_ptr< Pass > mlir::tosa::createTosaMakeBroadcastablePass | ( | ) |
Definition at line 254 of file TosaMakeBroadcastable.cpp.
Referenced by addTosaToLinalgPasses().
std::unique_ptr< Pass > mlir::tosa::createTosaOptionalDecompositions | ( | ) |
Definition at line 52 of file TosaOptionalDecompositions.cpp.
Referenced by addTosaToLinalgPasses().
std::unique_ptr<Pass> mlir::tosa::createTosaTestQuantUtilAPIPass | ( | ) |
std::unique_ptr< Pass > mlir::tosa::createTosaToArith | ( | bool | includeApplyRescale = false , |
bool | use32BitApplyRescale = false |
||
) |
Definition at line 57 of file TosaToArithPass.cpp.
References options.
std::unique_ptr< Pass > mlir::tosa::createTosaToLinalg | ( | ) |
Definition at line 77 of file TosaToLinalgPass.cpp.
Referenced by addTosaToLinalgPasses().
std::unique_ptr< Pass > mlir::tosa::createTosaToLinalgNamed | ( | const TosaToLinalgNamedOptions & | options = TosaToLinalgNamedOptions() | ) |
Definition at line 78 of file TosaToLinalgNamedPass.cpp.
References options.
Referenced by addTosaToLinalgPasses().
std::unique_ptr< Pass > mlir::tosa::createTosaToSCF | ( | ) |
Definition at line 51 of file TosaToSCFPass.cpp.
Referenced by addTosaToSCFPasses().
std::unique_ptr< Pass > mlir::tosa::createTosaToTensor | ( | ) |
Definition at line 57 of file TosaToTensorPass.cpp.
LogicalResult mlir::tosa::EqualizeRanks | ( | ImplicitLocOpBuilder & | builder, |
Value & | input1, | ||
Value & | input2 | ||
) |
Definition at line 109 of file ConversionUtils.cpp.
References mlir::ImplicitLocOpBuilder::create(), mlir::get(), mlir::Builder::getDenseI64ArrayAttr(), and mlir::Value::getType().
LogicalResult mlir::tosa::EqualizeRanks | ( | PatternRewriter & | rewriter, |
Location | loc, | ||
Value & | input1, | ||
Value & | input2 | ||
) |
Common code to create the reshape op where necessary to make the rank of two values equal.
input1 and input2 will be updated when the rank has changed. The caller is expected to use these to rewrite the original operator with the RESHAPE now in the graph.
Definition at line 103 of file ConversionUtils.cpp.
Referenced by CreateOpAndInferShape().
SmallVector< utils::IteratorType > mlir::tosa::getNParallelLoopsAttrs | ( | unsigned | nParallelLoops | ) |
Definition at line 20 of file ConversionUtils.cpp.
Referenced by broadcastDynamicDimension(), emitElementwiseComputation(), linalgBroadcastAndMaybeExtSI(), and linalgIntBroadcastExtSIAdd().
ParseResult mlir::tosa::parseTypeOrAttr | ( | OpAsmParser & | parser, |
TypeAttr & | typeAttr, | ||
Attribute & | attr | ||
) |
Definition at line 166 of file TosaOps.cpp.
References mlir::AsmParser::emitError(), mlir::get(), mlir::AsmParser::getCurrentLocation(), mlir::AsmParser::parseAttribute(), mlir::AsmParser::parseColonType(), and mlir::AsmParser::parseOptionalEqual().
void mlir::tosa::populateTosaConstantReduction | ( | MLIRContext * | ctx, |
RewritePatternSet & | patterns, | ||
bool | aggressiveReduceConstant | ||
) |
Definition at line 405 of file TosaFolders.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaDecomposeConv2D | ( | MLIRContext * | ctx, |
RewritePatternSet & | patterns | ||
) |
Definition at line 160 of file TosaDecomposeConv2D.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaDecomposeDepthwise | ( | MLIRContext * | ctx, |
RewritePatternSet & | patterns | ||
) |
Definition at line 167 of file TosaDecomposeDepthwise.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaDecomposeTransposeConv | ( | MLIRContext * | ctx, |
RewritePatternSet & | patterns | ||
) |
Definition at line 337 of file TosaDecomposeTransposeConv.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaFoldConstantReciprocalPatterns | ( | MLIRContext * | ctx, |
RewritePatternSet & | patterns | ||
) |
Definition at line 427 of file TosaFolders.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaFoldConstantTransposePatterns | ( | MLIRContext * | ctx, |
RewritePatternSet & | patterns | ||
) |
Definition at line 422 of file TosaFolders.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaRescaleToArithConversionPatterns | ( | RewritePatternSet * | patterns, |
bool | include32Bit = false |
||
) |
Definition at line 246 of file TosaToArith.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaToArithConversionPatterns | ( | RewritePatternSet * | patterns | ) |
Definition at line 241 of file TosaToArith.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaToLinalgConversionPatterns | ( | const TypeConverter & | converter, |
RewritePatternSet * | patterns | ||
) |
Populates conversion passes from TOSA dialect to Linalg dialect.
Definition at line 2574 of file TosaToLinalg.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaToLinalgNamedConversionPatterns | ( | RewritePatternSet * | patterns, |
const TosaToLinalgNamedOptions & | options | ||
) |
Populates conversion passes from TOSA dialect to Linalg named operations.
Definition at line 1072 of file TosaToLinalgNamed.cpp.
References options, and mlir::patterns.
void mlir::tosa::populateTosaToMLProgramConversionPatterns | ( | RewritePatternSet * | patterns | ) |
Definition at line 72 of file TosaToMLProgram.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaToSCFConversionPatterns | ( | RewritePatternSet * | patterns | ) |
Definition at line 176 of file TosaToSCF.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaToTensorConversionPatterns | ( | const TypeConverter & | converter, |
RewritePatternSet * | patterns | ||
) |
Definition at line 440 of file TosaToTensor.cpp.
References mlir::patterns.
void mlir::tosa::populateTosaTypeConversion | ( | TypeConverter & | converter | ) |
Definition at line 20 of file TosaTypeConverters.cpp.
References mlir::TypeConverter::addConversion(), mlir::TypeConverter::addSourceMaterialization(), mlir::TypeConverter::addTargetMaterialization(), mlir::TypeConverter::convertType(), mlir::OpBuilder::create(), and mlir::Type::isUnsignedInteger().
void mlir::tosa::printTypeOrAttr | ( | OpAsmPrinter & | p, |
Operation * | op, | ||
TypeAttr | type, | ||
Attribute | attr | ||
) |
Definition at line 188 of file TosaOps.cpp.
References mlir::AsmPrinter::printAttribute().
void mlir::tosa::registerShardingInterfaceExternalModels | ( | DialectRegistry & | registry | ) |
Definition at line 76 of file ShardingInterfaceImpl.cpp.
References mlir::DialectRegistry::addExtension().
Referenced by mlir::registerAllDialects().
void mlir::tosa::registerTosaToLinalgPipelines | ( | ) |
Populates TOSA to linalg pipelines Currently, this includes only the "tosa-to-linalg-pipeline".
Definition at line 108 of file TosaToLinalgPass.cpp.
References addTosaToLinalgPasses().
Referenced by mlir::registerAllPasses().
bool mlir::tosa::validIntegerRange | ( | IntegerType | ty, |
int64_t | value | ||
) |
Definition at line 50 of file ConversionUtils.cpp.