From: Luo Xionghu <[email protected]> also add definition for memory_order and memory_scope. v2: still use MACRO to define cl_mem_fence_flags as the value could be combined like (CLK_GLOBAL_MEM_FENCE|CLK_LOCAL_MEM_FENCE) that the enum not supported.
Signed-off-by: Luo Xionghu <[email protected]> --- backend/src/libocl/include/ocl_sync.h | 4 ---- backend/src/libocl/include/ocl_types.h | 30 ++++++++++++++++++++++++++++++ backend/src/ocl_common_defines.h | 6 +----- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/backend/src/libocl/include/ocl_sync.h b/backend/src/libocl/include/ocl_sync.h index 3e62026..2ea1183 100644 --- a/backend/src/libocl/include/ocl_sync.h +++ b/backend/src/libocl/include/ocl_sync.h @@ -23,10 +23,6 @@ ///////////////////////////////////////////////////////////////////////////// // Synchronization functions ///////////////////////////////////////////////////////////////////////////// -#define CLK_LOCAL_MEM_FENCE (1 << 0) -#define CLK_GLOBAL_MEM_FENCE (1 << 1) - -typedef uint cl_mem_fence_flags; OVERLOADABLE void barrier(cl_mem_fence_flags flags); void mem_fence(cl_mem_fence_flags flags); void read_mem_fence(cl_mem_fence_flags flags); diff --git a/backend/src/libocl/include/ocl_types.h b/backend/src/libocl/include/ocl_types.h index eb4c3b4..2ff02c5 100644 --- a/backend/src/libocl/include/ocl_types.h +++ b/backend/src/libocl/include/ocl_types.h @@ -20,6 +20,8 @@ #pragma OPENCL EXTENSION cl_khr_fp64 : enable #pragma OPENCL EXTENSION cl_khr_fp16 : enable +#pragma OPENCL EXTENSION cl_khr_int64_base_atomics : enable +#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics : enable #include "ocl_defines.h" #define NULL 0 @@ -84,6 +86,34 @@ DEF(half); #undef DEF ///////////////////////////////////////////////////////////////////////////// +// OpenCL atomic related types +///////////////////////////////////////////////////////////////////////////// +//atomic flags +#define CLK_LOCAL_MEM_FENCE (1 << 0) +#define CLK_GLOBAL_MEM_FENCE (1 << 1) +#define CLK_IMAGE_MEM_FENCE (1 << 2) + +typedef uint cl_mem_fence_flags; + +//memory order +typedef enum { + memory_order_relaxed, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst +} memory_order; + +//memory scope +typedef enum { + memory_scope_work_item, + memory_scope_work_group, + memory_scope_device, + memory_scope_all_svm_devices, + memory_scope_sub_group, +} memory_scope; + +///////////////////////////////////////////////////////////////////////////// // OpenCL built-in event types ///////////////////////////////////////////////////////////////////////////// // FIXME: diff --git a/backend/src/ocl_common_defines.h b/backend/src/ocl_common_defines.h index 52f5365..cb9190a 100644 --- a/backend/src/ocl_common_defines.h +++ b/backend/src/ocl_common_defines.h @@ -119,8 +119,4 @@ typedef enum clk_sampler_type { } clk_sampler_type; -// Memory synchronization -#define CLK_LOCAL_MEM_FENCE (1 << 0) -#define CLK_GLOBAL_MEM_FENCE (1 << 1) - -#endif /* __OCL_COMMON_DEFINES__ */ \ No newline at end of file +#endif /* __OCL_COMMON_DEFINES__ */ -- 2.1.4 _______________________________________________ Beignet mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/beignet
