// RUN: mlir-translate --mlir-to-llvmir -verify-diagnostics -split-input-file %s llvm.func @fence_sync_restrict() { // expected-error @below {{attribute 'order' failed to satisfy constraint: NVVM Memory Ordering kind whose value is one of {acquire, release}}} nvvm.fence.sync_restrict {order = #nvvm.mem_order} llvm.return } // ----- llvm.func @fence_sync_restrict() { // expected-error @below {{attribute 'order' failed to satisfy constraint: NVVM Memory Ordering kind whose value is one of {acquire, release}}} nvvm.fence.sync_restrict {order = #nvvm.mem_order} llvm.return } // ----- llvm.func @fence_proxy() { // expected-error @below {{attribute 'kind' failed to satisfy constraint: Proxy kind whose value is none of {tensormap, generic}}} nvvm.fence.proxy {kind = #nvvm.proxy_kind} llvm.return } // ----- llvm.func @fence_proxy() { // expected-error @below {{attribute 'kind' failed to satisfy constraint: Proxy kind whose value is none of {tensormap, generic}}} nvvm.fence.proxy {kind = #nvvm.proxy_kind} llvm.return } // ----- llvm.func @fence_proxy() { // expected-error @below {{async_shared fence requires space attribute}} nvvm.fence.proxy {kind = #nvvm.proxy_kind} llvm.return } // ----- llvm.func @fence_proxy() { // expected-error @below {{only async_shared fence can have space attribute}} nvvm.fence.proxy {kind = #nvvm.proxy_kind, space = #nvvm.shared_space} 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 from_proxy = #nvvm.proxy_kind to_proxy = #nvvm.proxy_kind 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 from_proxy = #nvvm.proxy_kind to_proxy = #nvvm.proxy_kind llvm.return } // ----- llvm.func @fence_proxy_sync_restrict() { // expected-error @below {{attribute 'order' failed to satisfy constraint: NVVM Memory Ordering kind whose value is one of {acquire, release}}} nvvm.fence.proxy.sync_restrict {order = #nvvm.mem_order} 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, toProxy = #nvvm.proxy_kind, fromProxy = #nvvm.proxy_kind} llvm.return } // ----- llvm.func @fence_proxy_sync_restrict() { // expected-error @below {{only generic is support for from_proxy attribute}} nvvm.fence.proxy.sync_restrict {order = #nvvm.mem_order, toProxy = #nvvm.proxy_kind, fromProxy = #nvvm.proxy_kind} llvm.return }