[Mlir-commits] [mlir] [mlir][tosa] Migrate tosa.mul shift check from verifier to tosa-validate (PR #234092)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Tue Oct 20 23:08:16 PDT 2026
https://github.com/Wijkqwe created https://github.com/llvm/llvm-project/pull/234092
Part of #233457.
Remove the constant-value check on `tosa.mul`'s `shift` operand from the
verifier. Verifiers should only check information local to an operation;
reading a `tosa.const`'s contents reaches through to another op, so this
belongs in `tosa-validate`. `checkErrorIfMul` already implements the rule and
is strictly more complete (it also enforces `0 <= shift <= 63` for `int32_t`),
so no coverage is lost.
Moves the `shift`-value test to `error_if_check.mlir` alongside the other
`tosa.mul` shift cases.
Assisted-by: AI.
>From 113f4e1feb829aed74026ec7ac02802ddd692274 Mon Sep 17 00:00:00 2001
From: wzy <WZYqwe2004 at outlook.com>
Date: Wed, 21 Oct 2026 11:47:13 +0800
Subject: [PATCH] it just works
---
mlir/lib/Dialect/Tosa/IR/TosaOps.cpp | 9 ---------
mlir/test/Dialect/Tosa/error_if_check.mlir | 10 ++++++++++
mlir/test/Dialect/Tosa/invalid.mlir | 10 ----------
3 files changed, 10 insertions(+), 19 deletions(-)
diff --git a/mlir/lib/Dialect/Tosa/IR/TosaOps.cpp b/mlir/lib/Dialect/Tosa/IR/TosaOps.cpp
index 99c352ab8ed3c3..6b6f295c625f5b 100644
--- a/mlir/lib/Dialect/Tosa/IR/TosaOps.cpp
+++ b/mlir/lib/Dialect/Tosa/IR/TosaOps.cpp
@@ -2561,15 +2561,6 @@ LogicalResult tosa::MulOp::verify() {
return emitOpError(
"requires the same element type for all operands and results");
}
-
- // verify shift has value 0 for non-integer types
- ElementsAttr shiftElem;
- if (matchPattern(getShift(), m_Constant(&shiftElem))) {
- int32_t shift = shiftElem.getValues<IntegerAttr>()[0].getInt();
- if (shift != 0) {
- return emitOpError() << "require shift to be 0 for float type";
- }
- }
}
// Verify the op has same ranks for all main operands (excludes extra operands
diff --git a/mlir/test/Dialect/Tosa/error_if_check.mlir b/mlir/test/Dialect/Tosa/error_if_check.mlir
index b87f124f64ac27..0301711cd67898 100644
--- a/mlir/test/Dialect/Tosa/error_if_check.mlir
+++ b/mlir/test/Dialect/Tosa/error_if_check.mlir
@@ -146,6 +146,16 @@ func.func @test_mul_non_zero_shift(%arg0: tensor<1x8x8x8xi16>, %arg1: tensor<1x8
return %mul : tensor<1x8x8x8xi32>
}
+// -----
+
+// CHECK-LABEL: test_mul_float_non_zero_shift
+func.func @test_mul_float_non_zero_shift(%arg0: tensor<13x21x3xf32>, %arg1: tensor<13x1x3xf32>) -> tensor<13x21x3xf32> {
+ %shift = "tosa.const" () <{ values = dense<1> : tensor<1xi8> }> : () -> tensor<1xi8>
+ // expected-error at +1 {{'tosa.mul' op requires shift = 0 for all input data types that are not int32_t, but got: 1}}
+ %mul = tosa.mul %arg0, %arg1, %shift : (tensor<13x21x3xf32>, tensor<13x1x3xf32>, tensor<1xi8>) -> tensor<13x21x3xf32>
+ return %mul : tensor<13x21x3xf32>
+}
+
// -----
// CHECK-LABEL: test_i16_table_size
func.func @test_i16_table_size(%arg0: tensor<2x64xi16>, %arg1: tensor<256xi16>) -> tensor<2x64xi32> {
diff --git a/mlir/test/Dialect/Tosa/invalid.mlir b/mlir/test/Dialect/Tosa/invalid.mlir
index bf05491164f404..1973736b28b222 100644
--- a/mlir/test/Dialect/Tosa/invalid.mlir
+++ b/mlir/test/Dialect/Tosa/invalid.mlir
@@ -637,16 +637,6 @@ func.func @test_mul_int_type_mismatch(%arg0: tensor<1xf32>, %arg1: tensor<1xf32>
// -----
-// CHECK-LABEL: test_mul_invalid_shift
-func.func @test_mul_invalid_shift(%arg0: tensor<13x21x3xf32>, %arg1: tensor<13x1x3xf32>) -> tensor<13x21x3xf32> {
- %shift = "tosa.const"() <{values = dense<1> : tensor<1xi8>}> : () -> tensor<1xi8>
- // expected-error at +1 {{'tosa.mul' op require shift to be 0 for float type}}
- %0 = tosa.mul %arg0, %arg1, %shift : (tensor<13x21x3xf32>, tensor<13x1x3xf32>, tensor<1xi8>) -> tensor<13x21x3xf32>
- return %0 : tensor<13x21x3xf32>
-}
-
-// -----
-
// CHECK-LABEL: test_mul_missing_shift
func.func @test_mul_missing_shift(%arg0: tensor<13x21x3xi32>, %arg1: tensor<13x1x3xi32>) -> tensor<13x21x3xi32> {
// expected-error at +1 {{'tosa.mul' op expected 3 operands, but found 2}}
More information about the Mlir-commits
mailing list