[Mlir-commits] [mlir] [MLIR][NVVM] Add support for match.sync Op (PR #130718)
Durgadoss R
llvmlistbot at llvm.org
Tue Mar 11 03:12:17 PDT 2025
================
@@ -550,6 +550,35 @@ func.func @mapa(%a: !llvm.ptr, %a_shared: !llvm.ptr<3>, %b : i32) {
return
}
+// CHECK-LABEL: @match_sync
+func.func @match_sync(%val32: i32, %val64: i64, %thread_mask: i32) {
+ // CHECK: nvvm.match.sync any %{{.*}}, %{{.*}} : i32 -> i32
+ %0 = nvvm.match.sync any %thread_mask, %val32 : i32 -> i32
+ // CHECK: nvvm.match.sync all %{{.*}}, %{{.*}} : i32 -> !llvm.struct<(i32, i1)>
+ %1 = nvvm.match.sync all %thread_mask, %val32 : i32 -> !llvm.struct<(i32, i1)>
+ // CHECK: nvvm.match.sync any %{{.*}}, %{{.*}} : i64 -> i32
+ %2 = nvvm.match.sync any %thread_mask, %val64 : i64 -> i32
+ // CHECK: nvvm.match.sync all %{{.*}}, %{{.*}} : i64 -> !llvm.struct<(i32, i1)>
+ %3 = nvvm.match.sync all %thread_mask, %val64 : i64 -> !llvm.struct<(i32, i1)>
+ return
+}
+
+// -----
+
+func.func @match_sync_error1(%val32: i32, %thread_mask: i32) {
+ // expected-error @below {{match.sync 'all' returns a two element struct with first element as i32 and second element as i1}}
+ %0 = nvvm.match.sync all %thread_mask, %val32 : i32 -> !llvm.struct<(i32, i8)>
+ return
+}
+
+// -----
+
+func.func @match_sync_error2(%val32: i32, %thread_mask: i32) {
+ // expected-error @below {{match.sync 'any' returns an i32}}
+ %0 = nvvm.match.sync any %thread_mask, %val32 : i32 -> !llvm.struct<(i32, i1)>
+ return
+}
+
----------------
durga4github wrote:
Can we move the negative tests to the nvvm-invalid.mlir file?
https://github.com/llvm/llvm-project/pull/130718
More information about the Mlir-commits
mailing list