[Mlir-commits] [mlir] [mlir][tosa] Add support for EXT-DOUBLEROUND and EXT-INEXACTROUND (PR #130337)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Fri Mar 7 12:17:18 PST 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff 5c9d0a26d9462487e7db5e58f2307371154d6117 0acc7fd3815e0a00a2290c64ecd8c394b7565b11 --extensions cpp,h -- mlir/include/mlir/Dialect/Tosa/IR/TosaProfileCompliance.h mlir/lib/Conversion/TosaToArith/TosaToArith.cpp mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp mlir/lib/Conversion/TosaToLinalg/TosaToLinalgNamed.cpp mlir/lib/Dialect/Tosa/Transforms/TosaValidation.cpp mlir/test/lib/Dialect/Tosa/TosaTestPasses.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
index b59e55302a..c071de5516 100644
--- a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
+++ b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
@@ -1376,7 +1376,8 @@ public:
     // This is an illegal configuration. terminate and log an error
     if (op.getRoundingMode() == "INEXACT_ROUND")
       return rewriter.notifyMatchFailure(
-          op, "tosa.rescale with rounding mode = 'INEXACT_ROUND' is not currently supported");
+          op, "tosa.rescale with rounding mode = 'INEXACT_ROUND' is not "
+              "currently supported");
     if (op.getRoundingMode() == "DOUBLE_ROUND" && !op.getScale32())
       return rewriter.notifyMatchFailure(
           op, "tosa.rescale requires scale32 for double_round to be true");
@@ -1425,8 +1426,9 @@ public:
     bool doubleRound =
         op.getRoundingMode() == "DOUBLE_ROUND" &&
         llvm::any_of(shiftValues, [](int32_t v) { return v > 31; });
-    StringAttr roundingMode = doubleRound ? rewriter.getStringAttr("DOUBLE_ROUND") :
-        rewriter.getStringAttr("SINGLE_ROUND");
+    StringAttr roundingMode = doubleRound
+                                  ? rewriter.getStringAttr("DOUBLE_ROUND")
+                                  : rewriter.getStringAttr("SINGLE_ROUND");
 
     SmallVector<AffineMap> indexingMaps = {
         rewriter.getMultiDimIdentityMap(rank)};
@@ -1521,7 +1523,8 @@ public:
               nestedBuilder.create<arith::SubIOp>(nestedLoc, value, inputZp);
 
           value = nestedBuilder.create<tosa::ApplyScaleOp>(
-              loc, nestedBuilder.getI32Type(), value, multiplier, shift, roundingMode);
+              loc, nestedBuilder.getI32Type(), value, multiplier, shift,
+              roundingMode);
 
           // Move to the new zero-point.
           value =
diff --git a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgNamed.cpp b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgNamed.cpp
index 2dd3d2fb33..6b46a97bbd 100644
--- a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgNamed.cpp
+++ b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgNamed.cpp
@@ -1003,9 +1003,9 @@ public:
 
             auto scaled =
                 rewriter
-                    .create<tosa::ApplyScaleOp>(loc, rewriter.getI32Type(),
-                                                poolVal, multiplier, shift,
-                                                rewriter.getStringAttr("SINGLE_ROUND"))
+                    .create<tosa::ApplyScaleOp>(
+                        loc, rewriter.getI32Type(), poolVal, multiplier, shift,
+                        rewriter.getStringAttr("SINGLE_ROUND"))
                     .getResult();
 
             // If we have quantization information we need to apply output
diff --git a/mlir/lib/Dialect/Tosa/Transforms/TosaValidation.cpp b/mlir/lib/Dialect/Tosa/Transforms/TosaValidation.cpp
index 70c4cd0a52..6b1b651a90 100644
--- a/mlir/lib/Dialect/Tosa/Transforms/TosaValidation.cpp
+++ b/mlir/lib/Dialect/Tosa/Transforms/TosaValidation.cpp
@@ -391,13 +391,15 @@ private:
     if (auto rescale = dyn_cast<tosa::RescaleOp>(op)) {
       if (rescale.getRoundingMode() == "DOUBLE_ROUND" &&
           !targetEnv.allows(Extension::doubleround)) {
-        op->emitOpError() << "failed attribute check: rounding_mode = DOUBLE_ROUND "
-                          << "requires extension [doubleround]";
+        op->emitOpError()
+            << "failed attribute check: rounding_mode = DOUBLE_ROUND "
+            << "requires extension [doubleround]";
         return false;
       } else if (rescale.getRoundingMode() == "INEXACT_ROUND" &&
-          !targetEnv.allows(Extension::inexactround)) {
-        op->emitOpError() << "failed attribute check: rounding_mode = INEXACT_ROUND "
-                          << "requires extension [inexactround]";
+                 !targetEnv.allows(Extension::inexactround)) {
+        op->emitOpError()
+            << "failed attribute check: rounding_mode = INEXACT_ROUND "
+            << "requires extension [inexactround]";
         return false;
       }
     }

``````````

</details>


https://github.com/llvm/llvm-project/pull/130337


More information about the Mlir-commits mailing list