// GENERATED FILE - DO NOT EDIT.
// Generated by gen_proc_table.py using data from cl.xml.
//
// 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.
//
// proc_table:
//   Mapping from a string entry point name to function address.
//

#include "libGLESv2/proc_table_cl.h"

#include "libGLESv2/entry_points_cl_autogen.h"

#include "anglebase/no_destructor.h"

// Using fully qualified entry point identifiers to make sure that missing entry points would not
// pick up the global declarations of OpenCL

#define P(FUNC) reinterpret_cast<void *>(FUNC)

namespace cl
{

const ProcTable &GetProcTable()
{
    static angle::base::NoDestructor<ProcTable> sProcTable(
        {{"clGetPlatformIDs", P(::cl::clGetPlatformIDs)},
         {"clGetPlatformInfo", P(::cl::clGetPlatformInfo)},
         {"clGetDeviceIDs", P(::cl::clGetDeviceIDs)},
         {"clGetDeviceInfo", P(::cl::clGetDeviceInfo)},
         {"clCreateContext", P(::cl::clCreateContext)},
         {"clCreateContextFromType", P(::cl::clCreateContextFromType)},
         {"clRetainContext", P(::cl::clRetainContext)},
         {"clReleaseContext", P(::cl::clReleaseContext)},
         {"clGetContextInfo", P(::cl::clGetContextInfo)},
         {"clRetainCommandQueue", P(::cl::clRetainCommandQueue)},
         {"clReleaseCommandQueue", P(::cl::clReleaseCommandQueue)},
         {"clGetCommandQueueInfo", P(::cl::clGetCommandQueueInfo)},
         {"clCreateBuffer", P(::cl::clCreateBuffer)},
         {"clRetainMemObject", P(::cl::clRetainMemObject)},
         {"clReleaseMemObject", P(::cl::clReleaseMemObject)},
         {"clGetSupportedImageFormats", P(::cl::clGetSupportedImageFormats)},
         {"clGetMemObjectInfo", P(::cl::clGetMemObjectInfo)},
         {"clGetImageInfo", P(::cl::clGetImageInfo)},
         {"clRetainSampler", P(::cl::clRetainSampler)},
         {"clReleaseSampler", P(::cl::clReleaseSampler)},
         {"clGetSamplerInfo", P(::cl::clGetSamplerInfo)},
         {"clCreateProgramWithSource", P(::cl::clCreateProgramWithSource)},
         {"clCreateProgramWithBinary", P(::cl::clCreateProgramWithBinary)},
         {"clRetainProgram", P(::cl::clRetainProgram)},
         {"clReleaseProgram", P(::cl::clReleaseProgram)},
         {"clBuildProgram", P(::cl::clBuildProgram)},
         {"clGetProgramInfo", P(::cl::clGetProgramInfo)},
         {"clGetProgramBuildInfo", P(::cl::clGetProgramBuildInfo)},
         {"clCreateKernel", P(::cl::clCreateKernel)},
         {"clCreateKernelsInProgram", P(::cl::clCreateKernelsInProgram)},
         {"clRetainKernel", P(::cl::clRetainKernel)},
         {"clReleaseKernel", P(::cl::clReleaseKernel)},
         {"clSetKernelArg", P(::cl::clSetKernelArg)},
         {"clGetKernelInfo", P(::cl::clGetKernelInfo)},
         {"clGetKernelWorkGroupInfo", P(::cl::clGetKernelWorkGroupInfo)},
         {"clWaitForEvents", P(::cl::clWaitForEvents)},
         {"clGetEventInfo", P(::cl::clGetEventInfo)},
         {"clRetainEvent", P(::cl::clRetainEvent)},
         {"clReleaseEvent", P(::cl::clReleaseEvent)},
         {"clGetEventProfilingInfo", P(::cl::clGetEventProfilingInfo)},
         {"clFlush", P(::cl::clFlush)},
         {"clFinish", P(::cl::clFinish)},
         {"clEnqueueReadBuffer", P(::cl::clEnqueueReadBuffer)},
         {"clEnqueueWriteBuffer", P(::cl::clEnqueueWriteBuffer)},
         {"clEnqueueCopyBuffer", P(::cl::clEnqueueCopyBuffer)},
         {"clEnqueueReadImage", P(::cl::clEnqueueReadImage)},
         {"clEnqueueWriteImage", P(::cl::clEnqueueWriteImage)},
         {"clEnqueueCopyImage", P(::cl::clEnqueueCopyImage)},
         {"clEnqueueCopyImageToBuffer", P(::cl::clEnqueueCopyImageToBuffer)},
         {"clEnqueueCopyBufferToImage", P(::cl::clEnqueueCopyBufferToImage)},
         {"clEnqueueMapBuffer", P(::cl::clEnqueueMapBuffer)},
         {"clEnqueueMapImage", P(::cl::clEnqueueMapImage)},
         {"clEnqueueUnmapMemObject", P(::cl::clEnqueueUnmapMemObject)},
         {"clEnqueueNDRangeKernel", P(::cl::clEnqueueNDRangeKernel)},
         {"clEnqueueNativeKernel", P(::cl::clEnqueueNativeKernel)},
         {"clSetCommandQueueProperty", P(::cl::clSetCommandQueueProperty)},
         {"clCreateImage2D", P(::cl::clCreateImage2D)},
         {"clCreateImage3D", P(::cl::clCreateImage3D)},
         {"clEnqueueMarker", P(::cl::clEnqueueMarker)},
         {"clEnqueueWaitForEvents", P(::cl::clEnqueueWaitForEvents)},
         {"clEnqueueBarrier", P(::cl::clEnqueueBarrier)},
         {"clUnloadCompiler", P(::cl::clUnloadCompiler)},
         {"clGetExtensionFunctionAddress", P(::cl::clGetExtensionFunctionAddress)},
         {"clCreateCommandQueue", P(::cl::clCreateCommandQueue)},
         {"clCreateSampler", P(::cl::clCreateSampler)},
         {"clEnqueueTask", P(::cl::clEnqueueTask)},
         {"clCreateSubBuffer", P(::cl::clCreateSubBuffer)},
         {"clSetMemObjectDestructorCallback", P(::cl::clSetMemObjectDestructorCallback)},
         {"clCreateUserEvent", P(::cl::clCreateUserEvent)},
         {"clSetUserEventStatus", P(::cl::clSetUserEventStatus)},
         {"clSetEventCallback", P(::cl::clSetEventCallback)},
         {"clEnqueueReadBufferRect", P(::cl::clEnqueueReadBufferRect)},
         {"clEnqueueWriteBufferRect", P(::cl::clEnqueueWriteBufferRect)},
         {"clEnqueueCopyBufferRect", P(::cl::clEnqueueCopyBufferRect)},
         {"clCreateSubDevices", P(::cl::clCreateSubDevices)},
         {"clRetainDevice", P(::cl::clRetainDevice)},
         {"clReleaseDevice", P(::cl::clReleaseDevice)},
         {"clCreateImage", P(::cl::clCreateImage)},
         {"clCreateProgramWithBuiltInKernels", P(::cl::clCreateProgramWithBuiltInKernels)},
         {"clCompileProgram", P(::cl::clCompileProgram)},
         {"clLinkProgram", P(::cl::clLinkProgram)},
         {"clUnloadPlatformCompiler", P(::cl::clUnloadPlatformCompiler)},
         {"clGetKernelArgInfo", P(::cl::clGetKernelArgInfo)},
         {"clEnqueueFillBuffer", P(::cl::clEnqueueFillBuffer)},
         {"clEnqueueFillImage", P(::cl::clEnqueueFillImage)},
         {"clEnqueueMigrateMemObjects", P(::cl::clEnqueueMigrateMemObjects)},
         {"clEnqueueMarkerWithWaitList", P(::cl::clEnqueueMarkerWithWaitList)},
         {"clEnqueueBarrierWithWaitList", P(::cl::clEnqueueBarrierWithWaitList)},
         {"clGetExtensionFunctionAddressForPlatform",
          P(::cl::clGetExtensionFunctionAddressForPlatform)},
         {"clCreateCommandQueueWithProperties", P(::cl::clCreateCommandQueueWithProperties)},
         {"clCreatePipe", P(::cl::clCreatePipe)},
         {"clGetPipeInfo", P(::cl::clGetPipeInfo)},
         {"clSVMAlloc", P(::cl::clSVMAlloc)},
         {"clSVMFree", P(::cl::clSVMFree)},
         {"clCreateSamplerWithProperties", P(::cl::clCreateSamplerWithProperties)},
         {"clSetKernelArgSVMPointer", P(::cl::clSetKernelArgSVMPointer)},
         {"clSetKernelExecInfo", P(::cl::clSetKernelExecInfo)},
         {"clEnqueueSVMFree", P(::cl::clEnqueueSVMFree)},
         {"clEnqueueSVMMemcpy", P(::cl::clEnqueueSVMMemcpy)},
         {"clEnqueueSVMMemFill", P(::cl::clEnqueueSVMMemFill)},
         {"clEnqueueSVMMap", P(::cl::clEnqueueSVMMap)},
         {"clEnqueueSVMUnmap", P(::cl::clEnqueueSVMUnmap)},
         {"clSetDefaultDeviceCommandQueue", P(::cl::clSetDefaultDeviceCommandQueue)},
         {"clGetDeviceAndHostTimer", P(::cl::clGetDeviceAndHostTimer)},
         {"clGetHostTimer", P(::cl::clGetHostTimer)},
         {"clCreateProgramWithIL", P(::cl::clCreateProgramWithIL)},
         {"clCloneKernel", P(::cl::clCloneKernel)},
         {"clGetKernelSubGroupInfo", P(::cl::clGetKernelSubGroupInfo)},
         {"clEnqueueSVMMigrateMem", P(::cl::clEnqueueSVMMigrateMem)},
         {"clSetProgramSpecializationConstant", P(::cl::clSetProgramSpecializationConstant)},
         {"clSetProgramReleaseCallback", P(::cl::clSetProgramReleaseCallback)},
         {"clSetContextDestructorCallback", P(::cl::clSetContextDestructorCallback)},
         {"clCreateBufferWithProperties", P(::cl::clCreateBufferWithProperties)},
         {"clCreateImageWithProperties", P(::cl::clCreateImageWithProperties)},
         {"clImportMemoryARM", P(::cl::clImportMemoryARM)},
         {"clEnqueueAcquireExternalMemObjectsKHR", P(::cl::clEnqueueAcquireExternalMemObjectsKHR)},
         {"clEnqueueReleaseExternalMemObjectsKHR", P(::cl::clEnqueueReleaseExternalMemObjectsKHR)},
         {"clIcdGetFunctionAddressForPlatformKHR", P(::cl::clIcdGetFunctionAddressForPlatformKHR)},
         {"clIcdGetPlatformIDsKHR", P(::cl::clIcdGetPlatformIDsKHR)},
         {"clIcdSetPlatformDispatchDataKHR", P(::cl::clIcdSetPlatformDispatchDataKHR)},
         {"clGetKernelSubGroupInfoKHR", P(::cl::clGetKernelSubGroupInfoKHR)}});
    return *sProcTable;
}

}  // namespace cl
