[mlir][tosa] Add lowering for tosa.rescale to linalg.generic
authorRob Suderman <rob.suderman@gmail.com>
Thu, 18 Mar 2021 23:14:05 +0000 (16:14 -0700)
committerRob Suderman <rob.suderman@gmail.com>
Thu, 18 Mar 2021 23:14:05 +0000 (16:14 -0700)
commit286a9d467ea904490548a25e3c73ad0d50190b43
tree143f00495713e25ae316cf1d1babb12844fff3f9
parent0ca83730cc2bb19a871bb5fd37127a639f488924
[mlir][tosa] Add lowering for tosa.rescale to linalg.generic

This adds a tosa.apply_scale operation that handles the scaling operation
common to quantized operatons. This scalar operation is lowered
in TosaToStandard.

We use a separate ApplyScale factorization as this is a replicable pattern
within TOSA. ApplyScale can be reused within pool/convolution/mul/matmul
for their quantized variants.

Tests are added to both tosa-to-standard and tosa-to-linalg-on-tensors
that verify each pass is correct.

Reviewed By: silvas

Differential Revision: https://reviews.llvm.org/D98753
mlir/include/mlir/Conversion/TosaToStandard/TosaToStandard.h
mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td
mlir/include/mlir/Dialect/Tosa/IR/TosaTypesBase.td
mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp
mlir/lib/Conversion/TosaToStandard/TosaToStandard.cpp
mlir/lib/Conversion/TosaToStandard/TosaToStandardPass.cpp
mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir
mlir/test/Conversion/TosaToStandard/tosa-to-standard.mlir