[Mlir-commits] [mlir] ba1b050 - [mlir][ArmSME][NFC] Improving the readability of outer product fusion (#227140)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Sun Oct 4 15:46:44 PDT 2026
Author: Federico Bruzzone
Date: 2026-10-04T22:46:36Z
New Revision: ba1b050157b665af35b29cf17040b3ed8723b426
URL: https://github.com/llvm/llvm-project/commit/ba1b050157b665af35b29cf17040b3ed8723b426
DIFF: https://github.com/llvm/llvm-project/commit/ba1b050157b665af35b29cf17040b3ed8723b426.diff
LOG: [mlir][ArmSME][NFC] Improving the readability of outer product fusion (#227140)
This NFC improves the readability of the outer-product fusion in ArmSME.
---------
Signed-off-by: Federico Bruzzone <federico.bruzzone.i at gmail.com>
Added:
Modified:
mlir/lib/Dialect/ArmSME/Transforms/OuterProductFusion.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/ArmSME/Transforms/OuterProductFusion.cpp b/mlir/lib/Dialect/ArmSME/Transforms/OuterProductFusion.cpp
index f1c36edac6094..a8b89f9157a70 100644
--- a/mlir/lib/Dialect/ArmSME/Transforms/OuterProductFusion.cpp
+++ b/mlir/lib/Dialect/ArmSME/Transforms/OuterProductFusion.cpp
@@ -219,25 +219,31 @@ class OuterProductFusion2Way
auto nxv4i16 = VectorType::get({4}, rewriter.getI16Type(), true);
auto nxv4f16 = VectorType::get({4}, rewriter.getF16Type(), true);
auto nxv4bf16 = VectorType::get({4}, rewriter.getBF16Type(), true);
- if ((failed(
- isCompatible<arith::ExtFOp>(rewriter, op1, nxnxv4f32, nxv4f16)) ||
- failed(
- isCompatible<arith::ExtFOp>(rewriter, op2, nxnxv4f32, nxv4f16))) &&
- (failed(
- isCompatible<arith::ExtFOp>(rewriter, op1, nxnxv4f32, nxv4bf16)) ||
- failed(isCompatible<arith::ExtFOp>(rewriter, op2, nxnxv4f32,
- nxv4bf16))) &&
- (failed(
- isCompatible<arith::ExtSIOp>(rewriter, op1, nxnxv4i32, nxv4i16)) ||
- failed(isCompatible<arith::ExtSIOp>(rewriter, op2, nxnxv4i32,
- nxv4i16))) &&
- (failed(
- isCompatible<arith::ExtUIOp>(rewriter, op1, nxnxv4i32, nxv4i16)) ||
- failed(
- isCompatible<arith::ExtUIOp>(rewriter, op2, nxnxv4i32, nxv4i16))))
- return failure();
-
- return success();
+ const bool isF16Compatible =
+ succeeded(
+ isCompatible<arith::ExtFOp>(rewriter, op1, nxnxv4f32, nxv4f16)) &&
+ succeeded(
+ isCompatible<arith::ExtFOp>(rewriter, op2, nxnxv4f32, nxv4f16));
+ const bool isBF16Compatible =
+ succeeded(
+ isCompatible<arith::ExtFOp>(rewriter, op1, nxnxv4f32, nxv4bf16)) &&
+ succeeded(
+ isCompatible<arith::ExtFOp>(rewriter, op2, nxnxv4f32, nxv4bf16));
+ const bool isI16Compatible =
+ succeeded(
+ isCompatible<arith::ExtSIOp>(rewriter, op1, nxnxv4i32, nxv4i16)) &&
+ succeeded(
+ isCompatible<arith::ExtSIOp>(rewriter, op2, nxnxv4i32, nxv4i16));
+ const bool isUI16Compatible =
+ succeeded(
+ isCompatible<arith::ExtUIOp>(rewriter, op1, nxnxv4i32, nxv4i16)) &&
+ succeeded(
+ isCompatible<arith::ExtUIOp>(rewriter, op2, nxnxv4i32, nxv4i16));
+
+ return (isF16Compatible || isBF16Compatible || isI16Compatible ||
+ isUI16Compatible)
+ ? success()
+ : failure();
}
};
More information about the Mlir-commits
mailing list