[Mlir-commits] [mlir] [mlir][SPIRV] Add SPIRVToLLVM conversion for selection with yielding values (PR #210600)
Igor Wodiany
llvmlistbot at llvm.org
Mon Jul 20 01:50:20 PDT 2026
================
@@ -214,6 +214,62 @@ spirv.module Logical GLSL450 {
%one = spirv.Constant 1 : i32
spirv.ReturnValue %one : i32
}
+
+ spirv.func @selection_with_yielding_value(%cond: i1) -> i32 "None" {
+ // CHECK: llvm.cond_br %{{.*}}, ^bb1, ^bb2
+ %0 = spirv.mlir.selection -> i32 {
+ spirv.BranchConditional %cond, ^true, ^false
+ // CHECK: ^bb1:
+ ^true:
+ // CHECK: %[[C1:.*]] = llvm.mlir.constant(1 : i32) : i32
+ %cst1 = spirv.Constant 1 : i32
+ // CHECK: llvm.br ^bb3(%[[C1]] : i32)
+ spirv.Branch ^merge(%cst1 : i32)
+ // CHECK: ^bb2:
+ ^false:
+ // CHECK: %[[C2:.*]] = llvm.mlir.constant(2 : i32) : i32
+ %cst2 = spirv.Constant 2 : i32
+ // CHECK: llvm.br ^bb3(%[[C2]] : i32)
+ spirv.Branch ^merge(%cst2 : i32)
+ // CHECK: ^bb3(%[[ARG:.*]]: i32):
+ ^merge(%1: i32):
+ // CHECK: llvm.br ^bb4(%[[ARG]] : i32)
+ spirv.mlir.merge %1 : i32
+ }
+ // CHECK: ^bb4({{.*}}):
+ %one = spirv.Constant 1 : i32
+ spirv.ReturnValue %one : i32
+ }
+
+ spirv.func @selection_with_multiple_yielding_values(%cond: i1) -> i32 "None" {
+ // CHECK: llvm.cond_br %{{.*}}, ^bb1, ^bb2
+ %0:2 = spirv.mlir.selection -> i32, i32 {
+ spirv.BranchConditional %cond, ^true, ^false
+ // CHECK: ^bb1:
+ ^true:
+ // CHECK: %[[C1:.*]] = llvm.mlir.constant(1 : i32) : i32
+ %cst1 = spirv.Constant 1 : i32
+ // CHECK: %[[C3:.*]] = llvm.mlir.constant(3 : i32) : i32
+ %cst3 = spirv.Constant 3 : i32
+ // CHECK: llvm.br ^bb3(%[[C1]], %[[C3]] : i32, i32)
+ spirv.Branch ^merge(%cst1, %cst3 : i32, i32)
+ // CHECK: ^bb2:
+ ^false:
+ // CHECK: %[[C2:.*]] = llvm.mlir.constant(2 : i32) : i32
+ %cst2 = spirv.Constant 2 : i32
+ // CHECK: %[[C4:.*]] = llvm.mlir.constant(4 : i32) : i32
+ %cst4 = spirv.Constant 4 : i32
+ // CHECK: llvm.br ^bb3(%[[C2]], %[[C4]] : i32, i32)
+ spirv.Branch ^merge(%cst2, %cst4 : i32, i32)
+ // CHECK: ^bb3(%[[ARG:.*]]: i32, %[[ARG1:.*]]: i32):
+ ^merge(%1: i32, %2: i32):
+ // CHECK: llvm.br ^bb4(%[[ARG]], %[[ARG1]] : i32, i32)
+ spirv.mlir.merge %1, %2 : i32, i32
+ }
+ // CHECK: ^bb4({{.*}}):
+ %one = spirv.Constant 1 : i32
+ spirv.ReturnValue %one : i32
----------------
IgWod wrote:
Same comment as in the other test.
https://github.com/llvm/llvm-project/pull/210600
More information about the Mlir-commits
mailing list