[Mlir-commits] [mlir] 4ef1770 - [mlir][tosa] Table did not apply offset before extract on i8 input
Rob Suderman
llvmlistbot at llvm.org
Tue Aug 24 18:53:18 PDT 2021
Author: Rob Suderman
Date: 2021-08-24T18:52:33-07:00
New Revision: 4ef1770abd11dff3f892a32eb461a2e5f72f9078
URL: https://github.com/llvm/llvm-project/commit/4ef1770abd11dff3f892a32eb461a2e5f72f9078
DIFF: https://github.com/llvm/llvm-project/commit/4ef1770abd11dff3f892a32eb461a2e5f72f9078.diff
LOG: [mlir][tosa] Table did not apply offset before extract on i8 input
Lowering to table was incorrect as it did not apply a 128 offset before
extracting the value from the table. Fixed and correct tensor length on input
table.
Reviewed By: NatashaKnk
Differential Revision: https://reviews.llvm.org/D108436
Added:
Modified:
mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
index a670ace340621..880da55cbd245 100644
--- a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
+++ b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
@@ -2436,6 +2436,9 @@ class TableConverter : public OpRewritePattern<tosa::TableOp> {
resultElementTy.isInteger(8)) {
Value index = rewriter.create<IndexCastOp>(loc, rewriter.getIndexType(),
inputValue);
+ Value offset = rewriter.create<ConstantIndexOp>(loc, 128);
+ index = rewriter.create<AddIOp>(loc, rewriter.getIndexType(), index,
+ offset);
Value extract =
rewriter.create<tensor::ExtractOp>(loc, table, ValueRange{index});
rewriter.create<linalg::YieldOp>(loc, extract);
diff --git a/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir b/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir
index 908868e076e59..329c4b27e4218 100644
--- a/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir
+++ b/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir
@@ -1101,17 +1101,21 @@ func @gather_int(%arg0: tensor<2x3x2xi32>, %arg1: tensor<2x3xi32>) -> () {
// -----
// CHECK-LABEL: @table8
-func @table8(%arg0: tensor<6xi8>, %arg1: tensor<513xi8>) -> () {
+func @table8(%arg0: tensor<6xi8>, %arg1: tensor<512xi8>) -> () {
// CHECK: %[[INIT:.+]] = linalg.init_tensor [6]
// CHECK: %[[GENERIC:.+]] = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel"]} ins(%arg0 : tensor<6xi8>) outs(%[[INIT]] : tensor<6xi8>)
// CHECK: ^bb0(%[[ARG_IN:.+]]: i8, %[[ARG_INIT:.+]]: i8)
// CHECK: %[[CAST:.+]] = index_cast %[[ARG_IN]]
- // CHECK: %[[EXTRACT:.+]] = tensor.extract %arg1[%[[CAST]]]
+ // CHECK: %[[OFFSET:.+]] = constant 128
+ // CHECK: %[[ADD:.+]] = addi %[[CAST]], %[[OFFSET]]
+ // CHECK: %[[EXTRACT:.+]] = tensor.extract %arg1[%[[ADD]]]
// CHECK: linalg.yield %[[EXTRACT]]
- %0 = "tosa.table"(%arg0, %arg1) : (tensor<6xi8>, tensor<513xi8>) -> (tensor<6xi8>)
+ %0 = "tosa.table"(%arg0, %arg1) : (tensor<6xi8>, tensor<512xi8>) -> (tensor<6xi8>)
return
}
+// -----
+
// CHECK-LABEL: @table16
func @table16(%arg0: tensor<6xi16>, %arg1: tensor<513xi16>) -> () {
// CHECK: %[[INIT:.+]] = linalg.init_tensor [6]
More information about the Mlir-commits
mailing list