[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