28 lines · plain
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include <clc/mem_fence/clc_mem_fence.h>10#include <clc/opencl/explicit_fence/explicit_memory_fence.h>11#include <clc/opencl/synchronization/utils.h>12 13_CLC_DEF _CLC_OVERLOAD void mem_fence(cl_mem_fence_flags flags) {14 int memory_scope = __opencl_get_memory_scope(flags);15 int memory_order = __ATOMIC_SEQ_CST;16 __CLC_MemorySemantics memory_semantics = __opencl_get_memory_semantics(flags);17 __clc_mem_fence(memory_scope, memory_order, memory_semantics);18}19 20// We do not have separate mechanism for read and write fences.21_CLC_DEF _CLC_OVERLOAD void read_mem_fence(cl_mem_fence_flags flags) {22 mem_fence(flags);23}24 25_CLC_DEF _CLC_OVERLOAD void write_mem_fence(cl_mem_fence_flags flags) {26 mem_fence(flags);27}28