[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