xref: /llvm-project/libclc/ptx-nvidiacl/lib/mem_fence/fence.cl (revision 3d21fa56f5f5afbbf16b35b199480af71e1189a3)
1#include <clc/clc.h>
2
3_CLC_DEF _CLC_OVERLOAD void mem_fence(cl_mem_fence_flags flags) {
4  if (flags & (CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE))
5    __nvvm_membar_cta();
6}
7
8// We do not have separate mechanism for read and write fences.
9_CLC_DEF _CLC_OVERLOAD void read_mem_fence(cl_mem_fence_flags flags) {
10  mem_fence(flags);
11}
12
13_CLC_DEF _CLC_OVERLOAD void write_mem_fence(cl_mem_fence_flags flags) {
14  mem_fence(flags);
15}
16