Fix CL_EVENT macro

Bug: angleproject:5745
Change-Id: Icbfab0d0bd4b1510b98d5ed746f4d3ddfa5ec36e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2752746
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/scripts/code_generation_hashes/GL_EGL_entry_points.json b/scripts/code_generation_hashes/GL_EGL_entry_points.json
index 1263013..5cd2500 100644
--- a/scripts/code_generation_hashes/GL_EGL_entry_points.json
+++ b/scripts/code_generation_hashes/GL_EGL_entry_points.json
@@ -10,7 +10,7 @@
   "scripts/entry_point_packed_gl_enums.json":
     "4f7b43863a5e61991bba4010db463679",
   "scripts/generate_entry_points.py":
-    "1c1f236f9804be736409ffffc0869662",
+    "776b9fad21f479a16e23beeed97c53f8",
   "scripts/gl.xml":
     "2a73a58a7e26d8676a2c0af6d528cae6",
   "scripts/gl_angle_ext.xml":
@@ -166,7 +166,7 @@
   "src/libGLESv2/libGLESv2_with_capture_autogen.def":
     "301a20588e14724b390409c71d5ccfcd",
   "src/libOpenCL/entry_points_cl_autogen.cpp":
-    "359093faf2a825d10384d301009ad5b5",
+    "9da7a72f6afcd5af04777103612a3bee",
   "src/libOpenCL/entry_points_cl_autogen.h":
     "3b4a3094e8fd9082b71915b5bd1e8fee"
 }
\ No newline at end of file
diff --git a/scripts/generate_entry_points.py b/scripts/generate_entry_points.py
index 8888784..9a740c6 100755
--- a/scripts/generate_entry_points.py
+++ b/scripts/generate_entry_points.py
@@ -248,8 +248,7 @@
 TEMPLATE_CL_ENTRY_POINT_NO_RETURN = """\
 void CL_API_ENTRY CL_{name}({params})
 {{
-    // TODO: CL_EVENT
-    // CL_EVENT({name}, "{format_params}"{comma_if_needed}{pass_params});
+    CL_EVENT({name}, "{format_params}"{comma_if_needed}{pass_params});
 
     // TODO: {name}
 }}
@@ -258,8 +257,7 @@
 TEMPLATE_CL_ENTRY_POINT_WITH_RETURN = """\
 {return_type}CL_API_ENTRY CL_{name}({params})
 {{
-    // TODO: CL_EVENT
-    // CL_EVENT({name}, "{format_params}"{comma_if_needed}{pass_params});
+    CL_EVENT({name}, "{format_params}"{comma_if_needed}{pass_params});
 
     // TODO: {name}
 
@@ -622,18 +620,18 @@
     "LPGLYPHMETRICSFLOAT": POINTER_FORMAT,
     "UINT": "%u",
     # CL-specific types
-    "size_t": "%u",
-    "cl_char": "%d",
-    "cl_uchar": "%u",
-    "cl_short": "%d",
-    "cl_ushort": "%u",
+    "size_t": "%zu",
+    "cl_char": "%hhd",
+    "cl_uchar": "%hhu",
+    "cl_short": "%hd",
+    "cl_ushort": "%hu",
     "cl_int": "%d",
     "cl_uint": "%u",
-    "cl_long": "%d",
-    "cl_ulong": "%u",
-    "cl_half": "%lf",
-    "cl_float": "%lf",
-    "cl_double": "%lf",
+    "cl_long": "%ld",
+    "cl_ulong": "%lu",
+    "cl_half": "%hu",
+    "cl_float": "%f",
+    "cl_double": "%f",
     "cl_platform_id": POINTER_FORMAT,
     "cl_device_id": POINTER_FORMAT,
     "cl_context": POINTER_FORMAT,
@@ -642,63 +640,61 @@
     "cl_program": POINTER_FORMAT,
     "cl_kernel": POINTER_FORMAT,
     "cl_event": POINTER_FORMAT,
-    "cl_program": POINTER_FORMAT,
     "cl_sampler": POINTER_FORMAT,
     "cl_bool": "%u",
-    "cl_bitfield": "%u",
-    "cl_properties": "%u",
-    "cl_device_type": "%u",
+    "cl_bitfield": "%lu",
+    "cl_properties": "%lu",
+    "cl_device_type": "%lu",
     "cl_platform_info": "%u",
     "cl_device_info": "%u",
-    "cl_platform_info": "%u",
-    "cl_device_fp_config": "%u",
+    "cl_device_fp_config": "%lu",
     "cl_device_mem_cache_type": "%u",
     "cl_device_local_mem_type": "%u",
-    "cl_device_exec_capabilities": "%u",
-    "cl_device_svm_capabilities": "%u",
-    "cl_command_queue_properties": "%u",
-    "cl_device_partition_property": "%u",
-    "cl_device_affinity_domain": "%u",
-    "cl_context_properties": "%u",
+    "cl_device_exec_capabilities": "%lu",
+    "cl_device_svm_capabilities": "%lu",
+    "cl_command_queue_properties": "%lu",
+    "cl_device_partition_property": "%zu",
+    "cl_device_affinity_domain": "%lu",
+    "cl_context_properties": "%zu",
     "cl_context_info": "%u",
-    "cl_queue_properties": "%u",
+    "cl_queue_properties": "%lu",
     "cl_command_queue_info": "%u",
     "cl_channel_order": "%u",
     "cl_channel_type": "%u",
-    "cl_mem_flags": "%u",
-    "cl_svm_mem_flags": "%u",
+    "cl_mem_flags": "%lu",
+    "cl_svm_mem_flags": "%lu",
     "cl_mem_object_type": "%u",
     "cl_mem_info": "%u",
-    "cl_mem_migration_flags": "%u",
+    "cl_mem_migration_flags": "%lu",
+    "cl_mem_properties": "%lu",
     "cl_image_info": "%u",
     "cl_buffer_create_type": "%u",
     "cl_addressing_mode": "%u",
     "cl_filter_mode": "%u",
     "cl_sampler_info": "%u",
-    "cl_map_flags": "%u",
-    "cl_pipe_properties": "%u",
+    "cl_map_flags": "%lu",
+    "cl_pipe_properties": "%zu",
     "cl_pipe_info": "%u",
     "cl_program_info": "%u",
     "cl_program_build_info": "%u",
     "cl_program_binary_type": "%u",
-    "cl_build_status": "%u",
+    "cl_build_status": "%d",
     "cl_kernel_info": "%u",
     "cl_kernel_arg_info": "%u",
     "cl_kernel_arg_address_qualifier": "%u",
     "cl_kernel_arg_access_qualifier": "%u",
-    "cl_kernel_arg_type_qualifier": "%u",
+    "cl_kernel_arg_type_qualifier": "%lu",
     "cl_kernel_work_group_info": "%u",
     "cl_kernel_sub_group_info": "%u",
     "cl_event_info": "%u",
     "cl_command_type": "%u",
     "cl_profiling_info": "%u",
-    "cl_sampler_properties": "%u",
+    "cl_sampler_properties": "%lu",
     "cl_kernel_exec_info": "%u",
-    "cl_device_atomic_capabilities": "%u",
-    "cl_device_device_enqueue_capabilities": "%u",
+    "cl_device_atomic_capabilities": "%lu",
     "cl_khronos_vendor_id": "%u",
-    "cl_mem_properties": "%u",
     "cl_version": "%u",
+    "cl_device_device_enqueue_capabilities": "%lu",
 }
 
 TEMPLATE_HEADER_INCLUDES = """\
@@ -889,6 +885,7 @@
 
 LIBCL_SOURCE_INCLUDES = """\
 #include "entry_points_cl_autogen.h"
+#include "entry_points_cl_utils.h"
 """
 
 TEMPLATE_EVENT_COMMENT = """\
@@ -1164,7 +1161,16 @@
 
 
 def just_the_name(param):
-    return param[type_name_sep_index(param) + 1:].strip()
+
+    def get_name(param_string):
+        return param_string[type_name_sep_index(param_string) + 1:].strip()
+
+    left_paren = param.find("(")
+    if left_paren == -1:
+        return get_name(param)
+    right_paren = param.index(")")
+    paren_content = param[left_paren + 1:right_paren]
+    return get_name(paren_content)
 
 
 def make_param(param_type, param_name):
diff --git a/src/libOpenCL/BUILD.gn b/src/libOpenCL/BUILD.gn
index f31e2d2..a13cf4e 100644
--- a/src/libOpenCL/BUILD.gn
+++ b/src/libOpenCL/BUILD.gn
@@ -37,6 +37,7 @@
   sources = [
     "entry_points_cl_autogen.cpp",
     "entry_points_cl_autogen.h",
+    "entry_points_cl_utils.h",
   ]
   deps = [ ":cl_includes" ]
 }
diff --git a/src/libOpenCL/entry_points_cl_autogen.cpp b/src/libOpenCL/entry_points_cl_autogen.cpp
index db69c2b..cdcec61 100644
--- a/src/libOpenCL/entry_points_cl_autogen.cpp
+++ b/src/libOpenCL/entry_points_cl_autogen.cpp
@@ -9,6 +9,7 @@
 //   Defines the CL entry points.
 
 #include "entry_points_cl_autogen.h"
+#include "entry_points_cl_utils.h"
 
 extern "C" {
 
@@ -17,9 +18,9 @@
                                       cl_platform_id *platforms,
                                       cl_uint *num_platforms)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetPlatformIDs, "num_entries = %u, platforms = 0x%016" PRIxPTR ", num_platforms =
-    // 0x%016" PRIxPTR "", num_entries, (uintptr_t)platforms, (uintptr_t)num_platforms);
+    CL_EVENT(GetPlatformIDs,
+             "num_entries = %u, platforms = 0x%016" PRIxPTR ", num_platforms = 0x%016" PRIxPTR "",
+             num_entries, (uintptr_t)platforms, (uintptr_t)num_platforms);
 
     // TODO: GetPlatformIDs
 
@@ -32,11 +33,12 @@
                                        void *param_value,
                                        size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetPlatformInfo, "platform = 0x%016" PRIxPTR ", param_name = %u, param_value_size =
-    // %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
-    // (uintptr_t)platform, param_name, param_value_size, (uintptr_t)param_value,
-    // (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetPlatformInfo,
+             "platform = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)platform, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetPlatformInfo
 
@@ -49,10 +51,12 @@
                                     cl_device_id *devices,
                                     cl_uint *num_devices)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetDeviceIDs, "platform = 0x%016" PRIxPTR ", device_type = %u, num_entries = %u,
-    // devices = 0x%016" PRIxPTR ", num_devices = 0x%016" PRIxPTR "", (uintptr_t)platform,
-    // device_type, num_entries, (uintptr_t)devices, (uintptr_t)num_devices);
+    CL_EVENT(GetDeviceIDs,
+             "platform = 0x%016" PRIxPTR
+             ", device_type = %lu, num_entries = %u, devices = 0x%016" PRIxPTR
+             ", num_devices = 0x%016" PRIxPTR "",
+             (uintptr_t)platform, device_type, num_entries, (uintptr_t)devices,
+             (uintptr_t)num_devices);
 
     // TODO: GetDeviceIDs
 
@@ -65,11 +69,12 @@
                                      void *param_value,
                                      size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetDeviceInfo, "device = 0x%016" PRIxPTR ", param_name = %u, param_value_size = %u,
-    // param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
-    // (uintptr_t)device, param_name, param_value_size, (uintptr_t)param_value,
-    // (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetDeviceInfo,
+             "device = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)device, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetDeviceInfo
 
@@ -86,11 +91,12 @@
                                          void *user_data,
                                          cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateContext, "properties = 0x%016" PRIxPTR ", num_devices = %u, devices = 0x%016"
-    // PRIxPTR ", user_data) = 0x%016" PRIxPTR ", user_data = 0x%016" PRIxPTR ", errcode_ret =
-    // 0x%016" PRIxPTR "", (uintptr_t)properties, num_devices, (uintptr_t)devices,
-    // (uintptr_t)user_data), (uintptr_t)user_data, (uintptr_t)errcode_ret);
+    CL_EVENT(CreateContext,
+             "properties = 0x%016" PRIxPTR ", num_devices = %u, devices = 0x%016" PRIxPTR
+             ", pfn_notify = 0x%016" PRIxPTR ", user_data = 0x%016" PRIxPTR
+             ", errcode_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)properties, num_devices, (uintptr_t)devices, (uintptr_t)pfn_notify,
+             (uintptr_t)user_data, (uintptr_t)errcode_ret);
 
     // TODO: CreateContext
 
@@ -107,11 +113,11 @@
                          void *user_data,
                          cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateContextFromType, "properties = 0x%016" PRIxPTR ", device_type = %u, user_data)
-    // = 0x%016" PRIxPTR ", user_data = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",
-    // (uintptr_t)properties, device_type, (uintptr_t)user_data), (uintptr_t)user_data,
-    // (uintptr_t)errcode_ret);
+    CL_EVENT(CreateContextFromType,
+             "properties = 0x%016" PRIxPTR ", device_type = %lu, pfn_notify = 0x%016" PRIxPTR
+             ", user_data = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)properties, device_type, (uintptr_t)pfn_notify, (uintptr_t)user_data,
+             (uintptr_t)errcode_ret);
 
     // TODO: CreateContextFromType
 
@@ -120,8 +126,7 @@
 
 cl_int CL_API_ENTRY CL_RetainContext(cl_context context)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(RetainContext, "context = 0x%016" PRIxPTR "", (uintptr_t)context);
+    CL_EVENT(RetainContext, "context = 0x%016" PRIxPTR "", (uintptr_t)context);
 
     // TODO: RetainContext
 
@@ -130,8 +135,7 @@
 
 cl_int CL_API_ENTRY CL_ReleaseContext(cl_context context)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(ReleaseContext, "context = 0x%016" PRIxPTR "", (uintptr_t)context);
+    CL_EVENT(ReleaseContext, "context = 0x%016" PRIxPTR "", (uintptr_t)context);
 
     // TODO: ReleaseContext
 
@@ -144,11 +148,12 @@
                                       void *param_value,
                                       size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetContextInfo, "context = 0x%016" PRIxPTR ", param_name = %u, param_value_size =
-    // %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
-    // (uintptr_t)context, param_name, param_value_size, (uintptr_t)param_value,
-    // (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetContextInfo,
+             "context = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)context, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetContextInfo
 
@@ -157,8 +162,7 @@
 
 cl_int CL_API_ENTRY CL_RetainCommandQueue(cl_command_queue command_queue)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(RetainCommandQueue, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);
+    CL_EVENT(RetainCommandQueue, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);
 
     // TODO: RetainCommandQueue
 
@@ -167,8 +171,7 @@
 
 cl_int CL_API_ENTRY CL_ReleaseCommandQueue(cl_command_queue command_queue)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(ReleaseCommandQueue, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);
+    CL_EVENT(ReleaseCommandQueue, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);
 
     // TODO: ReleaseCommandQueue
 
@@ -181,11 +184,12 @@
                                            void *param_value,
                                            size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetCommandQueueInfo, "command_queue = 0x%016" PRIxPTR ", param_name = %u,
-    // param_value_size = %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016"
-    // PRIxPTR "", (uintptr_t)command_queue, param_name, param_value_size, (uintptr_t)param_value,
-    // (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetCommandQueueInfo,
+             "command_queue = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetCommandQueueInfo
 
@@ -198,10 +202,10 @@
                                     void *host_ptr,
                                     cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateBuffer, "context = 0x%016" PRIxPTR ", flags = %u, size = %u, host_ptr =
-    // 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context, flags, size,
-    // (uintptr_t)host_ptr, (uintptr_t)errcode_ret);
+    CL_EVENT(CreateBuffer,
+             "context = 0x%016" PRIxPTR ", flags = %lu, size = %zu, host_ptr = 0x%016" PRIxPTR
+             ", errcode_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)context, flags, size, (uintptr_t)host_ptr, (uintptr_t)errcode_ret);
 
     // TODO: CreateBuffer
 
@@ -210,8 +214,7 @@
 
 cl_int CL_API_ENTRY CL_RetainMemObject(cl_mem memobj)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(RetainMemObject, "memobj = 0x%016" PRIxPTR "", (uintptr_t)memobj);
+    CL_EVENT(RetainMemObject, "memobj = 0x%016" PRIxPTR "", (uintptr_t)memobj);
 
     // TODO: RetainMemObject
 
@@ -220,8 +223,7 @@
 
 cl_int CL_API_ENTRY CL_ReleaseMemObject(cl_mem memobj)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(ReleaseMemObject, "memobj = 0x%016" PRIxPTR "", (uintptr_t)memobj);
+    CL_EVENT(ReleaseMemObject, "memobj = 0x%016" PRIxPTR "", (uintptr_t)memobj);
 
     // TODO: ReleaseMemObject
 
@@ -235,11 +237,12 @@
                                                 cl_image_format *image_formats,
                                                 cl_uint *num_image_formats)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetSupportedImageFormats, "context = 0x%016" PRIxPTR ", flags = %u, image_type = %u,
-    // num_entries = %u, image_formats = 0x%016" PRIxPTR ", num_image_formats = 0x%016" PRIxPTR "",
-    // (uintptr_t)context, flags, image_type, num_entries, (uintptr_t)image_formats,
-    // (uintptr_t)num_image_formats);
+    CL_EVENT(GetSupportedImageFormats,
+             "context = 0x%016" PRIxPTR
+             ", flags = %lu, image_type = %u, num_entries = %u, image_formats = 0x%016" PRIxPTR
+             ", num_image_formats = 0x%016" PRIxPTR "",
+             (uintptr_t)context, flags, image_type, num_entries, (uintptr_t)image_formats,
+             (uintptr_t)num_image_formats);
 
     // TODO: GetSupportedImageFormats
 
@@ -252,11 +255,12 @@
                                         void *param_value,
                                         size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetMemObjectInfo, "memobj = 0x%016" PRIxPTR ", param_name = %u, param_value_size =
-    // %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
-    // (uintptr_t)memobj, param_name, param_value_size, (uintptr_t)param_value,
-    // (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetMemObjectInfo,
+             "memobj = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)memobj, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetMemObjectInfo
 
@@ -269,10 +273,12 @@
                                     void *param_value,
                                     size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetImageInfo, "image = 0x%016" PRIxPTR ", param_name = %u, param_value_size = %u,
-    // param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "", (uintptr_t)image,
-    // param_name, param_value_size, (uintptr_t)param_value, (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetImageInfo,
+             "image = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)image, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetImageInfo
 
@@ -281,8 +287,7 @@
 
 cl_int CL_API_ENTRY CL_RetainSampler(cl_sampler sampler)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(RetainSampler, "sampler = 0x%016" PRIxPTR "", (uintptr_t)sampler);
+    CL_EVENT(RetainSampler, "sampler = 0x%016" PRIxPTR "", (uintptr_t)sampler);
 
     // TODO: RetainSampler
 
@@ -291,8 +296,7 @@
 
 cl_int CL_API_ENTRY CL_ReleaseSampler(cl_sampler sampler)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(ReleaseSampler, "sampler = 0x%016" PRIxPTR "", (uintptr_t)sampler);
+    CL_EVENT(ReleaseSampler, "sampler = 0x%016" PRIxPTR "", (uintptr_t)sampler);
 
     // TODO: ReleaseSampler
 
@@ -305,11 +309,12 @@
                                       void *param_value,
                                       size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetSamplerInfo, "sampler = 0x%016" PRIxPTR ", param_name = %u, param_value_size =
-    // %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
-    // (uintptr_t)sampler, param_name, param_value_size, (uintptr_t)param_value,
-    // (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetSamplerInfo,
+             "sampler = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)sampler, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetSamplerInfo
 
@@ -322,10 +327,11 @@
                                                    const size_t *lengths,
                                                    cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateProgramWithSource, "context = 0x%016" PRIxPTR ", count = %u, strings = 0x%016"
-    // PRIxPTR ", lengths = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context,
-    // count, (uintptr_t)strings, (uintptr_t)lengths, (uintptr_t)errcode_ret);
+    CL_EVENT(CreateProgramWithSource,
+             "context = 0x%016" PRIxPTR ", count = %u, strings = 0x%016" PRIxPTR
+             ", lengths = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)context, count, (uintptr_t)strings, (uintptr_t)lengths,
+             (uintptr_t)errcode_ret);
 
     // TODO: CreateProgramWithSource
 
@@ -340,12 +346,12 @@
                                                    cl_int *binary_status,
                                                    cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateProgramWithBinary, "context = 0x%016" PRIxPTR ", num_devices = %u, device_list
-    // = 0x%016" PRIxPTR ", lengths = 0x%016" PRIxPTR ", binaries = 0x%016" PRIxPTR ", binary_status
-    // = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context, num_devices,
-    // (uintptr_t)device_list, (uintptr_t)lengths, (uintptr_t)binaries, (uintptr_t)binary_status,
-    // (uintptr_t)errcode_ret);
+    CL_EVENT(CreateProgramWithBinary,
+             "context = 0x%016" PRIxPTR ", num_devices = %u, device_list = 0x%016" PRIxPTR
+             ", lengths = 0x%016" PRIxPTR ", binaries = 0x%016" PRIxPTR
+             ", binary_status = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)context, num_devices, (uintptr_t)device_list, (uintptr_t)lengths,
+             (uintptr_t)binaries, (uintptr_t)binary_status, (uintptr_t)errcode_ret);
 
     // TODO: CreateProgramWithBinary
 
@@ -354,8 +360,7 @@
 
 cl_int CL_API_ENTRY CL_RetainProgram(cl_program program)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(RetainProgram, "program = 0x%016" PRIxPTR "", (uintptr_t)program);
+    CL_EVENT(RetainProgram, "program = 0x%016" PRIxPTR "", (uintptr_t)program);
 
     // TODO: RetainProgram
 
@@ -364,8 +369,7 @@
 
 cl_int CL_API_ENTRY CL_ReleaseProgram(cl_program program)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(ReleaseProgram, "program = 0x%016" PRIxPTR "", (uintptr_t)program);
+    CL_EVENT(ReleaseProgram, "program = 0x%016" PRIxPTR "", (uintptr_t)program);
 
     // TODO: ReleaseProgram
 
@@ -380,11 +384,12 @@
                                                                   void *user_data),
                                     void *user_data)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(BuildProgram, "program = 0x%016" PRIxPTR ", num_devices = %u, device_list = 0x%016"
-    // PRIxPTR ", options = 0x%016" PRIxPTR ", user_data) = 0x%016" PRIxPTR ", user_data = 0x%016"
-    // PRIxPTR "", (uintptr_t)program, num_devices, (uintptr_t)device_list, (uintptr_t)options,
-    // (uintptr_t)user_data), (uintptr_t)user_data);
+    CL_EVENT(BuildProgram,
+             "program = 0x%016" PRIxPTR ", num_devices = %u, device_list = 0x%016" PRIxPTR
+             ", options = 0x%016" PRIxPTR ", pfn_notify = 0x%016" PRIxPTR
+             ", user_data = 0x%016" PRIxPTR "",
+             (uintptr_t)program, num_devices, (uintptr_t)device_list, (uintptr_t)options,
+             (uintptr_t)pfn_notify, (uintptr_t)user_data);
 
     // TODO: BuildProgram
 
@@ -397,11 +402,12 @@
                                       void *param_value,
                                       size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetProgramInfo, "program = 0x%016" PRIxPTR ", param_name = %u, param_value_size =
-    // %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
-    // (uintptr_t)program, param_name, param_value_size, (uintptr_t)param_value,
-    // (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetProgramInfo,
+             "program = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)program, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetProgramInfo
 
@@ -415,11 +421,12 @@
                                            void *param_value,
                                            size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetProgramBuildInfo, "program = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR ",
-    // param_name = %u, param_value_size = %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret
-    // = 0x%016" PRIxPTR "", (uintptr_t)program, (uintptr_t)device, param_name, param_value_size,
-    // (uintptr_t)param_value, (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetProgramBuildInfo,
+             "program = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)program, (uintptr_t)device, param_name, param_value_size,
+             (uintptr_t)param_value, (uintptr_t)param_value_size_ret);
 
     // TODO: GetProgramBuildInfo
 
@@ -430,10 +437,10 @@
                                        const char *kernel_name,
                                        cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateKernel, "program = 0x%016" PRIxPTR ", kernel_name = 0x%016" PRIxPTR ",
-    // errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)program, (uintptr_t)kernel_name,
-    // (uintptr_t)errcode_ret);
+    CL_EVENT(CreateKernel,
+             "program = 0x%016" PRIxPTR ", kernel_name = 0x%016" PRIxPTR
+             ", errcode_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)program, (uintptr_t)kernel_name, (uintptr_t)errcode_ret);
 
     // TODO: CreateKernel
 
@@ -445,10 +452,10 @@
                                               cl_kernel *kernels,
                                               cl_uint *num_kernels_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateKernelsInProgram, "program = 0x%016" PRIxPTR ", num_kernels = %u, kernels =
-    // 0x%016" PRIxPTR ", num_kernels_ret = 0x%016" PRIxPTR "", (uintptr_t)program, num_kernels,
-    // (uintptr_t)kernels, (uintptr_t)num_kernels_ret);
+    CL_EVENT(CreateKernelsInProgram,
+             "program = 0x%016" PRIxPTR ", num_kernels = %u, kernels = 0x%016" PRIxPTR
+             ", num_kernels_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)program, num_kernels, (uintptr_t)kernels, (uintptr_t)num_kernels_ret);
 
     // TODO: CreateKernelsInProgram
 
@@ -457,8 +464,7 @@
 
 cl_int CL_API_ENTRY CL_RetainKernel(cl_kernel kernel)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(RetainKernel, "kernel = 0x%016" PRIxPTR "", (uintptr_t)kernel);
+    CL_EVENT(RetainKernel, "kernel = 0x%016" PRIxPTR "", (uintptr_t)kernel);
 
     // TODO: RetainKernel
 
@@ -467,8 +473,7 @@
 
 cl_int CL_API_ENTRY CL_ReleaseKernel(cl_kernel kernel)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(ReleaseKernel, "kernel = 0x%016" PRIxPTR "", (uintptr_t)kernel);
+    CL_EVENT(ReleaseKernel, "kernel = 0x%016" PRIxPTR "", (uintptr_t)kernel);
 
     // TODO: ReleaseKernel
 
@@ -480,9 +485,10 @@
                                     size_t arg_size,
                                     const void *arg_value)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(SetKernelArg, "kernel = 0x%016" PRIxPTR ", arg_index = %u, arg_size = %u, arg_value
-    // = 0x%016" PRIxPTR "", (uintptr_t)kernel, arg_index, arg_size, (uintptr_t)arg_value);
+    CL_EVENT(SetKernelArg,
+             "kernel = 0x%016" PRIxPTR
+             ", arg_index = %u, arg_size = %zu, arg_value = 0x%016" PRIxPTR "",
+             (uintptr_t)kernel, arg_index, arg_size, (uintptr_t)arg_value);
 
     // TODO: SetKernelArg
 
@@ -495,11 +501,12 @@
                                      void *param_value,
                                      size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetKernelInfo, "kernel = 0x%016" PRIxPTR ", param_name = %u, param_value_size = %u,
-    // param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
-    // (uintptr_t)kernel, param_name, param_value_size, (uintptr_t)param_value,
-    // (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetKernelInfo,
+             "kernel = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)kernel, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetKernelInfo
 
@@ -513,11 +520,12 @@
                                               void *param_value,
                                               size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetKernelWorkGroupInfo, "kernel = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR ",
-    // param_name = %u, param_value_size = %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret
-    // = 0x%016" PRIxPTR "", (uintptr_t)kernel, (uintptr_t)device, param_name, param_value_size,
-    // (uintptr_t)param_value, (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetKernelWorkGroupInfo,
+             "kernel = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)kernel, (uintptr_t)device, param_name, param_value_size,
+             (uintptr_t)param_value, (uintptr_t)param_value_size_ret);
 
     // TODO: GetKernelWorkGroupInfo
 
@@ -526,9 +534,8 @@
 
 cl_int CL_API_ENTRY CL_WaitForEvents(cl_uint num_events, const cl_event *event_list)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(WaitForEvents, "num_events = %u, event_list = 0x%016" PRIxPTR "", num_events,
-    // (uintptr_t)event_list);
+    CL_EVENT(WaitForEvents, "num_events = %u, event_list = 0x%016" PRIxPTR "", num_events,
+             (uintptr_t)event_list);
 
     // TODO: WaitForEvents
 
@@ -541,10 +548,12 @@
                                     void *param_value,
                                     size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetEventInfo, "event = 0x%016" PRIxPTR ", param_name = %u, param_value_size = %u,
-    // param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "", (uintptr_t)event,
-    // param_name, param_value_size, (uintptr_t)param_value, (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetEventInfo,
+             "event = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)event, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetEventInfo
 
@@ -553,8 +562,7 @@
 
 cl_int CL_API_ENTRY CL_RetainEvent(cl_event event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(RetainEvent, "event = 0x%016" PRIxPTR "", (uintptr_t)event);
+    CL_EVENT(RetainEvent, "event = 0x%016" PRIxPTR "", (uintptr_t)event);
 
     // TODO: RetainEvent
 
@@ -563,8 +571,7 @@
 
 cl_int CL_API_ENTRY CL_ReleaseEvent(cl_event event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(ReleaseEvent, "event = 0x%016" PRIxPTR "", (uintptr_t)event);
+    CL_EVENT(ReleaseEvent, "event = 0x%016" PRIxPTR "", (uintptr_t)event);
 
     // TODO: ReleaseEvent
 
@@ -577,11 +584,12 @@
                                              void *param_value,
                                              size_t *param_value_size_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetEventProfilingInfo, "event = 0x%016" PRIxPTR ", param_name = %u, param_value_size
-    // = %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
-    // (uintptr_t)event, param_name, param_value_size, (uintptr_t)param_value,
-    // (uintptr_t)param_value_size_ret);
+    CL_EVENT(GetEventProfilingInfo,
+             "event = 0x%016" PRIxPTR
+             ", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR
+             ", param_value_size_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)event, param_name, param_value_size, (uintptr_t)param_value,
+             (uintptr_t)param_value_size_ret);
 
     // TODO: GetEventProfilingInfo
 
@@ -590,8 +598,7 @@
 
 cl_int CL_API_ENTRY CL_Flush(cl_command_queue command_queue)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(Flush, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);
+    CL_EVENT(Flush, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);
 
     // TODO: Flush
 
@@ -600,8 +607,7 @@
 
 cl_int CL_API_ENTRY CL_Finish(cl_command_queue command_queue)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(Finish, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);
+    CL_EVENT(Finish, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);
 
     // TODO: Finish
 
@@ -618,12 +624,13 @@
                                          const cl_event *event_wait_list,
                                          cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueReadBuffer, "command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR ",
-    // blocking_read = %u, offset = %u, size = %u, ptr = 0x%016" PRIxPTR ", num_events_in_wait_list
-    // = %u, event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",
-    // (uintptr_t)command_queue, (uintptr_t)buffer, blocking_read, offset, size, (uintptr_t)ptr,
-    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
+    CL_EVENT(EnqueueReadBuffer,
+             "command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR
+             ", blocking_read = %u, offset = %zu, size = %zu, ptr = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)buffer, blocking_read, offset, size,
+             (uintptr_t)ptr, num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueReadBuffer
 
@@ -640,12 +647,13 @@
                                           const cl_event *event_wait_list,
                                           cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueWriteBuffer, "command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR ",
-    // blocking_write = %u, offset = %u, size = %u, ptr = 0x%016" PRIxPTR ", num_events_in_wait_list
-    // = %u, event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",
-    // (uintptr_t)command_queue, (uintptr_t)buffer, blocking_write, offset, size, (uintptr_t)ptr,
-    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
+    CL_EVENT(EnqueueWriteBuffer,
+             "command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR
+             ", blocking_write = %u, offset = %zu, size = %zu, ptr = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)buffer, blocking_write, offset, size,
+             (uintptr_t)ptr, num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueWriteBuffer
 
@@ -662,12 +670,14 @@
                                          const cl_event *event_wait_list,
                                          cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueCopyBuffer, "command_queue = 0x%016" PRIxPTR ", src_buffer = 0x%016" PRIxPTR
-    // ", dst_buffer = 0x%016" PRIxPTR ", src_offset = %u, dst_offset = %u, size = %u,
-    // num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR
-    // "", (uintptr_t)command_queue, (uintptr_t)src_buffer, (uintptr_t)dst_buffer, src_offset,
-    // dst_offset, size, num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
+    CL_EVENT(EnqueueCopyBuffer,
+             "command_queue = 0x%016" PRIxPTR ", src_buffer = 0x%016" PRIxPTR
+             ", dst_buffer = 0x%016" PRIxPTR
+             ", src_offset = %zu, dst_offset = %zu, size = %zu, num_events_in_wait_list = %u, "
+             "event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)src_buffer, (uintptr_t)dst_buffer, src_offset,
+             dst_offset, size, num_events_in_wait_list, (uintptr_t)event_wait_list,
+             (uintptr_t)event);
 
     // TODO: EnqueueCopyBuffer
 
@@ -686,13 +696,15 @@
                                         const cl_event *event_wait_list,
                                         cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueReadImage, "command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR ",
-    // blocking_read = %u, origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR ", row_pitch = %u,
-    // slice_pitch = %u, ptr = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list =
-    // 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)image,
-    // blocking_read, (uintptr_t)origin, (uintptr_t)region, row_pitch, slice_pitch, (uintptr_t)ptr,
-    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
+    CL_EVENT(EnqueueReadImage,
+             "command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR
+             ", blocking_read = %u, origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR
+             ", row_pitch = %zu, slice_pitch = %zu, ptr = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)image, blocking_read, (uintptr_t)origin,
+             (uintptr_t)region, row_pitch, slice_pitch, (uintptr_t)ptr, num_events_in_wait_list,
+             (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueReadImage
 
@@ -711,14 +723,15 @@
                                          const cl_event *event_wait_list,
                                          cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueWriteImage, "command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR ",
-    // blocking_write = %u, origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR ", input_row_pitch
-    // = %u, input_slice_pitch = %u, ptr = 0x%016" PRIxPTR ", num_events_in_wait_list = %u,
-    // event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue,
-    // (uintptr_t)image, blocking_write, (uintptr_t)origin, (uintptr_t)region, input_row_pitch,
-    // input_slice_pitch, (uintptr_t)ptr, num_events_in_wait_list, (uintptr_t)event_wait_list,
-    // (uintptr_t)event);
+    CL_EVENT(EnqueueWriteImage,
+             "command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR
+             ", blocking_write = %u, origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR
+             ", input_row_pitch = %zu, input_slice_pitch = %zu, ptr = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)image, blocking_write, (uintptr_t)origin,
+             (uintptr_t)region, input_row_pitch, input_slice_pitch, (uintptr_t)ptr,
+             num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueWriteImage
 
@@ -735,13 +748,15 @@
                                         const cl_event *event_wait_list,
                                         cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueCopyImage, "command_queue = 0x%016" PRIxPTR ", src_image = 0x%016" PRIxPTR ",
-    // dst_image = 0x%016" PRIxPTR ", src_origin = 0x%016" PRIxPTR ", dst_origin = 0x%016" PRIxPTR
-    // ", region = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list = 0x%016"
-    // PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)src_image,
-    // (uintptr_t)dst_image, (uintptr_t)src_origin, (uintptr_t)dst_origin, (uintptr_t)region,
-    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
+    CL_EVENT(EnqueueCopyImage,
+             "command_queue = 0x%016" PRIxPTR ", src_image = 0x%016" PRIxPTR
+             ", dst_image = 0x%016" PRIxPTR ", src_origin = 0x%016" PRIxPTR
+             ", dst_origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)src_image, (uintptr_t)dst_image,
+             (uintptr_t)src_origin, (uintptr_t)dst_origin, (uintptr_t)region,
+             num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueCopyImage
 
@@ -758,13 +773,15 @@
                                                 const cl_event *event_wait_list,
                                                 cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueCopyImageToBuffer, "command_queue = 0x%016" PRIxPTR ", src_image = 0x%016"
-    // PRIxPTR ", dst_buffer = 0x%016" PRIxPTR ", src_origin = 0x%016" PRIxPTR ", region = 0x%016"
-    // PRIxPTR ", dst_offset = %u, num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
-    // ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)src_image,
-    // (uintptr_t)dst_buffer, (uintptr_t)src_origin, (uintptr_t)region, dst_offset,
-    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
+    CL_EVENT(EnqueueCopyImageToBuffer,
+             "command_queue = 0x%016" PRIxPTR ", src_image = 0x%016" PRIxPTR
+             ", dst_buffer = 0x%016" PRIxPTR ", src_origin = 0x%016" PRIxPTR
+             ", region = 0x%016" PRIxPTR
+             ", dst_offset = %zu, num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)src_image, (uintptr_t)dst_buffer,
+             (uintptr_t)src_origin, (uintptr_t)region, dst_offset, num_events_in_wait_list,
+             (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueCopyImageToBuffer
 
@@ -781,13 +798,15 @@
                                                 const cl_event *event_wait_list,
                                                 cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueCopyBufferToImage, "command_queue = 0x%016" PRIxPTR ", src_buffer = 0x%016"
-    // PRIxPTR ", dst_image = 0x%016" PRIxPTR ", src_offset = %u, dst_origin = 0x%016" PRIxPTR ",
-    // region = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
-    // ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)src_buffer,
-    // (uintptr_t)dst_image, src_offset, (uintptr_t)dst_origin, (uintptr_t)region,
-    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
+    CL_EVENT(EnqueueCopyBufferToImage,
+             "command_queue = 0x%016" PRIxPTR ", src_buffer = 0x%016" PRIxPTR
+             ", dst_image = 0x%016" PRIxPTR ", src_offset = %zu, dst_origin = 0x%016" PRIxPTR
+             ", region = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)src_buffer, (uintptr_t)dst_image, src_offset,
+             (uintptr_t)dst_origin, (uintptr_t)region, num_events_in_wait_list,
+             (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueCopyBufferToImage
 
@@ -805,13 +824,14 @@
                                        cl_event *event,
                                        cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueMapBuffer, "command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR ",
-    // blocking_map = %u, map_flags = %u, offset = %u, size = %u, num_events_in_wait_list = %u,
-    // event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR
-    // "", (uintptr_t)command_queue, (uintptr_t)buffer, blocking_map, map_flags, offset, size,
-    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event,
-    // (uintptr_t)errcode_ret);
+    CL_EVENT(EnqueueMapBuffer,
+             "command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR
+             ", blocking_map = %u, map_flags = %lu, offset = %zu, size = %zu, "
+             "num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)buffer, blocking_map, map_flags, offset, size,
+             num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event,
+             (uintptr_t)errcode_ret);
 
     // TODO: EnqueueMapBuffer
 
@@ -831,15 +851,17 @@
                                       cl_event *event,
                                       cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueMapImage, "command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR ",
-    // blocking_map = %u, map_flags = %u, origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR ",
-    // image_row_pitch = 0x%016" PRIxPTR ", image_slice_pitch = 0x%016" PRIxPTR ",
-    // num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR ",
-    // errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)image, blocking_map,
-    // map_flags, (uintptr_t)origin, (uintptr_t)region, (uintptr_t)image_row_pitch,
-    // (uintptr_t)image_slice_pitch, num_events_in_wait_list, (uintptr_t)event_wait_list,
-    // (uintptr_t)event, (uintptr_t)errcode_ret);
+    CL_EVENT(EnqueueMapImage,
+             "command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR
+             ", blocking_map = %u, map_flags = %lu, origin = 0x%016" PRIxPTR
+             ", region = 0x%016" PRIxPTR ", image_row_pitch = 0x%016" PRIxPTR
+             ", image_slice_pitch = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)image, blocking_map, map_flags, (uintptr_t)origin,
+             (uintptr_t)region, (uintptr_t)image_row_pitch, (uintptr_t)image_slice_pitch,
+             num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event,
+             (uintptr_t)errcode_ret);
 
     // TODO: EnqueueMapImage
 
@@ -853,12 +875,13 @@
                                              const cl_event *event_wait_list,
                                              cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueUnmapMemObject, "command_queue = 0x%016" PRIxPTR ", memobj = 0x%016" PRIxPTR
-    // ", mapped_ptr = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list = 0x%016"
-    // PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)memobj,
-    // (uintptr_t)mapped_ptr, num_events_in_wait_list, (uintptr_t)event_wait_list,
-    // (uintptr_t)event);
+    CL_EVENT(EnqueueUnmapMemObject,
+             "command_queue = 0x%016" PRIxPTR ", memobj = 0x%016" PRIxPTR
+             ", mapped_ptr = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)memobj, (uintptr_t)mapped_ptr,
+             num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueUnmapMemObject
 
@@ -875,14 +898,15 @@
                                             const cl_event *event_wait_list,
                                             cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueNDRangeKernel, "command_queue = 0x%016" PRIxPTR ", kernel = 0x%016" PRIxPTR
-    // ", work_dim = %u, global_work_offset = 0x%016" PRIxPTR ", global_work_size = 0x%016" PRIxPTR
-    // ", local_work_size = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list =
-    // 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)kernel,
-    // work_dim, (uintptr_t)global_work_offset, (uintptr_t)global_work_size,
-    // (uintptr_t)local_work_size, num_events_in_wait_list, (uintptr_t)event_wait_list,
-    // (uintptr_t)event);
+    CL_EVENT(EnqueueNDRangeKernel,
+             "command_queue = 0x%016" PRIxPTR ", kernel = 0x%016" PRIxPTR
+             ", work_dim = %u, global_work_offset = 0x%016" PRIxPTR
+             ", global_work_size = 0x%016" PRIxPTR ", local_work_size = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)kernel, work_dim, (uintptr_t)global_work_offset,
+             (uintptr_t)global_work_size, (uintptr_t)local_work_size, num_events_in_wait_list,
+             (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueNDRangeKernel
 
@@ -900,13 +924,16 @@
                                            const cl_event *event_wait_list,
                                            cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueNativeKernel, "command_queue = 0x%016" PRIxPTR ", ) = 0x%016" PRIxPTR ", args
-    // = 0x%016" PRIxPTR ", cb_args = %u, num_mem_objects = %u, mem_list = 0x%016" PRIxPTR ",
-    // args_mem_loc = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list = 0x%016"
-    // PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)),
-    // (uintptr_t)args, cb_args, num_mem_objects, (uintptr_t)mem_list, (uintptr_t)args_mem_loc,
-    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);
+    CL_EVENT(EnqueueNativeKernel,
+             "command_queue = 0x%016" PRIxPTR ", user_func = 0x%016" PRIxPTR
+             ", args = 0x%016" PRIxPTR
+             ", cb_args = %zu, num_mem_objects = %u, mem_list = 0x%016" PRIxPTR
+             ", args_mem_loc = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)user_func, (uintptr_t)args, cb_args,
+             num_mem_objects, (uintptr_t)mem_list, (uintptr_t)args_mem_loc, num_events_in_wait_list,
+             (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueNativeKernel
 
@@ -918,10 +945,10 @@
                                                cl_bool enable,
                                                cl_command_queue_properties *old_properties)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(SetCommandQueueProperty, "command_queue = 0x%016" PRIxPTR ", properties = %u, enable
-    // = %u, old_properties = 0x%016" PRIxPTR "", (uintptr_t)command_queue, properties, enable,
-    // (uintptr_t)old_properties);
+    CL_EVENT(SetCommandQueueProperty,
+             "command_queue = 0x%016" PRIxPTR
+             ", properties = %lu, enable = %u, old_properties = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, properties, enable, (uintptr_t)old_properties);
 
     // TODO: SetCommandQueueProperty
 
@@ -937,12 +964,13 @@
                                      void *host_ptr,
                                      cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateImage2D, "context = 0x%016" PRIxPTR ", flags = %u, image_format = 0x%016"
-    // PRIxPTR ", image_width = %u, image_height = %u, image_row_pitch = %u, host_ptr = 0x%016"
-    // PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context, flags,
-    // (uintptr_t)image_format, image_width, image_height, image_row_pitch, (uintptr_t)host_ptr,
-    // (uintptr_t)errcode_ret);
+    CL_EVENT(
+        CreateImage2D,
+        "context = 0x%016" PRIxPTR ", flags = %lu, image_format = 0x%016" PRIxPTR
+        ", image_width = %zu, image_height = %zu, image_row_pitch = %zu, host_ptr = 0x%016" PRIxPTR
+        ", errcode_ret = 0x%016" PRIxPTR "",
+        (uintptr_t)context, flags, (uintptr_t)image_format, image_width, image_height,
+        image_row_pitch, (uintptr_t)host_ptr, (uintptr_t)errcode_ret);
 
     // TODO: CreateImage2D
 
@@ -960,12 +988,13 @@
                                      void *host_ptr,
                                      cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateImage3D, "context = 0x%016" PRIxPTR ", flags = %u, image_format = 0x%016"
-    // PRIxPTR ", image_width = %u, image_height = %u, image_depth = %u, image_row_pitch = %u,
-    // image_slice_pitch = %u, host_ptr = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",
-    // (uintptr_t)context, flags, (uintptr_t)image_format, image_width, image_height, image_depth,
-    // image_row_pitch, image_slice_pitch, (uintptr_t)host_ptr, (uintptr_t)errcode_ret);
+    CL_EVENT(
+        CreateImage3D,
+        "context = 0x%016" PRIxPTR ", flags = %lu, image_format = 0x%016" PRIxPTR
+        ", image_width = %zu, image_height = %zu, image_depth = %zu, image_row_pitch = %zu, "
+        "image_slice_pitch = %zu, host_ptr = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",
+        (uintptr_t)context, flags, (uintptr_t)image_format, image_width, image_height, image_depth,
+        image_row_pitch, image_slice_pitch, (uintptr_t)host_ptr, (uintptr_t)errcode_ret);
 
     // TODO: CreateImage3D
 
@@ -974,9 +1003,8 @@
 
 cl_int CL_API_ENTRY CL_EnqueueMarker(cl_command_queue command_queue, cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueMarker, "command_queue = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",
-    // (uintptr_t)command_queue, (uintptr_t)event);
+    CL_EVENT(EnqueueMarker, "command_queue = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)event);
 
     // TODO: EnqueueMarker
 
@@ -987,10 +1015,9 @@
                                             cl_uint num_events,
                                             const cl_event *event_list)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueWaitForEvents, "command_queue = 0x%016" PRIxPTR ", num_events = %u,
-    // event_list = 0x%016" PRIxPTR "", (uintptr_t)command_queue, num_events,
-    // (uintptr_t)event_list);
+    CL_EVENT(EnqueueWaitForEvents,
+             "command_queue = 0x%016" PRIxPTR ", num_events = %u, event_list = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, num_events, (uintptr_t)event_list);
 
     // TODO: EnqueueWaitForEvents
 
@@ -999,8 +1026,7 @@
 
 cl_int CL_API_ENTRY CL_EnqueueBarrier(cl_command_queue command_queue)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueBarrier, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);
+    CL_EVENT(EnqueueBarrier, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);
 
     // TODO: EnqueueBarrier
 
@@ -1009,8 +1035,7 @@
 
 cl_int CL_API_ENTRY CL_UnloadCompiler()
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(UnloadCompiler, "");
+    CL_EVENT(UnloadCompiler, "");
 
     // TODO: UnloadCompiler
 
@@ -1019,8 +1044,7 @@
 
 void *CL_API_ENTRY CL_GetExtensionFunctionAddress(const char *func_name)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(GetExtensionFunctionAddress, "func_name = 0x%016" PRIxPTR "", (uintptr_t)func_name);
+    CL_EVENT(GetExtensionFunctionAddress, "func_name = 0x%016" PRIxPTR "", (uintptr_t)func_name);
 
     // TODO: GetExtensionFunctionAddress
 
@@ -1032,10 +1056,10 @@
                                                     cl_command_queue_properties properties,
                                                     cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateCommandQueue, "context = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR ",
-    // properties = %u, errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context, (uintptr_t)device,
-    // properties, (uintptr_t)errcode_ret);
+    CL_EVENT(CreateCommandQueue,
+             "context = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR
+             ", properties = %lu, errcode_ret = 0x%016" PRIxPTR "",
+             (uintptr_t)context, (uintptr_t)device, properties, (uintptr_t)errcode_ret);
 
     // TODO: CreateCommandQueue
 
@@ -1048,10 +1072,12 @@
                                          cl_filter_mode filter_mode,
                                          cl_int *errcode_ret)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(CreateSampler, "context = 0x%016" PRIxPTR ", normalized_coords = %u, addressing_mode
-    // = %u, filter_mode = %u, errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context,
-    // normalized_coords, addressing_mode, filter_mode, (uintptr_t)errcode_ret);
+    CL_EVENT(CreateSampler,
+             "context = 0x%016" PRIxPTR
+             ", normalized_coords = %u, addressing_mode = %u, filter_mode = %u, errcode_ret = "
+             "0x%016" PRIxPTR "",
+             (uintptr_t)context, normalized_coords, addressing_mode, filter_mode,
+             (uintptr_t)errcode_ret);
 
     // TODO: CreateSampler
 
@@ -1064,11 +1090,12 @@
                                    const cl_event *event_wait_list,
                                    cl_event *event)
 {
-    // TODO: CL_EVENT
-    // CL_EVENT(EnqueueTask, "command_queue = 0x%016" PRIxPTR ", kernel = 0x%016" PRIxPTR ",
-    // num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR
-    // "", (uintptr_t)command_queue, (uintptr_t)kernel, num_events_in_wait_list,
-    // (uintptr_t)event_wait_list, (uintptr_t)event);
+    CL_EVENT(EnqueueTask,
+             "command_queue = 0x%016" PRIxPTR ", kernel = 0x%016" PRIxPTR
+             ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
+             ", event = 0x%016" PRIxPTR "",
+             (uintptr_t)command_queue, (uintptr_t)kernel, num_events_in_wait_list,
+             (uintptr_t)event_wait_list, (uintptr_t)event);
 
     // TODO: EnqueueTask
 
diff --git a/src/libOpenCL/entry_points_cl_utils.h b/src/libOpenCL/entry_points_cl_utils.h
new file mode 100644
index 0000000..ca13917
--- /dev/null
+++ b/src/libOpenCL/entry_points_cl_utils.h
@@ -0,0 +1,23 @@
+//
+// Copyright 2021 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// entry_points_cl_utils.h:
+//   These helpers are used in CL entry point routines.
+
+#ifndef LIBOPENCL_ENTRY_POINTS_CL_UTILS_H_
+#define LIBOPENCL_ENTRY_POINTS_CL_UTILS_H_
+
+#include <cinttypes>
+#include <cstdio>
+
+#if defined(ANGLE_TRACE_ENABLED)
+#    define CL_EVENT(entryPoint, ...)                    \
+        std::printf("CL " #entryPoint ": " __VA_ARGS__); \
+        std::printf("\n")
+#else
+#    define CL_EVENT(entryPoint, ...) (void(0))
+#endif
+
+#endif  // LIBOPENCL_ENTRY_POINTS_CL_UTILS_H_