[Mlir-commits] [mlir] [mlir][tosa] Disallow boolean as element type for Clamp (PR #149312)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Jul 17 06:50:37 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
@llvm/pr-subscribers-mlir-tosa
Author: Longsheng Mou (CoTinker)
<details>
<summary>Changes</summary>
According to TOSA spec, clamp op not support boolean type, and the verification and lowering of clamp with boolean type are incorrect. This PR disallow boolean as element type for `tosa.clamp` to avoid mistake. Fixes #<!-- -->130016.
---
Full diff: https://github.com/llvm/llvm-project/pull/149312.diff
2 Files Affected:
- (modified) mlir/lib/Dialect/Tosa/IR/TosaOps.cpp (+3)
- (modified) mlir/test/Dialect/Tosa/invalid.mlir (+9)
``````````diff
diff --git a/mlir/lib/Dialect/Tosa/IR/TosaOps.cpp b/mlir/lib/Dialect/Tosa/IR/TosaOps.cpp
index f0ff430bae882..d3a0b290c0610 100644
--- a/mlir/lib/Dialect/Tosa/IR/TosaOps.cpp
+++ b/mlir/lib/Dialect/Tosa/IR/TosaOps.cpp
@@ -928,6 +928,9 @@ LogicalResult tosa::ClampOp::verify() {
if (inputETy != outputETy)
return emitOpError("input/output element types are incompatible.");
+ if (inputETy.isInteger(1))
+ return emitOpError("does not support boolean element types.");
+
auto maxValAttr = getMaxValAttr();
auto minValAttr = getMinValAttr();
diff --git a/mlir/test/Dialect/Tosa/invalid.mlir b/mlir/test/Dialect/Tosa/invalid.mlir
index 5a424c41775c9..1f1e4159414f4 100644
--- a/mlir/test/Dialect/Tosa/invalid.mlir
+++ b/mlir/test/Dialect/Tosa/invalid.mlir
@@ -750,6 +750,15 @@ func.func @test_mismatch_in_out_shape_clamp(%arg0: tensor<13x21x3xf32>) -> tenso
// -----
+// CHECK-LABEL: test_unsupported_boolean_type_clamp
+func.func @test_unsupported_boolean_type_clamp(%arg0: tensor<13x21x3xi1>) -> tensor<13x21x3xi1> {
+ // expected-error at +1 {{'tosa.clamp' op does not support boolean element types}}
+ %0 = tosa.clamp %arg0 {min_val = false, max_val = true} : (tensor<13x21x3xi1>) -> tensor<13x21x3xi1>
+ return %0 : tensor<13x21x3xi1>
+}
+
+// -----
+
// CHECK-LABEL: test_mismatch_in_out_data_type_erf
func.func @test_mismatch_in_out_data_type_erf(%arg0: tensor<13x21x3xf32>) -> tensor<13x21x3xf16> {
// expected-error at +1 {{'tosa.erf' op requires the same element type for all operands and results}}
``````````
</details>
https://github.com/llvm/llvm-project/pull/149312
More information about the Mlir-commits
mailing list