[Mlir-commits] [mlir] 4837d8d - [mlir][SPIR-V] Populate math and cf dialect patterns in `test-convert-to-spirv` (#214627)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Sep 17 05:46:57 PDT 2026
Author: Arseniy Obolenskiy
Date: 2026-09-17T14:46:51+02:00
New Revision: 4837d8d5a3b1694f2e760cb4eec54360b047f722
URL: https://github.com/llvm/llvm-project/commit/4837d8d5a3b1694f2e760cb4eec54360b047f722
DIFF: https://github.com/llvm/llvm-project/commit/4837d8d5a3b1694f2e760cb4eec54360b047f722.diff
LOG: [mlir][SPIR-V] Populate math and cf dialect patterns in `test-convert-to-spirv` (#214627)
Added:
Modified:
mlir/test/Conversion/ConvertToSPIRV/scf.mlir
mlir/test/Conversion/ConvertToSPIRV/simple.mlir
mlir/test/lib/Pass/TestConvertToSPIRVPass.cpp
Removed:
################################################################################
diff --git a/mlir/test/Conversion/ConvertToSPIRV/scf.mlir b/mlir/test/Conversion/ConvertToSPIRV/scf.mlir
index fab45d4742850..8418228357a4a 100644
--- a/mlir/test/Conversion/ConvertToSPIRV/scf.mlir
+++ b/mlir/test/Conversion/ConvertToSPIRV/scf.mlir
@@ -78,3 +78,23 @@ func.func @for() {
}
return
}
+
+// CHECK-LABEL: @if_yield_math
+// CHECK-SAME: %[[ARG0:.*]]: i1, %[[ARG1:.*]]: f32
+// CHECK: spirv.mlir.selection {
+// CHECK: %[[SQRT:.*]] = spirv.GL.Sqrt %[[ARG1]] : f32
+// CHECK: spirv.Store "Function" %{{.*}}, %[[SQRT]] : f32
+// CHECK: ^{{.*}}:
+// CHECK: %[[EXP:.*]] = spirv.GL.Exp %[[ARG1]] : f32
+// CHECK: spirv.Store "Function" %{{.*}}, %[[EXP]] : f32
+// CHECK: }
+func.func @if_yield_math(%arg0: i1, %arg1: f32) -> f32 {
+ %0 = scf.if %arg0 -> f32 {
+ %res = math.sqrt %arg1 : f32
+ scf.yield %res : f32
+ } else {
+ %res = math.exp %arg1 : f32
+ scf.yield %res : f32
+ }
+ return %0 : f32
+}
diff --git a/mlir/test/Conversion/ConvertToSPIRV/simple.mlir b/mlir/test/Conversion/ConvertToSPIRV/simple.mlir
index aa4a963d1d69a..c485cbb06720c 100644
--- a/mlir/test/Conversion/ConvertToSPIRV/simple.mlir
+++ b/mlir/test/Conversion/ConvertToSPIRV/simple.mlir
@@ -13,3 +13,22 @@ func.func @return_scalar(%arg0 : i32) -> i32 {
func.func @return_vector(%arg0 : vector<4xi32>) -> vector<4xi32> {
return %arg0 : vector<4xi32>
}
+
+// CHECK-LABEL: @cond_br
+// CHECK-SAME: %[[ARG0:.*]]: i1, %[[ARG1:.*]]: i32, %[[ARG2:.*]]: i32
+// CHECK: spirv.BranchConditional %[[ARG0]], ^[[BB1:.*]], ^[[BB2:.*]]
+// CHECK-NEXT: ^[[BB1]]:
+// CHECK-NEXT: spirv.Branch ^[[BB3:.*]](%[[ARG1]] : i32)
+// CHECK-NEXT: ^[[BB2]]:
+// CHECK-NEXT: spirv.Branch ^[[BB3]](%[[ARG2]] : i32)
+// CHECK-NEXT: ^[[BB3]]
+// CHECK: spirv.ReturnValue
+func.func @cond_br(%arg0: i1, %arg1: i32, %arg2: i32) -> i32 {
+ cf.cond_br %arg0, ^bb1, ^bb2
+^bb1:
+ cf.br ^bb3(%arg1 : i32)
+^bb2:
+ cf.br ^bb3(%arg2 : i32)
+^bb3(%r: i32):
+ return %r : i32
+}
diff --git a/mlir/test/lib/Pass/TestConvertToSPIRVPass.cpp b/mlir/test/lib/Pass/TestConvertToSPIRVPass.cpp
index 3c99d3c5b60ce..fa07a94aba474 100644
--- a/mlir/test/lib/Pass/TestConvertToSPIRVPass.cpp
+++ b/mlir/test/lib/Pass/TestConvertToSPIRVPass.cpp
@@ -7,9 +7,11 @@
//===----------------------------------------------------------------------===//
#include "mlir/Conversion/ArithToSPIRV/ArithToSPIRV.h"
+#include "mlir/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRV.h"
#include "mlir/Conversion/FuncToSPIRV/FuncToSPIRV.h"
#include "mlir/Conversion/GPUToSPIRV/GPUToSPIRV.h"
#include "mlir/Conversion/IndexToSPIRV/IndexToSPIRV.h"
+#include "mlir/Conversion/MathToSPIRV/MathToSPIRV.h"
#include "mlir/Conversion/MemRefToSPIRV/MemRefToSPIRV.h"
#include "mlir/Conversion/SCFToSPIRV/SCFToSPIRV.h"
#include "mlir/Conversion/UBToSPIRV/UBToSPIRV.h"
@@ -53,10 +55,12 @@ void populateConvertToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
RewritePatternSet &patterns) {
arith::populateCeilFloorDivExpandOpsPatterns(patterns);
arith::populateArithToSPIRVPatterns(typeConverter, patterns);
+ cf::populateControlFlowToSPIRVPatterns(typeConverter, patterns);
populateBuiltinFuncToSPIRVPatterns(typeConverter, patterns);
populateFuncToSPIRVPatterns(typeConverter, patterns);
populateGPUToSPIRVPatterns(typeConverter, patterns);
index::populateIndexToSPIRVPatterns(typeConverter, patterns);
+ populateMathToSPIRVPatterns(typeConverter, patterns);
populateMemRefToSPIRVPatterns(typeConverter, patterns);
populateVectorToSPIRVPatterns(typeConverter, patterns);
populateSCFToSPIRVPatterns(typeConverter, scfToSPIRVContext, patterns);
More information about the Mlir-commits
mailing list