[Mlir-commits] [mlir] [mlir][NVVM] Add support for few more fence Ops (PR #170251)

Durgadoss R llvmlistbot at llvm.org
Wed Dec 3 00:28:07 PST 2025


================
@@ -0,0 +1,89 @@
+// RUN: mlir-translate --mlir-to-llvmir -verify-diagnostics -split-input-file %s
+
+llvm.func @fence_sync_restrict() {
+  // expected-error @below {{only acquire and release semantics are supported}}
+  nvvm.fence.sync_restrict {order = #nvvm.mem_order<weak>}
+  llvm.return
+}
+
+// -----
+
+llvm.func @fence_sync_restrict() {
+  // expected-error @below {{only acquire and release semantics are supported}}
+  nvvm.fence.sync_restrict {order = #nvvm.mem_order<mmio>}
+  llvm.return
+}
+
+// -----
+
+llvm.func @fence_proxy() {
+  // expected-error @below {{tensormap proxy is not a supported proxy kind}}
+  nvvm.fence.proxy {kind = #nvvm.proxy_kind<tensormap>}
+  llvm.return
+}
+
+// -----
+
+llvm.func @fence_proxy() {
+  // expected-error @below {{generic proxy not a supported proxy kind}}
+  nvvm.fence.proxy {kind = #nvvm.proxy_kind<generic>}
+  llvm.return
+}
+
+// -----
+
+llvm.func @fence_proxy() {
+  // expected-error @below {{async_shared fence requires space attribute}}
+  nvvm.fence.proxy {kind = #nvvm.proxy_kind<async.shared>}
+  llvm.return
+}
+
+// -----
+
+llvm.func @fence_proxy() {
+  // expected-error @below {{only async_shared fence can have space attribute}}
+  nvvm.fence.proxy {kind = #nvvm.proxy_kind<alias>, space = #nvvm.shared_space<cta>}
+  llvm.return
+}
+
+// -----
+
+llvm.func @fence_proxy_release() {
+  // expected-error @below {{uni-directional proxies only support generic for from_proxy attribute}}
+  nvvm.fence.proxy.release #nvvm.mem_scope<cta> from_proxy = #nvvm.proxy_kind<alias> to_proxy = #nvvm.proxy_kind<tensormap>
+  llvm.return
+}
+
+// -----
+
+llvm.func @fence_proxy_release() {
+  // expected-error @below {{uni-directional proxies only support tensormap for to_proxy attribute}}
+  nvvm.fence.proxy.release #nvvm.mem_scope<cta> from_proxy = #nvvm.proxy_kind<generic> to_proxy = #nvvm.proxy_kind<async>
+  llvm.return
+}
+
+// -----
+
+llvm.func @fence_proxy_sync_restrict() {
+  // expected-error @below {{only acquire and release semantics are supported}}
+  nvvm.fence.proxy.sync_restrict {order = #nvvm.mem_order<mmio>}
+  llvm.return
+}
+
+// -----
+
+llvm.func @fence_proxy_sync_restrict() {
+  // expected-error @below {{only async is supported for to_proxy attribute}}
+  nvvm.fence.proxy.sync_restrict {order = #nvvm.mem_order<acquire>, toProxy = #nvvm.proxy_kind<alias>,
+                                  fromProxy = #nvvm.proxy_kind<generic>}
+  llvm.return
+}
+
+// -----
+
+llvm.func @fence_proxy_sync_restrict() {
----------------
durga4github wrote:

nit: I agree the split-line helps us to have same names for all these functions, but it would be better to add a suffix (or prefix) that tells us what are we testing.

https://github.com/llvm/llvm-project/pull/170251


More information about the Mlir-commits mailing list