[Mlir-commits] [mlir] f97d970 - [mlir][tosa] Add lowering to tosa.abs for integer cases
Rob Suderman
llvmlistbot at llvm.org
Thu May 13 13:56:01 PDT 2021
Author: Rob Suderman
Date: 2021-05-13T13:55:17-07:00
New Revision: f97d970a49fb1f95cd3ac599369e53325129f769
URL: https://github.com/llvm/llvm-project/commit/f97d970a49fb1f95cd3ac599369e53325129f769
DIFF: https://github.com/llvm/llvm-project/commit/f97d970a49fb1f95cd3ac599369e53325129f769.diff
LOG: [mlir][tosa] Add lowering to tosa.abs for integer cases
Integer case requires decomposing to simple LLVM operatons.
Differential Revision: https://reviews.llvm.org/D101809
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 393469003712..06b23cc9dd7a 100644
--- a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
+++ b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
@@ -102,6 +102,15 @@ createLinalgBodyCalculationForElementwiseOp(Operation *op, ValueRange args,
if (isa<tosa::AbsOp>(op) && elementTy.isa<FloatType>())
return rewriter.create<mlir::AbsFOp>(loc, resultTypes, args);
+ if (isa<tosa::AbsOp>(op) && elementTy.isa<IntegerType>()) {
+ auto zero =
+ rewriter.create<mlir::ConstantOp>(loc, rewriter.getZeroAttr(elementTy));
+ auto cmp =
+ rewriter.create<mlir::CmpIOp>(loc, CmpIPredicate::sgt, args[0], zero);
+ auto neg = rewriter.create<mlir::SubIOp>(loc, zero, args[0]);
+ return rewriter.create<mlir::SelectOp>(loc, cmp, args[0], neg);
+ }
+
// tosa::AddOp
if (isa<tosa::AddOp>(op) && elementTy.isa<FloatType>())
return rewriter.create<mlir::AddFOp>(loc, resultTypes, args);
diff --git a/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir b/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir
index 1e250c89bc6f..c2e6b07dce46 100644
--- a/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir
+++ b/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir
@@ -400,6 +400,13 @@ func @test_simple_i32(%arg0: tensor<1xi32>) -> () {
// CHECK: sitofp
%24 = "tosa.cast"(%0) : (tensor<1xi32>) -> tensor<1xf32>
+ // CHECK: linalg.generic
+ // CHECK: constant 0
+ // CHECK: cmpi sgt
+ // CHECK: subi
+ // CHECK: select
+ %25 = "tosa.abs"(%arg0) : (tensor<1xi32>) -> tensor<1xi32>
+
return
}
More information about the Mlir-commits
mailing list