Commit 73744904 authored by Andrey Pavlenko's avatar Andrey Pavlenko Committed by OpenCV Buildbot

Merge pull request #1542 from alalek:cl_runtime

parents b396916c 12eb340a
...@@ -824,7 +824,14 @@ endif() ...@@ -824,7 +824,14 @@ endif()
if(HAVE_OPENCL) if(HAVE_OPENCL)
status("") status("")
status(" OpenCL") status(" OpenCL:")
set(__opencl_ver "invalid")
if(HAVE_OPENCL12)
set(__opencl_ver "1.2")
elseif(HAVE_OPENCL11)
set(__opencl_ver "1.1")
endif()
status(" Version:" ${__opencl_ver})
if(OPENCL_INCLUDE_DIR) if(OPENCL_INCLUDE_DIR)
status(" Include path:" ${OPENCL_INCLUDE_DIRS}) status(" Include path:" ${OPENCL_INCLUDE_DIRS})
endif() endif()
......
...@@ -6,7 +6,7 @@ if(APPLE) ...@@ -6,7 +6,7 @@ if(APPLE)
else(APPLE) else(APPLE)
#find_package(OpenCL QUIET) #find_package(OpenCL QUIET)
if (NOT OPENCL_FOUND) if(NOT OPENCL_FOUND)
find_path(OPENCL_ROOT_DIR find_path(OPENCL_ROOT_DIR
NAMES OpenCL/cl.h CL/cl.h include/CL/cl.h include/nvidia-current/CL/cl.h NAMES OpenCL/cl.h CL/cl.h include/CL/cl.h include/nvidia-current/CL/cl.h
PATHS ENV OCLROOT ENV AMDAPPSDKROOT ENV CUDA_PATH ENV INTELOCLSDKROOT PATHS ENV OCLROOT ENV AMDAPPSDKROOT ENV CUDA_PATH ENV INTELOCLSDKROOT
...@@ -20,18 +20,7 @@ else(APPLE) ...@@ -20,18 +20,7 @@ else(APPLE)
DOC "OpenCL include directory" DOC "OpenCL include directory"
NO_DEFAULT_PATH) NO_DEFAULT_PATH)
if (X86_64) set(OPENCL_LIBRARY "OPENCL_DYNAMIC_LOAD")
set(OPENCL_POSSIBLE_LIB_SUFFIXES lib/Win64 lib/x86_64 lib/x64)
elseif (X86)
set(OPENCL_POSSIBLE_LIB_SUFFIXES lib/Win32 lib/x86)
endif()
find_library(OPENCL_LIBRARY
NAMES OpenCL
HINTS ${OPENCL_ROOT_DIR}
PATH_SUFFIXES ${OPENCL_POSSIBLE_LIB_SUFFIXES}
DOC "OpenCL library"
NO_DEFAULT_PATH)
mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY) mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY)
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)
...@@ -40,20 +29,30 @@ else(APPLE) ...@@ -40,20 +29,30 @@ else(APPLE)
endif(APPLE) endif(APPLE)
if(OPENCL_FOUND) if(OPENCL_FOUND)
set(HAVE_OPENCL 1) try_compile(HAVE_OPENCL11
set(OPENCL_INCLUDE_DIRS ${OPENCL_INCLUDE_DIR}) "${OpenCV_BINARY_DIR}"
set(OPENCL_LIBRARIES ${OPENCL_LIBRARY}) "${OpenCV_SOURCE_DIR}/cmake/checks/opencl11.cpp"
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${OPENCL_INCLUDE_DIR}"
if(WIN32 AND X86_64) )
set(CLAMD_POSSIBLE_LIB_SUFFIXES lib64/import) if(NOT HAVE_OPENCL11)
elseif(WIN32) message(STATUS "OpenCL 1.1 not found, ignore OpenCL SDK")
set(CLAMD_POSSIBLE_LIB_SUFFIXES lib32/import) return()
endif()
try_compile(HAVE_OPENCL12
"${OpenCV_BINARY_DIR}"
"${OpenCV_SOURCE_DIR}/cmake/checks/opencl12.cpp"
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${OPENCL_INCLUDE_DIR}"
)
if(NOT HAVE_OPENCL12)
message(STATUS "OpenCL 1.2 not found, will use OpenCL 1.1")
endif() endif()
if(X86_64 AND UNIX) set(HAVE_OPENCL 1)
set(CLAMD_POSSIBLE_LIB_SUFFIXES lib64) set(OPENCL_INCLUDE_DIRS ${OPENCL_INCLUDE_DIR})
elseif(X86 AND UNIX) if(OPENCL_LIBRARY MATCHES "OPENCL_DYNAMIC_LOAD")
set(CLAMD_POSSIBLE_LIB_SUFFIXES lib32) unset(OPENCL_LIBRARIES)
else()
set(OPENCL_LIBRARIES "${OPENCL_LIBRARY}")
endif() endif()
if(WITH_OPENCLAMDFFT) if(WITH_OPENCLAMDFFT)
...@@ -70,16 +69,9 @@ if(OPENCL_FOUND) ...@@ -70,16 +69,9 @@ if(OPENCL_FOUND)
PATH_SUFFIXES include PATH_SUFFIXES include
DOC "clAmdFft include directory") DOC "clAmdFft include directory")
find_library(CLAMDFFT_LIBRARY if(CLAMDFFT_INCLUDE_DIR)
NAMES clAmdFft.Runtime
HINTS ${CLAMDFFT_ROOT_DIR}
PATH_SUFFIXES ${CLAMD_POSSIBLE_LIB_SUFFIXES}
DOC "clAmdFft library")
if(CLAMDFFT_LIBRARY AND CLAMDFFT_INCLUDE_DIR)
set(HAVE_CLAMDFFT 1) set(HAVE_CLAMDFFT 1)
list(APPEND OPENCL_INCLUDE_DIRS "${CLAMDFFT_INCLUDE_DIR}") list(APPEND OPENCL_INCLUDE_DIRS "${CLAMDFFT_INCLUDE_DIR}")
list(APPEND OPENCL_LIBRARIES "${CLAMDFFT_LIBRARY}")
endif() endif()
endif() endif()
...@@ -97,16 +89,9 @@ if(OPENCL_FOUND) ...@@ -97,16 +89,9 @@ if(OPENCL_FOUND)
PATH_SUFFIXES include PATH_SUFFIXES include
DOC "clAmdFft include directory") DOC "clAmdFft include directory")
find_library(CLAMDBLAS_LIBRARY if(CLAMDBLAS_INCLUDE_DIR)
NAMES clAmdBlas
HINTS ${CLAMDBLAS_ROOT_DIR}
PATH_SUFFIXES ${CLAMD_POSSIBLE_LIB_SUFFIXES}
DOC "clAmdBlas library")
if(CLAMDBLAS_LIBRARY AND CLAMDBLAS_INCLUDE_DIR)
set(HAVE_CLAMDBLAS 1) set(HAVE_CLAMDBLAS 1)
list(APPEND OPENCL_INCLUDE_DIRS "${CLAMDBLAS_INCLUDE_DIR}") list(APPEND OPENCL_INCLUDE_DIRS "${CLAMDBLAS_INCLUDE_DIR}")
list(APPEND OPENCL_LIBRARIES "${CLAMDBLAS_LIBRARY}")
endif() endif()
endif() endif()
endif() endif()
#if defined __APPLE__
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif
int main(int argc, char** argv)
{
#ifdef CL_VERSION_1_1
#else
#error OpenCL 1.1 not found
#endif
return 0;
}
#if defined __APPLE__
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif
int main(int argc, char** argv)
{
#ifdef CL_VERSION_1_2
#else
#error OpenCL 1.2 not found
#endif
return 0;
}
...@@ -108,6 +108,8 @@ ...@@ -108,6 +108,8 @@
/* OpenCL Support */ /* OpenCL Support */
#cmakedefine HAVE_OPENCL #cmakedefine HAVE_OPENCL
#cmakedefine HAVE_OPENCL11
#cmakedefine HAVE_OPENCL12
/* OpenEXR codec */ /* OpenEXR codec */
#cmakedefine HAVE_OPENEXR #cmakedefine HAVE_OPENEXR
......
#ifndef __OPENCV_OCL_CL_RUNTIME_HPP__
#define __OPENCV_OCL_CL_RUNTIME_HPP__
#ifdef HAVE_OPENCL
#if defined(HAVE_OPENCL12)
#include "cl_runtime_opencl12.hpp"
#elif defined(HAVE_OPENCL11)
#include "cl_runtime_opencl11.hpp"
#else
#error Invalid OpenCL configuration
#endif
#endif
#endif // __OPENCV_OCL_CL_RUNTIME_HPP__
//
// AUTOGENERATED, DO NOT EDIT
//
#ifndef __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__
#define __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__
#ifdef HAVE_OPENCL
#if defined __APPLE__ && !defined(IOS)
#include <OpenCL/cl.h>
#else
// generated by parser_cl.py
#define clGetPlatformIDs clGetPlatformIDs_
#define clGetPlatformInfo clGetPlatformInfo_
#define clGetDeviceIDs clGetDeviceIDs_
#define clGetDeviceInfo clGetDeviceInfo_
#define clCreateContext clCreateContext_
#define clCreateContextFromType clCreateContextFromType_
#define clRetainContext clRetainContext_
#define clReleaseContext clReleaseContext_
#define clGetContextInfo clGetContextInfo_
#define clCreateCommandQueue clCreateCommandQueue_
#define clRetainCommandQueue clRetainCommandQueue_
#define clReleaseCommandQueue clReleaseCommandQueue_
#define clGetCommandQueueInfo clGetCommandQueueInfo_
#define clSetCommandQueueProperty clSetCommandQueueProperty_
#define clCreateBuffer clCreateBuffer_
#define clCreateSubBuffer clCreateSubBuffer_
#define clCreateImage2D clCreateImage2D_
#define clCreateImage3D clCreateImage3D_
#define clRetainMemObject clRetainMemObject_
#define clReleaseMemObject clReleaseMemObject_
#define clGetSupportedImageFormats clGetSupportedImageFormats_
#define clGetMemObjectInfo clGetMemObjectInfo_
#define clGetImageInfo clGetImageInfo_
#define clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback_
#define clCreateSampler clCreateSampler_
#define clRetainSampler clRetainSampler_
#define clReleaseSampler clReleaseSampler_
#define clGetSamplerInfo clGetSamplerInfo_
#define clCreateProgramWithSource clCreateProgramWithSource_
#define clCreateProgramWithBinary clCreateProgramWithBinary_
#define clRetainProgram clRetainProgram_
#define clReleaseProgram clReleaseProgram_
#define clBuildProgram clBuildProgram_
#define clUnloadCompiler clUnloadCompiler_
#define clGetProgramInfo clGetProgramInfo_
#define clGetProgramBuildInfo clGetProgramBuildInfo_
#define clCreateKernel clCreateKernel_
#define clCreateKernelsInProgram clCreateKernelsInProgram_
#define clRetainKernel clRetainKernel_
#define clReleaseKernel clReleaseKernel_
#define clSetKernelArg clSetKernelArg_
#define clGetKernelInfo clGetKernelInfo_
#define clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo_
#define clWaitForEvents clWaitForEvents_
#define clGetEventInfo clGetEventInfo_
#define clCreateUserEvent clCreateUserEvent_
#define clRetainEvent clRetainEvent_
#define clReleaseEvent clReleaseEvent_
#define clSetUserEventStatus clSetUserEventStatus_
#define clSetEventCallback clSetEventCallback_
#define clGetEventProfilingInfo clGetEventProfilingInfo_
#define clFlush clFlush_
#define clFinish clFinish_
#define clEnqueueReadBuffer clEnqueueReadBuffer_
#define clEnqueueReadBufferRect clEnqueueReadBufferRect_
#define clEnqueueWriteBuffer clEnqueueWriteBuffer_
#define clEnqueueWriteBufferRect clEnqueueWriteBufferRect_
#define clEnqueueCopyBuffer clEnqueueCopyBuffer_
#define clEnqueueCopyBufferRect clEnqueueCopyBufferRect_
#define clEnqueueReadImage clEnqueueReadImage_
#define clEnqueueWriteImage clEnqueueWriteImage_
#define clEnqueueCopyImage clEnqueueCopyImage_
#define clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer_
#define clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage_
#define clEnqueueMapBuffer clEnqueueMapBuffer_
#define clEnqueueMapImage clEnqueueMapImage_
#define clEnqueueUnmapMemObject clEnqueueUnmapMemObject_
#define clEnqueueNDRangeKernel clEnqueueNDRangeKernel_
#define clEnqueueTask clEnqueueTask_
#define clEnqueueNativeKernel clEnqueueNativeKernel_
#define clEnqueueMarker clEnqueueMarker_
#define clEnqueueWaitForEvents clEnqueueWaitForEvents_
#define clEnqueueBarrier clEnqueueBarrier_
#define clGetExtensionFunctionAddress clGetExtensionFunctionAddress_
#if defined __APPLE__
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif
// generated by parser_cl.py
#undef clGetPlatformIDs
#define clGetPlatformIDs clGetPlatformIDs_pfn
#undef clGetPlatformInfo
#define clGetPlatformInfo clGetPlatformInfo_pfn
#undef clGetDeviceIDs
#define clGetDeviceIDs clGetDeviceIDs_pfn
#undef clGetDeviceInfo
#define clGetDeviceInfo clGetDeviceInfo_pfn
#undef clCreateContext
#define clCreateContext clCreateContext_pfn
#undef clCreateContextFromType
#define clCreateContextFromType clCreateContextFromType_pfn
#undef clRetainContext
#define clRetainContext clRetainContext_pfn
#undef clReleaseContext
#define clReleaseContext clReleaseContext_pfn
#undef clGetContextInfo
#define clGetContextInfo clGetContextInfo_pfn
#undef clCreateCommandQueue
#define clCreateCommandQueue clCreateCommandQueue_pfn
#undef clRetainCommandQueue
#define clRetainCommandQueue clRetainCommandQueue_pfn
#undef clReleaseCommandQueue
#define clReleaseCommandQueue clReleaseCommandQueue_pfn
#undef clGetCommandQueueInfo
#define clGetCommandQueueInfo clGetCommandQueueInfo_pfn
#undef clSetCommandQueueProperty
#define clSetCommandQueueProperty clSetCommandQueueProperty_pfn
#undef clCreateBuffer
#define clCreateBuffer clCreateBuffer_pfn
#undef clCreateSubBuffer
#define clCreateSubBuffer clCreateSubBuffer_pfn
#undef clCreateImage2D
#define clCreateImage2D clCreateImage2D_pfn
#undef clCreateImage3D
#define clCreateImage3D clCreateImage3D_pfn
#undef clRetainMemObject
#define clRetainMemObject clRetainMemObject_pfn
#undef clReleaseMemObject
#define clReleaseMemObject clReleaseMemObject_pfn
#undef clGetSupportedImageFormats
#define clGetSupportedImageFormats clGetSupportedImageFormats_pfn
#undef clGetMemObjectInfo
#define clGetMemObjectInfo clGetMemObjectInfo_pfn
#undef clGetImageInfo
#define clGetImageInfo clGetImageInfo_pfn
#undef clSetMemObjectDestructorCallback
#define clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback_pfn
#undef clCreateSampler
#define clCreateSampler clCreateSampler_pfn
#undef clRetainSampler
#define clRetainSampler clRetainSampler_pfn
#undef clReleaseSampler
#define clReleaseSampler clReleaseSampler_pfn
#undef clGetSamplerInfo
#define clGetSamplerInfo clGetSamplerInfo_pfn
#undef clCreateProgramWithSource
#define clCreateProgramWithSource clCreateProgramWithSource_pfn
#undef clCreateProgramWithBinary
#define clCreateProgramWithBinary clCreateProgramWithBinary_pfn
#undef clRetainProgram
#define clRetainProgram clRetainProgram_pfn
#undef clReleaseProgram
#define clReleaseProgram clReleaseProgram_pfn
#undef clBuildProgram
#define clBuildProgram clBuildProgram_pfn
#undef clUnloadCompiler
#define clUnloadCompiler clUnloadCompiler_pfn
#undef clGetProgramInfo
#define clGetProgramInfo clGetProgramInfo_pfn
#undef clGetProgramBuildInfo
#define clGetProgramBuildInfo clGetProgramBuildInfo_pfn
#undef clCreateKernel
#define clCreateKernel clCreateKernel_pfn
#undef clCreateKernelsInProgram
#define clCreateKernelsInProgram clCreateKernelsInProgram_pfn
#undef clRetainKernel
#define clRetainKernel clRetainKernel_pfn
#undef clReleaseKernel
#define clReleaseKernel clReleaseKernel_pfn
#undef clSetKernelArg
#define clSetKernelArg clSetKernelArg_pfn
#undef clGetKernelInfo
#define clGetKernelInfo clGetKernelInfo_pfn
#undef clGetKernelWorkGroupInfo
#define clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo_pfn
#undef clWaitForEvents
#define clWaitForEvents clWaitForEvents_pfn
#undef clGetEventInfo
#define clGetEventInfo clGetEventInfo_pfn
#undef clCreateUserEvent
#define clCreateUserEvent clCreateUserEvent_pfn
#undef clRetainEvent
#define clRetainEvent clRetainEvent_pfn
#undef clReleaseEvent
#define clReleaseEvent clReleaseEvent_pfn
#undef clSetUserEventStatus
#define clSetUserEventStatus clSetUserEventStatus_pfn
#undef clSetEventCallback
#define clSetEventCallback clSetEventCallback_pfn
#undef clGetEventProfilingInfo
#define clGetEventProfilingInfo clGetEventProfilingInfo_pfn
#undef clFlush
#define clFlush clFlush_pfn
#undef clFinish
#define clFinish clFinish_pfn
#undef clEnqueueReadBuffer
#define clEnqueueReadBuffer clEnqueueReadBuffer_pfn
#undef clEnqueueReadBufferRect
#define clEnqueueReadBufferRect clEnqueueReadBufferRect_pfn
#undef clEnqueueWriteBuffer
#define clEnqueueWriteBuffer clEnqueueWriteBuffer_pfn
#undef clEnqueueWriteBufferRect
#define clEnqueueWriteBufferRect clEnqueueWriteBufferRect_pfn
#undef clEnqueueCopyBuffer
#define clEnqueueCopyBuffer clEnqueueCopyBuffer_pfn
#undef clEnqueueCopyBufferRect
#define clEnqueueCopyBufferRect clEnqueueCopyBufferRect_pfn
#undef clEnqueueReadImage
#define clEnqueueReadImage clEnqueueReadImage_pfn
#undef clEnqueueWriteImage
#define clEnqueueWriteImage clEnqueueWriteImage_pfn
#undef clEnqueueCopyImage
#define clEnqueueCopyImage clEnqueueCopyImage_pfn
#undef clEnqueueCopyImageToBuffer
#define clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer_pfn
#undef clEnqueueCopyBufferToImage
#define clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage_pfn
#undef clEnqueueMapBuffer
#define clEnqueueMapBuffer clEnqueueMapBuffer_pfn
#undef clEnqueueMapImage
#define clEnqueueMapImage clEnqueueMapImage_pfn
#undef clEnqueueUnmapMemObject
#define clEnqueueUnmapMemObject clEnqueueUnmapMemObject_pfn
#undef clEnqueueNDRangeKernel
#define clEnqueueNDRangeKernel clEnqueueNDRangeKernel_pfn
#undef clEnqueueTask
#define clEnqueueTask clEnqueueTask_pfn
#undef clEnqueueNativeKernel
#define clEnqueueNativeKernel clEnqueueNativeKernel_pfn
#undef clEnqueueMarker
#define clEnqueueMarker clEnqueueMarker_pfn
#undef clEnqueueWaitForEvents
#define clEnqueueWaitForEvents clEnqueueWaitForEvents_pfn
#undef clEnqueueBarrier
#define clEnqueueBarrier clEnqueueBarrier_pfn
#undef clGetExtensionFunctionAddress
#define clGetExtensionFunctionAddress clGetExtensionFunctionAddress_pfn
#ifndef CL_RUNTIME_EXPORT
#if (defined(BUILD_SHARED_LIBS) || defined(OPENCV_OCL_SHARED)) && (defined WIN32 || defined _WIN32 || defined WINCE)
#define CL_RUNTIME_EXPORT __declspec(dllimport)
#else
#define CL_RUNTIME_EXPORT
#endif
#endif
// generated by parser_cl.py
extern CL_RUNTIME_EXPORT cl_int (*clGetPlatformIDs)(cl_uint, cl_platform_id*, cl_uint*);
extern CL_RUNTIME_EXPORT cl_int (*clGetPlatformInfo)(cl_platform_id, cl_platform_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clGetDeviceIDs)(cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*);
extern CL_RUNTIME_EXPORT cl_int (*clGetDeviceInfo)(cl_device_id, cl_device_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_context (*clCreateContext)(const cl_context_properties*, cl_uint, const cl_device_id*, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_context (*clCreateContextFromType)(const cl_context_properties*, cl_device_type, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainContext)(cl_context);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseContext)(cl_context);
extern CL_RUNTIME_EXPORT cl_int (*clGetContextInfo)(cl_context, cl_context_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_command_queue (*clCreateCommandQueue)(cl_context, cl_device_id, cl_command_queue_properties, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainCommandQueue)(cl_command_queue);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseCommandQueue)(cl_command_queue);
extern CL_RUNTIME_EXPORT cl_int (*clGetCommandQueueInfo)(cl_command_queue, cl_command_queue_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clSetCommandQueueProperty)(cl_command_queue, cl_command_queue_properties, cl_bool, cl_command_queue_properties*);
extern CL_RUNTIME_EXPORT cl_mem (*clCreateBuffer)(cl_context, cl_mem_flags, size_t, void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_mem (*clCreateSubBuffer)(cl_mem, cl_mem_flags, cl_buffer_create_type, const void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_mem (*clCreateImage2D)(cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_mem (*clCreateImage3D)(cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, size_t, size_t, void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainMemObject)(cl_mem);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseMemObject)(cl_mem);
extern CL_RUNTIME_EXPORT cl_int (*clGetSupportedImageFormats)(cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*);
extern CL_RUNTIME_EXPORT cl_int (*clGetMemObjectInfo)(cl_mem, cl_mem_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clGetImageInfo)(cl_mem, cl_image_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clSetMemObjectDestructorCallback)(cl_mem, void (CL_CALLBACK*) (cl_mem, void*), void*);
extern CL_RUNTIME_EXPORT cl_sampler (*clCreateSampler)(cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainSampler)(cl_sampler);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseSampler)(cl_sampler);
extern CL_RUNTIME_EXPORT cl_int (*clGetSamplerInfo)(cl_sampler, cl_sampler_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_program (*clCreateProgramWithSource)(cl_context, cl_uint, const char**, const size_t*, cl_int*);
extern CL_RUNTIME_EXPORT cl_program (*clCreateProgramWithBinary)(cl_context, cl_uint, const cl_device_id*, const size_t*, const unsigned char**, cl_int*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainProgram)(cl_program);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseProgram)(cl_program);
extern CL_RUNTIME_EXPORT cl_int (*clBuildProgram)(cl_program, cl_uint, const cl_device_id*, const char*, void (CL_CALLBACK*) (cl_program, void*), void*);
extern CL_RUNTIME_EXPORT cl_int (*clUnloadCompiler)();
extern CL_RUNTIME_EXPORT cl_int (*clGetProgramInfo)(cl_program, cl_program_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clGetProgramBuildInfo)(cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_kernel (*clCreateKernel)(cl_program, const char*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clCreateKernelsInProgram)(cl_program, cl_uint, cl_kernel*, cl_uint*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainKernel)(cl_kernel);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseKernel)(cl_kernel);
extern CL_RUNTIME_EXPORT cl_int (*clSetKernelArg)(cl_kernel, cl_uint, size_t, const void*);
extern CL_RUNTIME_EXPORT cl_int (*clGetKernelInfo)(cl_kernel, cl_kernel_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clGetKernelWorkGroupInfo)(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clWaitForEvents)(cl_uint, const cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clGetEventInfo)(cl_event, cl_event_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_event (*clCreateUserEvent)(cl_context, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainEvent)(cl_event);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseEvent)(cl_event);
extern CL_RUNTIME_EXPORT cl_int (*clSetUserEventStatus)(cl_event, cl_int);
extern CL_RUNTIME_EXPORT cl_int (*clSetEventCallback)(cl_event, cl_int, void (CL_CALLBACK*) (cl_event, cl_int, void*), void*);
extern CL_RUNTIME_EXPORT cl_int (*clGetEventProfilingInfo)(cl_event, cl_profiling_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clFlush)(cl_command_queue);
extern CL_RUNTIME_EXPORT cl_int (*clFinish)(cl_command_queue);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueReadBuffer)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueReadBufferRect)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueWriteBuffer)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueWriteBufferRect)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueCopyBuffer)(cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueCopyBufferRect)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueReadImage)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueWriteImage)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueCopyImage)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueCopyImageToBuffer)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, size_t, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueCopyBufferToImage)(cl_command_queue, cl_mem, cl_mem, size_t, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT void* (*clEnqueueMapBuffer)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event*, cl_event*, cl_int*);
extern CL_RUNTIME_EXPORT void* (*clEnqueueMapImage)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, const size_t*, const size_t*, size_t*, size_t*, cl_uint, const cl_event*, cl_event*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueUnmapMemObject)(cl_command_queue, cl_mem, void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueNDRangeKernel)(cl_command_queue, cl_kernel, cl_uint, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueTask)(cl_command_queue, cl_kernel, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueNativeKernel)(cl_command_queue, void (CL_CALLBACK* user_func) (void*), void*, size_t, cl_uint, const cl_mem*, const void**, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueMarker)(cl_command_queue, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueWaitForEvents)(cl_command_queue, cl_uint, const cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueBarrier)(cl_command_queue);
extern CL_RUNTIME_EXPORT void* (*clGetExtensionFunctionAddress)(const char*);
#endif
#endif
#endif // __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__
//
// AUTOGENERATED, DO NOT EDIT
//
#ifndef __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__
#define __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__
#ifdef HAVE_OPENCL
#if defined __APPLE__ && !defined(IOS)
#include <OpenCL/cl.h>
#else
// generated by parser_cl.py
#define clGetPlatformIDs clGetPlatformIDs_
#define clGetPlatformInfo clGetPlatformInfo_
#define clGetDeviceIDs clGetDeviceIDs_
#define clGetDeviceInfo clGetDeviceInfo_
#define clCreateSubDevices clCreateSubDevices_
#define clRetainDevice clRetainDevice_
#define clReleaseDevice clReleaseDevice_
#define clCreateContext clCreateContext_
#define clCreateContextFromType clCreateContextFromType_
#define clRetainContext clRetainContext_
#define clReleaseContext clReleaseContext_
#define clGetContextInfo clGetContextInfo_
#define clCreateCommandQueue clCreateCommandQueue_
#define clRetainCommandQueue clRetainCommandQueue_
#define clReleaseCommandQueue clReleaseCommandQueue_
#define clGetCommandQueueInfo clGetCommandQueueInfo_
#define clCreateBuffer clCreateBuffer_
#define clCreateSubBuffer clCreateSubBuffer_
#define clCreateImage clCreateImage_
#define clRetainMemObject clRetainMemObject_
#define clReleaseMemObject clReleaseMemObject_
#define clGetSupportedImageFormats clGetSupportedImageFormats_
#define clGetMemObjectInfo clGetMemObjectInfo_
#define clGetImageInfo clGetImageInfo_
#define clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback_
#define clCreateSampler clCreateSampler_
#define clRetainSampler clRetainSampler_
#define clReleaseSampler clReleaseSampler_
#define clGetSamplerInfo clGetSamplerInfo_
#define clCreateProgramWithSource clCreateProgramWithSource_
#define clCreateProgramWithBinary clCreateProgramWithBinary_
#define clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels_
#define clRetainProgram clRetainProgram_
#define clReleaseProgram clReleaseProgram_
#define clBuildProgram clBuildProgram_
#define clCompileProgram clCompileProgram_
#define clLinkProgram clLinkProgram_
#define clUnloadPlatformCompiler clUnloadPlatformCompiler_
#define clGetProgramInfo clGetProgramInfo_
#define clGetProgramBuildInfo clGetProgramBuildInfo_
#define clCreateKernel clCreateKernel_
#define clCreateKernelsInProgram clCreateKernelsInProgram_
#define clRetainKernel clRetainKernel_
#define clReleaseKernel clReleaseKernel_
#define clSetKernelArg clSetKernelArg_
#define clGetKernelInfo clGetKernelInfo_
#define clGetKernelArgInfo clGetKernelArgInfo_
#define clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo_
#define clWaitForEvents clWaitForEvents_
#define clGetEventInfo clGetEventInfo_
#define clCreateUserEvent clCreateUserEvent_
#define clRetainEvent clRetainEvent_
#define clReleaseEvent clReleaseEvent_
#define clSetUserEventStatus clSetUserEventStatus_
#define clSetEventCallback clSetEventCallback_
#define clGetEventProfilingInfo clGetEventProfilingInfo_
#define clFlush clFlush_
#define clFinish clFinish_
#define clEnqueueReadBuffer clEnqueueReadBuffer_
#define clEnqueueReadBufferRect clEnqueueReadBufferRect_
#define clEnqueueWriteBuffer clEnqueueWriteBuffer_
#define clEnqueueWriteBufferRect clEnqueueWriteBufferRect_
#define clEnqueueFillBuffer clEnqueueFillBuffer_
#define clEnqueueCopyBuffer clEnqueueCopyBuffer_
#define clEnqueueCopyBufferRect clEnqueueCopyBufferRect_
#define clEnqueueReadImage clEnqueueReadImage_
#define clEnqueueWriteImage clEnqueueWriteImage_
#define clEnqueueFillImage clEnqueueFillImage_
#define clEnqueueCopyImage clEnqueueCopyImage_
#define clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer_
#define clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage_
#define clEnqueueMapBuffer clEnqueueMapBuffer_
#define clEnqueueMapImage clEnqueueMapImage_
#define clEnqueueUnmapMemObject clEnqueueUnmapMemObject_
#define clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects_
#define clEnqueueNDRangeKernel clEnqueueNDRangeKernel_
#define clEnqueueTask clEnqueueTask_
#define clEnqueueNativeKernel clEnqueueNativeKernel_
#define clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList_
#define clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList_
#define clGetExtensionFunctionAddressForPlatform clGetExtensionFunctionAddressForPlatform_
#define clCreateImage2D clCreateImage2D_
#define clCreateImage3D clCreateImage3D_
#define clEnqueueMarker clEnqueueMarker_
#define clEnqueueWaitForEvents clEnqueueWaitForEvents_
#define clEnqueueBarrier clEnqueueBarrier_
#define clUnloadCompiler clUnloadCompiler_
#define clGetExtensionFunctionAddress clGetExtensionFunctionAddress_
#if defined __APPLE__
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif
// generated by parser_cl.py
#undef clGetPlatformIDs
#define clGetPlatformIDs clGetPlatformIDs_pfn
#undef clGetPlatformInfo
#define clGetPlatformInfo clGetPlatformInfo_pfn
#undef clGetDeviceIDs
#define clGetDeviceIDs clGetDeviceIDs_pfn
#undef clGetDeviceInfo
#define clGetDeviceInfo clGetDeviceInfo_pfn
#undef clCreateSubDevices
#define clCreateSubDevices clCreateSubDevices_pfn
#undef clRetainDevice
#define clRetainDevice clRetainDevice_pfn
#undef clReleaseDevice
#define clReleaseDevice clReleaseDevice_pfn
#undef clCreateContext
#define clCreateContext clCreateContext_pfn
#undef clCreateContextFromType
#define clCreateContextFromType clCreateContextFromType_pfn
#undef clRetainContext
#define clRetainContext clRetainContext_pfn
#undef clReleaseContext
#define clReleaseContext clReleaseContext_pfn
#undef clGetContextInfo
#define clGetContextInfo clGetContextInfo_pfn
#undef clCreateCommandQueue
#define clCreateCommandQueue clCreateCommandQueue_pfn
#undef clRetainCommandQueue
#define clRetainCommandQueue clRetainCommandQueue_pfn
#undef clReleaseCommandQueue
#define clReleaseCommandQueue clReleaseCommandQueue_pfn
#undef clGetCommandQueueInfo
#define clGetCommandQueueInfo clGetCommandQueueInfo_pfn
#undef clCreateBuffer
#define clCreateBuffer clCreateBuffer_pfn
#undef clCreateSubBuffer
#define clCreateSubBuffer clCreateSubBuffer_pfn
#undef clCreateImage
#define clCreateImage clCreateImage_pfn
#undef clRetainMemObject
#define clRetainMemObject clRetainMemObject_pfn
#undef clReleaseMemObject
#define clReleaseMemObject clReleaseMemObject_pfn
#undef clGetSupportedImageFormats
#define clGetSupportedImageFormats clGetSupportedImageFormats_pfn
#undef clGetMemObjectInfo
#define clGetMemObjectInfo clGetMemObjectInfo_pfn
#undef clGetImageInfo
#define clGetImageInfo clGetImageInfo_pfn
#undef clSetMemObjectDestructorCallback
#define clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback_pfn
#undef clCreateSampler
#define clCreateSampler clCreateSampler_pfn
#undef clRetainSampler
#define clRetainSampler clRetainSampler_pfn
#undef clReleaseSampler
#define clReleaseSampler clReleaseSampler_pfn
#undef clGetSamplerInfo
#define clGetSamplerInfo clGetSamplerInfo_pfn
#undef clCreateProgramWithSource
#define clCreateProgramWithSource clCreateProgramWithSource_pfn
#undef clCreateProgramWithBinary
#define clCreateProgramWithBinary clCreateProgramWithBinary_pfn
#undef clCreateProgramWithBuiltInKernels
#define clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels_pfn
#undef clRetainProgram
#define clRetainProgram clRetainProgram_pfn
#undef clReleaseProgram
#define clReleaseProgram clReleaseProgram_pfn
#undef clBuildProgram
#define clBuildProgram clBuildProgram_pfn
#undef clCompileProgram
#define clCompileProgram clCompileProgram_pfn
#undef clLinkProgram
#define clLinkProgram clLinkProgram_pfn
#undef clUnloadPlatformCompiler
#define clUnloadPlatformCompiler clUnloadPlatformCompiler_pfn
#undef clGetProgramInfo
#define clGetProgramInfo clGetProgramInfo_pfn
#undef clGetProgramBuildInfo
#define clGetProgramBuildInfo clGetProgramBuildInfo_pfn
#undef clCreateKernel
#define clCreateKernel clCreateKernel_pfn
#undef clCreateKernelsInProgram
#define clCreateKernelsInProgram clCreateKernelsInProgram_pfn
#undef clRetainKernel
#define clRetainKernel clRetainKernel_pfn
#undef clReleaseKernel
#define clReleaseKernel clReleaseKernel_pfn
#undef clSetKernelArg
#define clSetKernelArg clSetKernelArg_pfn
#undef clGetKernelInfo
#define clGetKernelInfo clGetKernelInfo_pfn
#undef clGetKernelArgInfo
#define clGetKernelArgInfo clGetKernelArgInfo_pfn
#undef clGetKernelWorkGroupInfo
#define clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo_pfn
#undef clWaitForEvents
#define clWaitForEvents clWaitForEvents_pfn
#undef clGetEventInfo
#define clGetEventInfo clGetEventInfo_pfn
#undef clCreateUserEvent
#define clCreateUserEvent clCreateUserEvent_pfn
#undef clRetainEvent
#define clRetainEvent clRetainEvent_pfn
#undef clReleaseEvent
#define clReleaseEvent clReleaseEvent_pfn
#undef clSetUserEventStatus
#define clSetUserEventStatus clSetUserEventStatus_pfn
#undef clSetEventCallback
#define clSetEventCallback clSetEventCallback_pfn
#undef clGetEventProfilingInfo
#define clGetEventProfilingInfo clGetEventProfilingInfo_pfn
#undef clFlush
#define clFlush clFlush_pfn
#undef clFinish
#define clFinish clFinish_pfn
#undef clEnqueueReadBuffer
#define clEnqueueReadBuffer clEnqueueReadBuffer_pfn
#undef clEnqueueReadBufferRect
#define clEnqueueReadBufferRect clEnqueueReadBufferRect_pfn
#undef clEnqueueWriteBuffer
#define clEnqueueWriteBuffer clEnqueueWriteBuffer_pfn
#undef clEnqueueWriteBufferRect
#define clEnqueueWriteBufferRect clEnqueueWriteBufferRect_pfn
#undef clEnqueueFillBuffer
#define clEnqueueFillBuffer clEnqueueFillBuffer_pfn
#undef clEnqueueCopyBuffer
#define clEnqueueCopyBuffer clEnqueueCopyBuffer_pfn
#undef clEnqueueCopyBufferRect
#define clEnqueueCopyBufferRect clEnqueueCopyBufferRect_pfn
#undef clEnqueueReadImage
#define clEnqueueReadImage clEnqueueReadImage_pfn
#undef clEnqueueWriteImage
#define clEnqueueWriteImage clEnqueueWriteImage_pfn
#undef clEnqueueFillImage
#define clEnqueueFillImage clEnqueueFillImage_pfn
#undef clEnqueueCopyImage
#define clEnqueueCopyImage clEnqueueCopyImage_pfn
#undef clEnqueueCopyImageToBuffer
#define clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer_pfn
#undef clEnqueueCopyBufferToImage
#define clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage_pfn
#undef clEnqueueMapBuffer
#define clEnqueueMapBuffer clEnqueueMapBuffer_pfn
#undef clEnqueueMapImage
#define clEnqueueMapImage clEnqueueMapImage_pfn
#undef clEnqueueUnmapMemObject
#define clEnqueueUnmapMemObject clEnqueueUnmapMemObject_pfn
#undef clEnqueueMigrateMemObjects
#define clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects_pfn
#undef clEnqueueNDRangeKernel
#define clEnqueueNDRangeKernel clEnqueueNDRangeKernel_pfn
#undef clEnqueueTask
#define clEnqueueTask clEnqueueTask_pfn
#undef clEnqueueNativeKernel
#define clEnqueueNativeKernel clEnqueueNativeKernel_pfn
#undef clEnqueueMarkerWithWaitList
#define clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList_pfn
#undef clEnqueueBarrierWithWaitList
#define clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList_pfn
#undef clGetExtensionFunctionAddressForPlatform
#define clGetExtensionFunctionAddressForPlatform clGetExtensionFunctionAddressForPlatform_pfn
#undef clCreateImage2D
#define clCreateImage2D clCreateImage2D_pfn
#undef clCreateImage3D
#define clCreateImage3D clCreateImage3D_pfn
#undef clEnqueueMarker
#define clEnqueueMarker clEnqueueMarker_pfn
#undef clEnqueueWaitForEvents
#define clEnqueueWaitForEvents clEnqueueWaitForEvents_pfn
#undef clEnqueueBarrier
#define clEnqueueBarrier clEnqueueBarrier_pfn
#undef clUnloadCompiler
#define clUnloadCompiler clUnloadCompiler_pfn
#undef clGetExtensionFunctionAddress
#define clGetExtensionFunctionAddress clGetExtensionFunctionAddress_pfn
#ifndef CL_RUNTIME_EXPORT
#if (defined(BUILD_SHARED_LIBS) || defined(OPENCV_OCL_SHARED)) && (defined WIN32 || defined _WIN32 || defined WINCE)
#define CL_RUNTIME_EXPORT __declspec(dllimport)
#else
#define CL_RUNTIME_EXPORT
#endif
#endif
// generated by parser_cl.py
extern CL_RUNTIME_EXPORT cl_int (*clGetPlatformIDs)(cl_uint, cl_platform_id*, cl_uint*);
extern CL_RUNTIME_EXPORT cl_int (*clGetPlatformInfo)(cl_platform_id, cl_platform_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clGetDeviceIDs)(cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*);
extern CL_RUNTIME_EXPORT cl_int (*clGetDeviceInfo)(cl_device_id, cl_device_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clCreateSubDevices)(cl_device_id, const cl_device_partition_property*, cl_uint, cl_device_id*, cl_uint*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainDevice)(cl_device_id);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseDevice)(cl_device_id);
extern CL_RUNTIME_EXPORT cl_context (*clCreateContext)(const cl_context_properties*, cl_uint, const cl_device_id*, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_context (*clCreateContextFromType)(const cl_context_properties*, cl_device_type, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainContext)(cl_context);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseContext)(cl_context);
extern CL_RUNTIME_EXPORT cl_int (*clGetContextInfo)(cl_context, cl_context_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_command_queue (*clCreateCommandQueue)(cl_context, cl_device_id, cl_command_queue_properties, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainCommandQueue)(cl_command_queue);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseCommandQueue)(cl_command_queue);
extern CL_RUNTIME_EXPORT cl_int (*clGetCommandQueueInfo)(cl_command_queue, cl_command_queue_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_mem (*clCreateBuffer)(cl_context, cl_mem_flags, size_t, void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_mem (*clCreateSubBuffer)(cl_mem, cl_mem_flags, cl_buffer_create_type, const void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_mem (*clCreateImage)(cl_context, cl_mem_flags, const cl_image_format*, const cl_image_desc*, void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainMemObject)(cl_mem);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseMemObject)(cl_mem);
extern CL_RUNTIME_EXPORT cl_int (*clGetSupportedImageFormats)(cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*);
extern CL_RUNTIME_EXPORT cl_int (*clGetMemObjectInfo)(cl_mem, cl_mem_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clGetImageInfo)(cl_mem, cl_image_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clSetMemObjectDestructorCallback)(cl_mem, void (CL_CALLBACK*) (cl_mem, void*), void*);
extern CL_RUNTIME_EXPORT cl_sampler (*clCreateSampler)(cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainSampler)(cl_sampler);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseSampler)(cl_sampler);
extern CL_RUNTIME_EXPORT cl_int (*clGetSamplerInfo)(cl_sampler, cl_sampler_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_program (*clCreateProgramWithSource)(cl_context, cl_uint, const char**, const size_t*, cl_int*);
extern CL_RUNTIME_EXPORT cl_program (*clCreateProgramWithBinary)(cl_context, cl_uint, const cl_device_id*, const size_t*, const unsigned char**, cl_int*, cl_int*);
extern CL_RUNTIME_EXPORT cl_program (*clCreateProgramWithBuiltInKernels)(cl_context, cl_uint, const cl_device_id*, const char*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainProgram)(cl_program);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseProgram)(cl_program);
extern CL_RUNTIME_EXPORT cl_int (*clBuildProgram)(cl_program, cl_uint, const cl_device_id*, const char*, void (CL_CALLBACK*) (cl_program, void*), void*);
extern CL_RUNTIME_EXPORT cl_int (*clCompileProgram)(cl_program, cl_uint, const cl_device_id*, const char*, cl_uint, const cl_program*, const char**, void (CL_CALLBACK*) (cl_program, void*), void*);
extern CL_RUNTIME_EXPORT cl_program (*clLinkProgram)(cl_context, cl_uint, const cl_device_id*, const char*, cl_uint, const cl_program*, void (CL_CALLBACK*) (cl_program, void*), void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clUnloadPlatformCompiler)(cl_platform_id);
extern CL_RUNTIME_EXPORT cl_int (*clGetProgramInfo)(cl_program, cl_program_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clGetProgramBuildInfo)(cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_kernel (*clCreateKernel)(cl_program, const char*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clCreateKernelsInProgram)(cl_program, cl_uint, cl_kernel*, cl_uint*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainKernel)(cl_kernel);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseKernel)(cl_kernel);
extern CL_RUNTIME_EXPORT cl_int (*clSetKernelArg)(cl_kernel, cl_uint, size_t, const void*);
extern CL_RUNTIME_EXPORT cl_int (*clGetKernelInfo)(cl_kernel, cl_kernel_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clGetKernelArgInfo)(cl_kernel, cl_uint, cl_kernel_arg_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clGetKernelWorkGroupInfo)(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clWaitForEvents)(cl_uint, const cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clGetEventInfo)(cl_event, cl_event_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_event (*clCreateUserEvent)(cl_context, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clRetainEvent)(cl_event);
extern CL_RUNTIME_EXPORT cl_int (*clReleaseEvent)(cl_event);
extern CL_RUNTIME_EXPORT cl_int (*clSetUserEventStatus)(cl_event, cl_int);
extern CL_RUNTIME_EXPORT cl_int (*clSetEventCallback)(cl_event, cl_int, void (CL_CALLBACK*) (cl_event, cl_int, void*), void*);
extern CL_RUNTIME_EXPORT cl_int (*clGetEventProfilingInfo)(cl_event, cl_profiling_info, size_t, void*, size_t*);
extern CL_RUNTIME_EXPORT cl_int (*clFlush)(cl_command_queue);
extern CL_RUNTIME_EXPORT cl_int (*clFinish)(cl_command_queue);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueReadBuffer)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueReadBufferRect)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueWriteBuffer)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueWriteBufferRect)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueFillBuffer)(cl_command_queue, cl_mem, const void*, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueCopyBuffer)(cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueCopyBufferRect)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueReadImage)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueWriteImage)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueFillImage)(cl_command_queue, cl_mem, const void*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueCopyImage)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueCopyImageToBuffer)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, size_t, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueCopyBufferToImage)(cl_command_queue, cl_mem, cl_mem, size_t, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT void* (*clEnqueueMapBuffer)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event*, cl_event*, cl_int*);
extern CL_RUNTIME_EXPORT void* (*clEnqueueMapImage)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, const size_t*, const size_t*, size_t*, size_t*, cl_uint, const cl_event*, cl_event*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueUnmapMemObject)(cl_command_queue, cl_mem, void*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueMigrateMemObjects)(cl_command_queue, cl_uint, const cl_mem*, cl_mem_migration_flags, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueNDRangeKernel)(cl_command_queue, cl_kernel, cl_uint, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueTask)(cl_command_queue, cl_kernel, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueNativeKernel)(cl_command_queue, void (CL_CALLBACK*) (void*), void*, size_t, cl_uint, const cl_mem*, const void**, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueMarkerWithWaitList)(cl_command_queue, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueBarrierWithWaitList)(cl_command_queue, cl_uint, const cl_event*, cl_event*);
extern CL_RUNTIME_EXPORT void* (*clGetExtensionFunctionAddressForPlatform)(cl_platform_id, const char*);
extern CL_RUNTIME_EXPORT cl_mem (*clCreateImage2D)(cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_mem (*clCreateImage3D)(cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, size_t, size_t, void*, cl_int*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueMarker)(cl_command_queue, cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueWaitForEvents)(cl_command_queue, cl_uint, const cl_event*);
extern CL_RUNTIME_EXPORT cl_int (*clEnqueueBarrier)(cl_command_queue);
extern CL_RUNTIME_EXPORT cl_int (*clUnloadCompiler)();
extern CL_RUNTIME_EXPORT void* (*clGetExtensionFunctionAddress)(const char*);
#endif
#endif
#endif // __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__
//
// AUTOGENERATED, DO NOT EDIT
//
#ifndef __OPENCV_OCL_CLAMDBLAS_RUNTIME_HPP__
#define __OPENCV_OCL_CLAMDBLAS_RUNTIME_HPP__
#ifdef HAVE_CLAMDBLAS
// generated by parser_clamdblas.py
#define clAmdBlasGetVersion clAmdBlasGetVersion_
#define clAmdBlasSetup clAmdBlasSetup_
#define clAmdBlasTeardown clAmdBlasTeardown_
#define clAmdBlasAddScratchImage clAmdBlasAddScratchImage_
#define clAmdBlasRemoveScratchImage clAmdBlasRemoveScratchImage_
#define clAmdBlasSswap clAmdBlasSswap_
#define clAmdBlasDswap clAmdBlasDswap_
#define clAmdBlasCswap clAmdBlasCswap_
#define clAmdBlasZswap clAmdBlasZswap_
#define clAmdBlasSscal clAmdBlasSscal_
#define clAmdBlasDscal clAmdBlasDscal_
#define clAmdBlasCscal clAmdBlasCscal_
#define clAmdBlasZscal clAmdBlasZscal_
#define clAmdBlasCsscal clAmdBlasCsscal_
#define clAmdBlasZdscal clAmdBlasZdscal_
#define clAmdBlasScopy clAmdBlasScopy_
#define clAmdBlasDcopy clAmdBlasDcopy_
#define clAmdBlasCcopy clAmdBlasCcopy_
#define clAmdBlasZcopy clAmdBlasZcopy_
#define clAmdBlasSaxpy clAmdBlasSaxpy_
#define clAmdBlasDaxpy clAmdBlasDaxpy_
#define clAmdBlasCaxpy clAmdBlasCaxpy_
#define clAmdBlasZaxpy clAmdBlasZaxpy_
#define clAmdBlasSdot clAmdBlasSdot_
#define clAmdBlasDdot clAmdBlasDdot_
#define clAmdBlasCdotu clAmdBlasCdotu_
#define clAmdBlasZdotu clAmdBlasZdotu_
#define clAmdBlasCdotc clAmdBlasCdotc_
#define clAmdBlasZdotc clAmdBlasZdotc_
#define clAmdBlasSrotg clAmdBlasSrotg_
#define clAmdBlasDrotg clAmdBlasDrotg_
#define clAmdBlasCrotg clAmdBlasCrotg_
#define clAmdBlasZrotg clAmdBlasZrotg_
#define clAmdBlasSrotmg clAmdBlasSrotmg_
#define clAmdBlasDrotmg clAmdBlasDrotmg_
#define clAmdBlasSrot clAmdBlasSrot_
#define clAmdBlasDrot clAmdBlasDrot_
#define clAmdBlasCsrot clAmdBlasCsrot_
#define clAmdBlasZdrot clAmdBlasZdrot_
#define clAmdBlasSrotm clAmdBlasSrotm_
#define clAmdBlasDrotm clAmdBlasDrotm_
#define clAmdBlasSnrm2 clAmdBlasSnrm2_
#define clAmdBlasDnrm2 clAmdBlasDnrm2_
#define clAmdBlasScnrm2 clAmdBlasScnrm2_
#define clAmdBlasDznrm2 clAmdBlasDznrm2_
#define clAmdBlasiSamax clAmdBlasiSamax_
#define clAmdBlasiDamax clAmdBlasiDamax_
#define clAmdBlasiCamax clAmdBlasiCamax_
#define clAmdBlasiZamax clAmdBlasiZamax_
#define clAmdBlasSasum clAmdBlasSasum_
#define clAmdBlasDasum clAmdBlasDasum_
#define clAmdBlasScasum clAmdBlasScasum_
#define clAmdBlasDzasum clAmdBlasDzasum_
#define clAmdBlasSgemv clAmdBlasSgemv_
#define clAmdBlasDgemv clAmdBlasDgemv_
#define clAmdBlasCgemv clAmdBlasCgemv_
#define clAmdBlasZgemv clAmdBlasZgemv_
#define clAmdBlasSgemvEx clAmdBlasSgemvEx_
#define clAmdBlasDgemvEx clAmdBlasDgemvEx_
#define clAmdBlasCgemvEx clAmdBlasCgemvEx_
#define clAmdBlasZgemvEx clAmdBlasZgemvEx_
#define clAmdBlasSsymv clAmdBlasSsymv_
#define clAmdBlasDsymv clAmdBlasDsymv_
#define clAmdBlasSsymvEx clAmdBlasSsymvEx_
#define clAmdBlasDsymvEx clAmdBlasDsymvEx_
#define clAmdBlasChemv clAmdBlasChemv_
#define clAmdBlasZhemv clAmdBlasZhemv_
#define clAmdBlasStrmv clAmdBlasStrmv_
#define clAmdBlasDtrmv clAmdBlasDtrmv_
#define clAmdBlasCtrmv clAmdBlasCtrmv_
#define clAmdBlasZtrmv clAmdBlasZtrmv_
#define clAmdBlasStrsv clAmdBlasStrsv_
#define clAmdBlasDtrsv clAmdBlasDtrsv_
#define clAmdBlasCtrsv clAmdBlasCtrsv_
#define clAmdBlasZtrsv clAmdBlasZtrsv_
#define clAmdBlasSger clAmdBlasSger_
#define clAmdBlasDger clAmdBlasDger_
#define clAmdBlasCgeru clAmdBlasCgeru_
#define clAmdBlasZgeru clAmdBlasZgeru_
#define clAmdBlasCgerc clAmdBlasCgerc_
#define clAmdBlasZgerc clAmdBlasZgerc_
#define clAmdBlasSsyr clAmdBlasSsyr_
#define clAmdBlasDsyr clAmdBlasDsyr_
#define clAmdBlasCher clAmdBlasCher_
#define clAmdBlasZher clAmdBlasZher_
#define clAmdBlasSsyr2 clAmdBlasSsyr2_
#define clAmdBlasDsyr2 clAmdBlasDsyr2_
#define clAmdBlasCher2 clAmdBlasCher2_
#define clAmdBlasZher2 clAmdBlasZher2_
#define clAmdBlasStpmv clAmdBlasStpmv_
#define clAmdBlasDtpmv clAmdBlasDtpmv_
#define clAmdBlasCtpmv clAmdBlasCtpmv_
#define clAmdBlasZtpmv clAmdBlasZtpmv_
#define clAmdBlasStpsv clAmdBlasStpsv_
#define clAmdBlasDtpsv clAmdBlasDtpsv_
#define clAmdBlasCtpsv clAmdBlasCtpsv_
#define clAmdBlasZtpsv clAmdBlasZtpsv_
#define clAmdBlasSspmv clAmdBlasSspmv_
#define clAmdBlasDspmv clAmdBlasDspmv_
#define clAmdBlasChpmv clAmdBlasChpmv_
#define clAmdBlasZhpmv clAmdBlasZhpmv_
#define clAmdBlasSspr clAmdBlasSspr_
#define clAmdBlasDspr clAmdBlasDspr_
#define clAmdBlasChpr clAmdBlasChpr_
#define clAmdBlasZhpr clAmdBlasZhpr_
#define clAmdBlasSspr2 clAmdBlasSspr2_
#define clAmdBlasDspr2 clAmdBlasDspr2_
#define clAmdBlasChpr2 clAmdBlasChpr2_
#define clAmdBlasZhpr2 clAmdBlasZhpr2_
#define clAmdBlasSgbmv clAmdBlasSgbmv_
#define clAmdBlasDgbmv clAmdBlasDgbmv_
#define clAmdBlasCgbmv clAmdBlasCgbmv_
#define clAmdBlasZgbmv clAmdBlasZgbmv_
#define clAmdBlasStbmv clAmdBlasStbmv_
#define clAmdBlasDtbmv clAmdBlasDtbmv_
#define clAmdBlasCtbmv clAmdBlasCtbmv_
#define clAmdBlasZtbmv clAmdBlasZtbmv_
#define clAmdBlasSsbmv clAmdBlasSsbmv_
#define clAmdBlasDsbmv clAmdBlasDsbmv_
#define clAmdBlasChbmv clAmdBlasChbmv_
#define clAmdBlasZhbmv clAmdBlasZhbmv_
#define clAmdBlasStbsv clAmdBlasStbsv_
#define clAmdBlasDtbsv clAmdBlasDtbsv_
#define clAmdBlasCtbsv clAmdBlasCtbsv_
#define clAmdBlasZtbsv clAmdBlasZtbsv_
#define clAmdBlasSgemm clAmdBlasSgemm_
#define clAmdBlasDgemm clAmdBlasDgemm_
#define clAmdBlasCgemm clAmdBlasCgemm_
#define clAmdBlasZgemm clAmdBlasZgemm_
#define clAmdBlasSgemmEx clAmdBlasSgemmEx_
#define clAmdBlasDgemmEx clAmdBlasDgemmEx_
#define clAmdBlasCgemmEx clAmdBlasCgemmEx_
#define clAmdBlasZgemmEx clAmdBlasZgemmEx_
#define clAmdBlasStrmm clAmdBlasStrmm_
#define clAmdBlasDtrmm clAmdBlasDtrmm_
#define clAmdBlasCtrmm clAmdBlasCtrmm_
#define clAmdBlasZtrmm clAmdBlasZtrmm_
#define clAmdBlasStrmmEx clAmdBlasStrmmEx_
#define clAmdBlasDtrmmEx clAmdBlasDtrmmEx_
#define clAmdBlasCtrmmEx clAmdBlasCtrmmEx_
#define clAmdBlasZtrmmEx clAmdBlasZtrmmEx_
#define clAmdBlasStrsm clAmdBlasStrsm_
#define clAmdBlasDtrsm clAmdBlasDtrsm_
#define clAmdBlasCtrsm clAmdBlasCtrsm_
#define clAmdBlasZtrsm clAmdBlasZtrsm_
#define clAmdBlasStrsmEx clAmdBlasStrsmEx_
#define clAmdBlasDtrsmEx clAmdBlasDtrsmEx_
#define clAmdBlasCtrsmEx clAmdBlasCtrsmEx_
#define clAmdBlasZtrsmEx clAmdBlasZtrsmEx_
#define clAmdBlasSsyrk clAmdBlasSsyrk_
#define clAmdBlasDsyrk clAmdBlasDsyrk_
#define clAmdBlasCsyrk clAmdBlasCsyrk_
#define clAmdBlasZsyrk clAmdBlasZsyrk_
#define clAmdBlasSsyrkEx clAmdBlasSsyrkEx_
#define clAmdBlasDsyrkEx clAmdBlasDsyrkEx_
#define clAmdBlasCsyrkEx clAmdBlasCsyrkEx_
#define clAmdBlasZsyrkEx clAmdBlasZsyrkEx_
#define clAmdBlasSsyr2k clAmdBlasSsyr2k_
#define clAmdBlasDsyr2k clAmdBlasDsyr2k_
#define clAmdBlasCsyr2k clAmdBlasCsyr2k_
#define clAmdBlasZsyr2k clAmdBlasZsyr2k_
#define clAmdBlasSsyr2kEx clAmdBlasSsyr2kEx_
#define clAmdBlasDsyr2kEx clAmdBlasDsyr2kEx_
#define clAmdBlasCsyr2kEx clAmdBlasCsyr2kEx_
#define clAmdBlasZsyr2kEx clAmdBlasZsyr2kEx_
#define clAmdBlasSsymm clAmdBlasSsymm_
#define clAmdBlasDsymm clAmdBlasDsymm_
#define clAmdBlasCsymm clAmdBlasCsymm_
#define clAmdBlasZsymm clAmdBlasZsymm_
#define clAmdBlasChemm clAmdBlasChemm_
#define clAmdBlasZhemm clAmdBlasZhemm_
#define clAmdBlasCherk clAmdBlasCherk_
#define clAmdBlasZherk clAmdBlasZherk_
#define clAmdBlasCher2k clAmdBlasCher2k_
#define clAmdBlasZher2k clAmdBlasZher2k_
#include <clAmdBlas.h>
// generated by parser_clamdblas.py
#undef clAmdBlasGetVersion
#define clAmdBlasGetVersion clAmdBlasGetVersion_pfn
#undef clAmdBlasSetup
#define clAmdBlasSetup clAmdBlasSetup_pfn
#undef clAmdBlasTeardown
#define clAmdBlasTeardown clAmdBlasTeardown_pfn
#undef clAmdBlasAddScratchImage
#define clAmdBlasAddScratchImage clAmdBlasAddScratchImage_pfn
#undef clAmdBlasRemoveScratchImage
#define clAmdBlasRemoveScratchImage clAmdBlasRemoveScratchImage_pfn
#undef clAmdBlasSswap
#define clAmdBlasSswap clAmdBlasSswap_pfn
#undef clAmdBlasDswap
#define clAmdBlasDswap clAmdBlasDswap_pfn
#undef clAmdBlasCswap
#define clAmdBlasCswap clAmdBlasCswap_pfn
#undef clAmdBlasZswap
#define clAmdBlasZswap clAmdBlasZswap_pfn
#undef clAmdBlasSscal
#define clAmdBlasSscal clAmdBlasSscal_pfn
#undef clAmdBlasDscal
#define clAmdBlasDscal clAmdBlasDscal_pfn
#undef clAmdBlasCscal
#define clAmdBlasCscal clAmdBlasCscal_pfn
#undef clAmdBlasZscal
#define clAmdBlasZscal clAmdBlasZscal_pfn
#undef clAmdBlasCsscal
#define clAmdBlasCsscal clAmdBlasCsscal_pfn
#undef clAmdBlasZdscal
#define clAmdBlasZdscal clAmdBlasZdscal_pfn
#undef clAmdBlasScopy
#define clAmdBlasScopy clAmdBlasScopy_pfn
#undef clAmdBlasDcopy
#define clAmdBlasDcopy clAmdBlasDcopy_pfn
#undef clAmdBlasCcopy
#define clAmdBlasCcopy clAmdBlasCcopy_pfn
#undef clAmdBlasZcopy
#define clAmdBlasZcopy clAmdBlasZcopy_pfn
#undef clAmdBlasSaxpy
#define clAmdBlasSaxpy clAmdBlasSaxpy_pfn
#undef clAmdBlasDaxpy
#define clAmdBlasDaxpy clAmdBlasDaxpy_pfn
#undef clAmdBlasCaxpy
#define clAmdBlasCaxpy clAmdBlasCaxpy_pfn
#undef clAmdBlasZaxpy
#define clAmdBlasZaxpy clAmdBlasZaxpy_pfn
#undef clAmdBlasSdot
#define clAmdBlasSdot clAmdBlasSdot_pfn
#undef clAmdBlasDdot
#define clAmdBlasDdot clAmdBlasDdot_pfn
#undef clAmdBlasCdotu
#define clAmdBlasCdotu clAmdBlasCdotu_pfn
#undef clAmdBlasZdotu
#define clAmdBlasZdotu clAmdBlasZdotu_pfn
#undef clAmdBlasCdotc
#define clAmdBlasCdotc clAmdBlasCdotc_pfn
#undef clAmdBlasZdotc
#define clAmdBlasZdotc clAmdBlasZdotc_pfn
#undef clAmdBlasSrotg
#define clAmdBlasSrotg clAmdBlasSrotg_pfn
#undef clAmdBlasDrotg
#define clAmdBlasDrotg clAmdBlasDrotg_pfn
#undef clAmdBlasCrotg
#define clAmdBlasCrotg clAmdBlasCrotg_pfn
#undef clAmdBlasZrotg
#define clAmdBlasZrotg clAmdBlasZrotg_pfn
#undef clAmdBlasSrotmg
#define clAmdBlasSrotmg clAmdBlasSrotmg_pfn
#undef clAmdBlasDrotmg
#define clAmdBlasDrotmg clAmdBlasDrotmg_pfn
#undef clAmdBlasSrot
#define clAmdBlasSrot clAmdBlasSrot_pfn
#undef clAmdBlasDrot
#define clAmdBlasDrot clAmdBlasDrot_pfn
#undef clAmdBlasCsrot
#define clAmdBlasCsrot clAmdBlasCsrot_pfn
#undef clAmdBlasZdrot
#define clAmdBlasZdrot clAmdBlasZdrot_pfn
#undef clAmdBlasSrotm
#define clAmdBlasSrotm clAmdBlasSrotm_pfn
#undef clAmdBlasDrotm
#define clAmdBlasDrotm clAmdBlasDrotm_pfn
#undef clAmdBlasSnrm2
#define clAmdBlasSnrm2 clAmdBlasSnrm2_pfn
#undef clAmdBlasDnrm2
#define clAmdBlasDnrm2 clAmdBlasDnrm2_pfn
#undef clAmdBlasScnrm2
#define clAmdBlasScnrm2 clAmdBlasScnrm2_pfn
#undef clAmdBlasDznrm2
#define clAmdBlasDznrm2 clAmdBlasDznrm2_pfn
#undef clAmdBlasiSamax
#define clAmdBlasiSamax clAmdBlasiSamax_pfn
#undef clAmdBlasiDamax
#define clAmdBlasiDamax clAmdBlasiDamax_pfn
#undef clAmdBlasiCamax
#define clAmdBlasiCamax clAmdBlasiCamax_pfn
#undef clAmdBlasiZamax
#define clAmdBlasiZamax clAmdBlasiZamax_pfn
#undef clAmdBlasSasum
#define clAmdBlasSasum clAmdBlasSasum_pfn
#undef clAmdBlasDasum
#define clAmdBlasDasum clAmdBlasDasum_pfn
#undef clAmdBlasScasum
#define clAmdBlasScasum clAmdBlasScasum_pfn
#undef clAmdBlasDzasum
#define clAmdBlasDzasum clAmdBlasDzasum_pfn
#undef clAmdBlasSgemv
#define clAmdBlasSgemv clAmdBlasSgemv_pfn
#undef clAmdBlasDgemv
#define clAmdBlasDgemv clAmdBlasDgemv_pfn
#undef clAmdBlasCgemv
#define clAmdBlasCgemv clAmdBlasCgemv_pfn
#undef clAmdBlasZgemv
#define clAmdBlasZgemv clAmdBlasZgemv_pfn
#undef clAmdBlasSgemvEx
#define clAmdBlasSgemvEx clAmdBlasSgemvEx_pfn
#undef clAmdBlasDgemvEx
#define clAmdBlasDgemvEx clAmdBlasDgemvEx_pfn
#undef clAmdBlasCgemvEx
#define clAmdBlasCgemvEx clAmdBlasCgemvEx_pfn
#undef clAmdBlasZgemvEx
#define clAmdBlasZgemvEx clAmdBlasZgemvEx_pfn
#undef clAmdBlasSsymv
#define clAmdBlasSsymv clAmdBlasSsymv_pfn
#undef clAmdBlasDsymv
#define clAmdBlasDsymv clAmdBlasDsymv_pfn
#undef clAmdBlasSsymvEx
#define clAmdBlasSsymvEx clAmdBlasSsymvEx_pfn
#undef clAmdBlasDsymvEx
#define clAmdBlasDsymvEx clAmdBlasDsymvEx_pfn
#undef clAmdBlasChemv
#define clAmdBlasChemv clAmdBlasChemv_pfn
#undef clAmdBlasZhemv
#define clAmdBlasZhemv clAmdBlasZhemv_pfn
#undef clAmdBlasStrmv
#define clAmdBlasStrmv clAmdBlasStrmv_pfn
#undef clAmdBlasDtrmv
#define clAmdBlasDtrmv clAmdBlasDtrmv_pfn
#undef clAmdBlasCtrmv
#define clAmdBlasCtrmv clAmdBlasCtrmv_pfn
#undef clAmdBlasZtrmv
#define clAmdBlasZtrmv clAmdBlasZtrmv_pfn
#undef clAmdBlasStrsv
#define clAmdBlasStrsv clAmdBlasStrsv_pfn
#undef clAmdBlasDtrsv
#define clAmdBlasDtrsv clAmdBlasDtrsv_pfn
#undef clAmdBlasCtrsv
#define clAmdBlasCtrsv clAmdBlasCtrsv_pfn
#undef clAmdBlasZtrsv
#define clAmdBlasZtrsv clAmdBlasZtrsv_pfn
#undef clAmdBlasSger
#define clAmdBlasSger clAmdBlasSger_pfn
#undef clAmdBlasDger
#define clAmdBlasDger clAmdBlasDger_pfn
#undef clAmdBlasCgeru
#define clAmdBlasCgeru clAmdBlasCgeru_pfn
#undef clAmdBlasZgeru
#define clAmdBlasZgeru clAmdBlasZgeru_pfn
#undef clAmdBlasCgerc
#define clAmdBlasCgerc clAmdBlasCgerc_pfn
#undef clAmdBlasZgerc
#define clAmdBlasZgerc clAmdBlasZgerc_pfn
#undef clAmdBlasSsyr
#define clAmdBlasSsyr clAmdBlasSsyr_pfn
#undef clAmdBlasDsyr
#define clAmdBlasDsyr clAmdBlasDsyr_pfn
#undef clAmdBlasCher
#define clAmdBlasCher clAmdBlasCher_pfn
#undef clAmdBlasZher
#define clAmdBlasZher clAmdBlasZher_pfn
#undef clAmdBlasSsyr2
#define clAmdBlasSsyr2 clAmdBlasSsyr2_pfn
#undef clAmdBlasDsyr2
#define clAmdBlasDsyr2 clAmdBlasDsyr2_pfn
#undef clAmdBlasCher2
#define clAmdBlasCher2 clAmdBlasCher2_pfn
#undef clAmdBlasZher2
#define clAmdBlasZher2 clAmdBlasZher2_pfn
#undef clAmdBlasStpmv
#define clAmdBlasStpmv clAmdBlasStpmv_pfn
#undef clAmdBlasDtpmv
#define clAmdBlasDtpmv clAmdBlasDtpmv_pfn
#undef clAmdBlasCtpmv
#define clAmdBlasCtpmv clAmdBlasCtpmv_pfn
#undef clAmdBlasZtpmv
#define clAmdBlasZtpmv clAmdBlasZtpmv_pfn
#undef clAmdBlasStpsv
#define clAmdBlasStpsv clAmdBlasStpsv_pfn
#undef clAmdBlasDtpsv
#define clAmdBlasDtpsv clAmdBlasDtpsv_pfn
#undef clAmdBlasCtpsv
#define clAmdBlasCtpsv clAmdBlasCtpsv_pfn
#undef clAmdBlasZtpsv
#define clAmdBlasZtpsv clAmdBlasZtpsv_pfn
#undef clAmdBlasSspmv
#define clAmdBlasSspmv clAmdBlasSspmv_pfn
#undef clAmdBlasDspmv
#define clAmdBlasDspmv clAmdBlasDspmv_pfn
#undef clAmdBlasChpmv
#define clAmdBlasChpmv clAmdBlasChpmv_pfn
#undef clAmdBlasZhpmv
#define clAmdBlasZhpmv clAmdBlasZhpmv_pfn
#undef clAmdBlasSspr
#define clAmdBlasSspr clAmdBlasSspr_pfn
#undef clAmdBlasDspr
#define clAmdBlasDspr clAmdBlasDspr_pfn
#undef clAmdBlasChpr
#define clAmdBlasChpr clAmdBlasChpr_pfn
#undef clAmdBlasZhpr
#define clAmdBlasZhpr clAmdBlasZhpr_pfn
#undef clAmdBlasSspr2
#define clAmdBlasSspr2 clAmdBlasSspr2_pfn
#undef clAmdBlasDspr2
#define clAmdBlasDspr2 clAmdBlasDspr2_pfn
#undef clAmdBlasChpr2
#define clAmdBlasChpr2 clAmdBlasChpr2_pfn
#undef clAmdBlasZhpr2
#define clAmdBlasZhpr2 clAmdBlasZhpr2_pfn
#undef clAmdBlasSgbmv
#define clAmdBlasSgbmv clAmdBlasSgbmv_pfn
#undef clAmdBlasDgbmv
#define clAmdBlasDgbmv clAmdBlasDgbmv_pfn
#undef clAmdBlasCgbmv
#define clAmdBlasCgbmv clAmdBlasCgbmv_pfn
#undef clAmdBlasZgbmv
#define clAmdBlasZgbmv clAmdBlasZgbmv_pfn
#undef clAmdBlasStbmv
#define clAmdBlasStbmv clAmdBlasStbmv_pfn
#undef clAmdBlasDtbmv
#define clAmdBlasDtbmv clAmdBlasDtbmv_pfn
#undef clAmdBlasCtbmv
#define clAmdBlasCtbmv clAmdBlasCtbmv_pfn
#undef clAmdBlasZtbmv
#define clAmdBlasZtbmv clAmdBlasZtbmv_pfn
#undef clAmdBlasSsbmv
#define clAmdBlasSsbmv clAmdBlasSsbmv_pfn
#undef clAmdBlasDsbmv
#define clAmdBlasDsbmv clAmdBlasDsbmv_pfn
#undef clAmdBlasChbmv
#define clAmdBlasChbmv clAmdBlasChbmv_pfn
#undef clAmdBlasZhbmv
#define clAmdBlasZhbmv clAmdBlasZhbmv_pfn
#undef clAmdBlasStbsv
#define clAmdBlasStbsv clAmdBlasStbsv_pfn
#undef clAmdBlasDtbsv
#define clAmdBlasDtbsv clAmdBlasDtbsv_pfn
#undef clAmdBlasCtbsv
#define clAmdBlasCtbsv clAmdBlasCtbsv_pfn
#undef clAmdBlasZtbsv
#define clAmdBlasZtbsv clAmdBlasZtbsv_pfn
#undef clAmdBlasSgemm
#define clAmdBlasSgemm clAmdBlasSgemm_pfn
#undef clAmdBlasDgemm
#define clAmdBlasDgemm clAmdBlasDgemm_pfn
#undef clAmdBlasCgemm
#define clAmdBlasCgemm clAmdBlasCgemm_pfn
#undef clAmdBlasZgemm
#define clAmdBlasZgemm clAmdBlasZgemm_pfn
#undef clAmdBlasSgemmEx
#define clAmdBlasSgemmEx clAmdBlasSgemmEx_pfn
#undef clAmdBlasDgemmEx
#define clAmdBlasDgemmEx clAmdBlasDgemmEx_pfn
#undef clAmdBlasCgemmEx
#define clAmdBlasCgemmEx clAmdBlasCgemmEx_pfn
#undef clAmdBlasZgemmEx
#define clAmdBlasZgemmEx clAmdBlasZgemmEx_pfn
#undef clAmdBlasStrmm
#define clAmdBlasStrmm clAmdBlasStrmm_pfn
#undef clAmdBlasDtrmm
#define clAmdBlasDtrmm clAmdBlasDtrmm_pfn
#undef clAmdBlasCtrmm
#define clAmdBlasCtrmm clAmdBlasCtrmm_pfn
#undef clAmdBlasZtrmm
#define clAmdBlasZtrmm clAmdBlasZtrmm_pfn
#undef clAmdBlasStrmmEx
#define clAmdBlasStrmmEx clAmdBlasStrmmEx_pfn
#undef clAmdBlasDtrmmEx
#define clAmdBlasDtrmmEx clAmdBlasDtrmmEx_pfn
#undef clAmdBlasCtrmmEx
#define clAmdBlasCtrmmEx clAmdBlasCtrmmEx_pfn
#undef clAmdBlasZtrmmEx
#define clAmdBlasZtrmmEx clAmdBlasZtrmmEx_pfn
#undef clAmdBlasStrsm
#define clAmdBlasStrsm clAmdBlasStrsm_pfn
#undef clAmdBlasDtrsm
#define clAmdBlasDtrsm clAmdBlasDtrsm_pfn
#undef clAmdBlasCtrsm
#define clAmdBlasCtrsm clAmdBlasCtrsm_pfn
#undef clAmdBlasZtrsm
#define clAmdBlasZtrsm clAmdBlasZtrsm_pfn
#undef clAmdBlasStrsmEx
#define clAmdBlasStrsmEx clAmdBlasStrsmEx_pfn
#undef clAmdBlasDtrsmEx
#define clAmdBlasDtrsmEx clAmdBlasDtrsmEx_pfn
#undef clAmdBlasCtrsmEx
#define clAmdBlasCtrsmEx clAmdBlasCtrsmEx_pfn
#undef clAmdBlasZtrsmEx
#define clAmdBlasZtrsmEx clAmdBlasZtrsmEx_pfn
#undef clAmdBlasSsyrk
#define clAmdBlasSsyrk clAmdBlasSsyrk_pfn
#undef clAmdBlasDsyrk
#define clAmdBlasDsyrk clAmdBlasDsyrk_pfn
#undef clAmdBlasCsyrk
#define clAmdBlasCsyrk clAmdBlasCsyrk_pfn
#undef clAmdBlasZsyrk
#define clAmdBlasZsyrk clAmdBlasZsyrk_pfn
#undef clAmdBlasSsyrkEx
#define clAmdBlasSsyrkEx clAmdBlasSsyrkEx_pfn
#undef clAmdBlasDsyrkEx
#define clAmdBlasDsyrkEx clAmdBlasDsyrkEx_pfn
#undef clAmdBlasCsyrkEx
#define clAmdBlasCsyrkEx clAmdBlasCsyrkEx_pfn
#undef clAmdBlasZsyrkEx
#define clAmdBlasZsyrkEx clAmdBlasZsyrkEx_pfn
#undef clAmdBlasSsyr2k
#define clAmdBlasSsyr2k clAmdBlasSsyr2k_pfn
#undef clAmdBlasDsyr2k
#define clAmdBlasDsyr2k clAmdBlasDsyr2k_pfn
#undef clAmdBlasCsyr2k
#define clAmdBlasCsyr2k clAmdBlasCsyr2k_pfn
#undef clAmdBlasZsyr2k
#define clAmdBlasZsyr2k clAmdBlasZsyr2k_pfn
#undef clAmdBlasSsyr2kEx
#define clAmdBlasSsyr2kEx clAmdBlasSsyr2kEx_pfn
#undef clAmdBlasDsyr2kEx
#define clAmdBlasDsyr2kEx clAmdBlasDsyr2kEx_pfn
#undef clAmdBlasCsyr2kEx
#define clAmdBlasCsyr2kEx clAmdBlasCsyr2kEx_pfn
#undef clAmdBlasZsyr2kEx
#define clAmdBlasZsyr2kEx clAmdBlasZsyr2kEx_pfn
#undef clAmdBlasSsymm
#define clAmdBlasSsymm clAmdBlasSsymm_pfn
#undef clAmdBlasDsymm
#define clAmdBlasDsymm clAmdBlasDsymm_pfn
#undef clAmdBlasCsymm
#define clAmdBlasCsymm clAmdBlasCsymm_pfn
#undef clAmdBlasZsymm
#define clAmdBlasZsymm clAmdBlasZsymm_pfn
#undef clAmdBlasChemm
#define clAmdBlasChemm clAmdBlasChemm_pfn
#undef clAmdBlasZhemm
#define clAmdBlasZhemm clAmdBlasZhemm_pfn
#undef clAmdBlasCherk
#define clAmdBlasCherk clAmdBlasCherk_pfn
#undef clAmdBlasZherk
#define clAmdBlasZherk clAmdBlasZherk_pfn
#undef clAmdBlasCher2k
#define clAmdBlasCher2k clAmdBlasCher2k_pfn
#undef clAmdBlasZher2k
#define clAmdBlasZher2k clAmdBlasZher2k_pfn
#ifndef CL_RUNTIME_EXPORT
#if (defined(BUILD_SHARED_LIBS) || defined(OPENCV_OCL_SHARED)) && (defined WIN32 || defined _WIN32 || defined WINCE)
#define CL_RUNTIME_EXPORT __declspec(dllimport)
#else
#define CL_RUNTIME_EXPORT
#endif
#endif
// generated by parser_clamdblas.py
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasGetVersion)(cl_uint* major, cl_uint* minor, cl_uint* patch);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSetup)();
extern CL_RUNTIME_EXPORT void (*clAmdBlasTeardown)();
extern CL_RUNTIME_EXPORT cl_ulong (*clAmdBlasAddScratchImage)(cl_context context, size_t width, size_t height, clAmdBlasStatus* status);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasRemoveScratchImage)(cl_ulong imageID);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSscal)(size_t N, cl_float alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDscal)(size_t N, cl_double alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCscal)(size_t N, cl_float2 alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZscal)(size_t N, cl_double2 alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsscal)(size_t N, cl_float alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdscal)(size_t N, cl_double alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasScopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSaxpy)(size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDaxpy)(size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCaxpy)(size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZaxpy)(size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSdot)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDdot)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCdotu)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdotu)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCdotc)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdotc)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrotg)(cl_mem SA, size_t offSA, cl_mem SB, size_t offSB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrotg)(cl_mem DA, size_t offDA, cl_mem DB, size_t offDB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCrotg)(cl_mem CA, size_t offCA, cl_mem CB, size_t offCB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZrotg)(cl_mem CA, size_t offCA, cl_mem CB, size_t offCB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrotmg)(cl_mem SD1, size_t offSD1, cl_mem SD2, size_t offSD2, cl_mem SX1, size_t offSX1, const cl_mem SY1, size_t offSY1, cl_mem SPARAM, size_t offSparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrotmg)(cl_mem DD1, size_t offDD1, cl_mem DD2, size_t offDD2, cl_mem DX1, size_t offDX1, const cl_mem DY1, size_t offDY1, cl_mem DPARAM, size_t offDparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_float C, cl_float S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_double C, cl_double S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_float C, cl_float S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_double C, cl_double S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrotm)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, const cl_mem SPARAM, size_t offSparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrotm)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, const cl_mem DPARAM, size_t offDparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasScnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDznrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiSamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiDamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiCamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiZamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasScasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDzasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, FloatComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, DoubleComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, FloatComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, DoubleComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsymv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsymv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsymvEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsymvEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChemv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, FloatComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, FloatComplex beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhemv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, DoubleComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, DoubleComplex beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSger)(clAmdBlasOrder order, size_t M, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDger)(clAmdBlasOrder order, size_t M, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgeru)(clAmdBlasOrder order, size_t M, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgeru)(clAmdBlasOrder order, size_t M, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgerc)(clAmdBlasOrder order, size_t M, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgerc)(clAmdBlasOrder order, size_t M, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCher)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZher)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCher2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZher2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSspmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDspmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float2 alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double2 alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSspr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDspr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChpr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhpr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSspr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDspr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChpr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhpr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_float beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_double beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, FloatComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, DoubleComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t lda, cl_float beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t lda, cl_double beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t lda, FloatComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t lda, DoubleComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_float beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_double beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, FloatComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, DoubleComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChemm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhemm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCherk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, float alpha, const cl_mem A, size_t offa, size_t lda, float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZherk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, double alpha, const cl_mem A, size_t offa, size_t lda, double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCher2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZher2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
#endif
#endif // __OPENCV_OCL_CLAMDBLAS_RUNTIME_HPP__
//
// AUTOGENERATED, DO NOT EDIT
//
#ifndef __OPENCV_OCL_CLAMDFFT_RUNTIME_HPP__
#define __OPENCV_OCL_CLAMDFFT_RUNTIME_HPP__
#ifdef HAVE_CLAMDFFT
// generated by parser_clamdfft.py
#define clAmdFftSetup clAmdFftSetup_
#define clAmdFftTeardown clAmdFftTeardown_
#define clAmdFftGetVersion clAmdFftGetVersion_
#define clAmdFftCreateDefaultPlan clAmdFftCreateDefaultPlan_
#define clAmdFftCopyPlan clAmdFftCopyPlan_
#define clAmdFftBakePlan clAmdFftBakePlan_
#define clAmdFftDestroyPlan clAmdFftDestroyPlan_
#define clAmdFftGetPlanContext clAmdFftGetPlanContext_
#define clAmdFftGetPlanPrecision clAmdFftGetPlanPrecision_
#define clAmdFftSetPlanPrecision clAmdFftSetPlanPrecision_
#define clAmdFftGetPlanScale clAmdFftGetPlanScale_
#define clAmdFftSetPlanScale clAmdFftSetPlanScale_
#define clAmdFftGetPlanBatchSize clAmdFftGetPlanBatchSize_
#define clAmdFftSetPlanBatchSize clAmdFftSetPlanBatchSize_
#define clAmdFftGetPlanDim clAmdFftGetPlanDim_
#define clAmdFftSetPlanDim clAmdFftSetPlanDim_
#define clAmdFftGetPlanLength clAmdFftGetPlanLength_
#define clAmdFftSetPlanLength clAmdFftSetPlanLength_
#define clAmdFftGetPlanInStride clAmdFftGetPlanInStride_
#define clAmdFftSetPlanInStride clAmdFftSetPlanInStride_
#define clAmdFftGetPlanOutStride clAmdFftGetPlanOutStride_
#define clAmdFftSetPlanOutStride clAmdFftSetPlanOutStride_
#define clAmdFftGetPlanDistance clAmdFftGetPlanDistance_
#define clAmdFftSetPlanDistance clAmdFftSetPlanDistance_
#define clAmdFftGetLayout clAmdFftGetLayout_
#define clAmdFftSetLayout clAmdFftSetLayout_
#define clAmdFftGetResultLocation clAmdFftGetResultLocation_
#define clAmdFftSetResultLocation clAmdFftSetResultLocation_
#define clAmdFftGetPlanTransposeResult clAmdFftGetPlanTransposeResult_
#define clAmdFftSetPlanTransposeResult clAmdFftSetPlanTransposeResult_
#define clAmdFftGetTmpBufSize clAmdFftGetTmpBufSize_
#define clAmdFftEnqueueTransform clAmdFftEnqueueTransform_
#include <clAmdFft.h>
// generated by parser_clamdfft.py
#undef clAmdFftSetup
#define clAmdFftSetup clAmdFftSetup_pfn
#undef clAmdFftTeardown
#define clAmdFftTeardown clAmdFftTeardown_pfn
#undef clAmdFftGetVersion
#define clAmdFftGetVersion clAmdFftGetVersion_pfn
#undef clAmdFftCreateDefaultPlan
#define clAmdFftCreateDefaultPlan clAmdFftCreateDefaultPlan_pfn
#undef clAmdFftCopyPlan
#define clAmdFftCopyPlan clAmdFftCopyPlan_pfn
#undef clAmdFftBakePlan
#define clAmdFftBakePlan clAmdFftBakePlan_pfn
#undef clAmdFftDestroyPlan
#define clAmdFftDestroyPlan clAmdFftDestroyPlan_pfn
#undef clAmdFftGetPlanContext
#define clAmdFftGetPlanContext clAmdFftGetPlanContext_pfn
#undef clAmdFftGetPlanPrecision
#define clAmdFftGetPlanPrecision clAmdFftGetPlanPrecision_pfn
#undef clAmdFftSetPlanPrecision
#define clAmdFftSetPlanPrecision clAmdFftSetPlanPrecision_pfn
#undef clAmdFftGetPlanScale
#define clAmdFftGetPlanScale clAmdFftGetPlanScale_pfn
#undef clAmdFftSetPlanScale
#define clAmdFftSetPlanScale clAmdFftSetPlanScale_pfn
#undef clAmdFftGetPlanBatchSize
#define clAmdFftGetPlanBatchSize clAmdFftGetPlanBatchSize_pfn
#undef clAmdFftSetPlanBatchSize
#define clAmdFftSetPlanBatchSize clAmdFftSetPlanBatchSize_pfn
#undef clAmdFftGetPlanDim
#define clAmdFftGetPlanDim clAmdFftGetPlanDim_pfn
#undef clAmdFftSetPlanDim
#define clAmdFftSetPlanDim clAmdFftSetPlanDim_pfn
#undef clAmdFftGetPlanLength
#define clAmdFftGetPlanLength clAmdFftGetPlanLength_pfn
#undef clAmdFftSetPlanLength
#define clAmdFftSetPlanLength clAmdFftSetPlanLength_pfn
#undef clAmdFftGetPlanInStride
#define clAmdFftGetPlanInStride clAmdFftGetPlanInStride_pfn
#undef clAmdFftSetPlanInStride
#define clAmdFftSetPlanInStride clAmdFftSetPlanInStride_pfn
#undef clAmdFftGetPlanOutStride
#define clAmdFftGetPlanOutStride clAmdFftGetPlanOutStride_pfn
#undef clAmdFftSetPlanOutStride
#define clAmdFftSetPlanOutStride clAmdFftSetPlanOutStride_pfn
#undef clAmdFftGetPlanDistance
#define clAmdFftGetPlanDistance clAmdFftGetPlanDistance_pfn
#undef clAmdFftSetPlanDistance
#define clAmdFftSetPlanDistance clAmdFftSetPlanDistance_pfn
#undef clAmdFftGetLayout
#define clAmdFftGetLayout clAmdFftGetLayout_pfn
#undef clAmdFftSetLayout
#define clAmdFftSetLayout clAmdFftSetLayout_pfn
#undef clAmdFftGetResultLocation
#define clAmdFftGetResultLocation clAmdFftGetResultLocation_pfn
#undef clAmdFftSetResultLocation
#define clAmdFftSetResultLocation clAmdFftSetResultLocation_pfn
#undef clAmdFftGetPlanTransposeResult
#define clAmdFftGetPlanTransposeResult clAmdFftGetPlanTransposeResult_pfn
#undef clAmdFftSetPlanTransposeResult
#define clAmdFftSetPlanTransposeResult clAmdFftSetPlanTransposeResult_pfn
#undef clAmdFftGetTmpBufSize
#define clAmdFftGetTmpBufSize clAmdFftGetTmpBufSize_pfn
#undef clAmdFftEnqueueTransform
#define clAmdFftEnqueueTransform clAmdFftEnqueueTransform_pfn
#ifndef CL_RUNTIME_EXPORT
#if (defined(BUILD_SHARED_LIBS) || defined(OPENCV_OCL_SHARED)) && (defined WIN32 || defined _WIN32 || defined WINCE)
#define CL_RUNTIME_EXPORT __declspec(dllimport)
#else
#define CL_RUNTIME_EXPORT
#endif
#endif
// generated by parser_clamdfft.py
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetup)(const clAmdFftSetupData* setupData);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftTeardown)();
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetVersion)(cl_uint* major, cl_uint* minor, cl_uint* patch);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftCreateDefaultPlan)(clAmdFftPlanHandle* plHandle, cl_context context, const clAmdFftDim dim, const size_t* clLengths);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftCopyPlan)(clAmdFftPlanHandle* out_plHandle, cl_context new_context, clAmdFftPlanHandle in_plHandle);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftBakePlan)(clAmdFftPlanHandle plHandle, cl_uint numQueues, cl_command_queue* commQueueFFT, void (CL_CALLBACK* pfn_notify) (clAmdFftPlanHandle plHandle, void* user_data), void* user_data);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftDestroyPlan)(clAmdFftPlanHandle* plHandle);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanContext)(const clAmdFftPlanHandle plHandle, cl_context* context);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanPrecision)(const clAmdFftPlanHandle plHandle, clAmdFftPrecision* precision);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanPrecision)(clAmdFftPlanHandle plHandle, clAmdFftPrecision precision);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanScale)(const clAmdFftPlanHandle plHandle, clAmdFftDirection dir, cl_float* scale);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanScale)(clAmdFftPlanHandle plHandle, clAmdFftDirection dir, cl_float scale);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanBatchSize)(const clAmdFftPlanHandle plHandle, size_t* batchSize);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanBatchSize)(clAmdFftPlanHandle plHandle, size_t batchSize);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanDim)(const clAmdFftPlanHandle plHandle, clAmdFftDim* dim, cl_uint* size);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanDim)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanLength)(const clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clLengths);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanLength)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim, const size_t* clLengths);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanInStride)(const clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanInStride)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanOutStride)(const clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanOutStride)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanDistance)(const clAmdFftPlanHandle plHandle, size_t* iDist, size_t* oDist);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanDistance)(clAmdFftPlanHandle plHandle, size_t iDist, size_t oDist);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetLayout)(const clAmdFftPlanHandle plHandle, clAmdFftLayout* iLayout, clAmdFftLayout* oLayout);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetLayout)(clAmdFftPlanHandle plHandle, clAmdFftLayout iLayout, clAmdFftLayout oLayout);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetResultLocation)(const clAmdFftPlanHandle plHandle, clAmdFftResultLocation* placeness);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetResultLocation)(clAmdFftPlanHandle plHandle, clAmdFftResultLocation placeness);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanTransposeResult)(const clAmdFftPlanHandle plHandle, clAmdFftResultTransposed* transposed);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanTransposeResult)(clAmdFftPlanHandle plHandle, clAmdFftResultTransposed transposed);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetTmpBufSize)(const clAmdFftPlanHandle plHandle, size_t* buffersize);
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftEnqueueTransform)(clAmdFftPlanHandle plHandle, clAmdFftDirection dir, cl_uint numQueuesAndEvents, cl_command_queue* commQueues, cl_uint numWaitEvents, const cl_event* waitEvents, cl_event* outEvents, cl_mem* inputBuffers, cl_mem* outputBuffers, cl_mem tmpBuffer);
#endif
#endif // __OPENCV_OCL_CLAMDFFT_RUNTIME_HPP__
...@@ -48,11 +48,7 @@ ...@@ -48,11 +48,7 @@
#include "opencv2/ocl/ocl.hpp" #include "opencv2/ocl/ocl.hpp"
#if defined __APPLE__ #include "opencv2/ocl/cl_runtime/cl_runtime.hpp"
#include <OpenCL/opencl.h>
#else
#include <CL/opencl.h>
#endif
namespace cv namespace cv
{ {
......
#include "precomp.hpp"
#if defined(HAVE_OPENCL) && (!defined(__APPLE__) || defined(IOS))
#if defined(BUILD_SHARED_LIBS) && (defined WIN32 || defined _WIN32 || defined WINCE)
#define CL_RUNTIME_EXPORT __declspec(dllexport)
#else
#define CL_RUNTIME_EXPORT
#endif
#include "opencv2/ocl/cl_runtime/cl_runtime.hpp"
#if defined(__APPLE__)
#include <dlfcn.h>
static void* AppleCLGetProcAddress(const char* name)
{
static void * image = NULL;
if (!image)
{
image = dlopen("/System/Library/Frameworks/OpenCL.framework/Versions/Current/OpenCL", RTLD_LAZY | RTLD_GLOBAL);
if (!image)
return NULL;
}
return dlsym(image, name);
}
#define CV_CL_GET_PROC_ADDRESS(name) AppleCLGetProcAddress(name)
#endif // __APPLE__
#if defined(_WIN32)
static void* WinGetProcAddress(const char* name)
{
static HMODULE opencl_module = NULL;
if (!opencl_module)
{
opencl_module = GetModuleHandleA("OpenCL.dll");
if (!opencl_module)
{
const char* name = "OpenCL.dll";
const char* envOpenCLBinary = getenv("OPENCV_OPENCL_BINARY");
if (envOpenCLBinary)
name = envOpenCLBinary;
opencl_module = LoadLibraryA(name);
if (!opencl_module)
return NULL;
}
}
return (void*)GetProcAddress(opencl_module, name);
}
#define CV_CL_GET_PROC_ADDRESS(name) WinGetProcAddress(name)
#endif // _WIN32
#if defined(linux)
#include <dlfcn.h>
#include <stdio.h>
static void* GetProcAddress (const char* name)
{
static void* h = NULL;
if (!h)
{
const char* name = "libOpenCL.so";
const char* envOpenCLBinary = getenv("OPENCV_OPENCL_BINARY");
if (envOpenCLBinary)
name = envOpenCLBinary;
h = dlopen(name, RTLD_LAZY | RTLD_GLOBAL);
if (!h)
return NULL;
}
return dlsym(h, name);
}
#define CV_CL_GET_PROC_ADDRESS(name) GetProcAddress(name)
#endif
#ifndef CV_CL_GET_PROC_ADDRESS
#define CV_CL_GET_PROC_ADDRESS(name) NULL
#endif
static void* opencl_check_fn(int ID)
{
extern const char* opencl_fn_names[];
void* func = CV_CL_GET_PROC_ADDRESS(opencl_fn_names[ID]);
if (!func)
{
std::ostringstream msg;
msg << "OpenCL function is not available: [" << opencl_fn_names[ID] << "]";
CV_Error(CV_StsBadFunc, msg.str());
}
extern void* opencl_fn_ptrs[];
*(void**)(opencl_fn_ptrs[ID]) = func;
return func;
}
#if defined(HAVE_OPENCL12)
#include "cl_runtime_opencl12_impl.hpp"
#elif defined(HAVE_OPENCL11)
#include "cl_runtime_opencl11_impl.hpp"
#else
#error Invalid OpenCL configuration
#endif
#endif
//
// AUTOGENERATED, DO NOT EDIT
//
// generated by parser_cl.py
enum OPENCL_FN_ID {
OPENCL_FN_clGetPlatformIDs = 0,
OPENCL_FN_clGetPlatformInfo,
OPENCL_FN_clGetDeviceIDs,
OPENCL_FN_clGetDeviceInfo,
OPENCL_FN_clCreateContext,
OPENCL_FN_clCreateContextFromType,
OPENCL_FN_clRetainContext,
OPENCL_FN_clReleaseContext,
OPENCL_FN_clGetContextInfo,
OPENCL_FN_clCreateCommandQueue,
OPENCL_FN_clRetainCommandQueue,
OPENCL_FN_clReleaseCommandQueue,
OPENCL_FN_clGetCommandQueueInfo,
OPENCL_FN_clSetCommandQueueProperty,
OPENCL_FN_clCreateBuffer,
OPENCL_FN_clCreateSubBuffer,
OPENCL_FN_clCreateImage2D,
OPENCL_FN_clCreateImage3D,
OPENCL_FN_clRetainMemObject,
OPENCL_FN_clReleaseMemObject,
OPENCL_FN_clGetSupportedImageFormats,
OPENCL_FN_clGetMemObjectInfo,
OPENCL_FN_clGetImageInfo,
OPENCL_FN_clSetMemObjectDestructorCallback,
OPENCL_FN_clCreateSampler,
OPENCL_FN_clRetainSampler,
OPENCL_FN_clReleaseSampler,
OPENCL_FN_clGetSamplerInfo,
OPENCL_FN_clCreateProgramWithSource,
OPENCL_FN_clCreateProgramWithBinary,
OPENCL_FN_clRetainProgram,
OPENCL_FN_clReleaseProgram,
OPENCL_FN_clBuildProgram,
OPENCL_FN_clUnloadCompiler,
OPENCL_FN_clGetProgramInfo,
OPENCL_FN_clGetProgramBuildInfo,
OPENCL_FN_clCreateKernel,
OPENCL_FN_clCreateKernelsInProgram,
OPENCL_FN_clRetainKernel,
OPENCL_FN_clReleaseKernel,
OPENCL_FN_clSetKernelArg,
OPENCL_FN_clGetKernelInfo,
OPENCL_FN_clGetKernelWorkGroupInfo,
OPENCL_FN_clWaitForEvents,
OPENCL_FN_clGetEventInfo,
OPENCL_FN_clCreateUserEvent,
OPENCL_FN_clRetainEvent,
OPENCL_FN_clReleaseEvent,
OPENCL_FN_clSetUserEventStatus,
OPENCL_FN_clSetEventCallback,
OPENCL_FN_clGetEventProfilingInfo,
OPENCL_FN_clFlush,
OPENCL_FN_clFinish,
OPENCL_FN_clEnqueueReadBuffer,
OPENCL_FN_clEnqueueReadBufferRect,
OPENCL_FN_clEnqueueWriteBuffer,
OPENCL_FN_clEnqueueWriteBufferRect,
OPENCL_FN_clEnqueueCopyBuffer,
OPENCL_FN_clEnqueueCopyBufferRect,
OPENCL_FN_clEnqueueReadImage,
OPENCL_FN_clEnqueueWriteImage,
OPENCL_FN_clEnqueueCopyImage,
OPENCL_FN_clEnqueueCopyImageToBuffer,
OPENCL_FN_clEnqueueCopyBufferToImage,
OPENCL_FN_clEnqueueMapBuffer,
OPENCL_FN_clEnqueueMapImage,
OPENCL_FN_clEnqueueUnmapMemObject,
OPENCL_FN_clEnqueueNDRangeKernel,
OPENCL_FN_clEnqueueTask,
OPENCL_FN_clEnqueueNativeKernel,
OPENCL_FN_clEnqueueMarker,
OPENCL_FN_clEnqueueWaitForEvents,
OPENCL_FN_clEnqueueBarrier,
OPENCL_FN_clGetExtensionFunctionAddress,
};
// generated by parser_cl.py
const char* opencl_fn_names[] = {
"clGetPlatformIDs",
"clGetPlatformInfo",
"clGetDeviceIDs",
"clGetDeviceInfo",
"clCreateContext",
"clCreateContextFromType",
"clRetainContext",
"clReleaseContext",
"clGetContextInfo",
"clCreateCommandQueue",
"clRetainCommandQueue",
"clReleaseCommandQueue",
"clGetCommandQueueInfo",
"clSetCommandQueueProperty",
"clCreateBuffer",
"clCreateSubBuffer",
"clCreateImage2D",
"clCreateImage3D",
"clRetainMemObject",
"clReleaseMemObject",
"clGetSupportedImageFormats",
"clGetMemObjectInfo",
"clGetImageInfo",
"clSetMemObjectDestructorCallback",
"clCreateSampler",
"clRetainSampler",
"clReleaseSampler",
"clGetSamplerInfo",
"clCreateProgramWithSource",
"clCreateProgramWithBinary",
"clRetainProgram",
"clReleaseProgram",
"clBuildProgram",
"clUnloadCompiler",
"clGetProgramInfo",
"clGetProgramBuildInfo",
"clCreateKernel",
"clCreateKernelsInProgram",
"clRetainKernel",
"clReleaseKernel",
"clSetKernelArg",
"clGetKernelInfo",
"clGetKernelWorkGroupInfo",
"clWaitForEvents",
"clGetEventInfo",
"clCreateUserEvent",
"clRetainEvent",
"clReleaseEvent",
"clSetUserEventStatus",
"clSetEventCallback",
"clGetEventProfilingInfo",
"clFlush",
"clFinish",
"clEnqueueReadBuffer",
"clEnqueueReadBufferRect",
"clEnqueueWriteBuffer",
"clEnqueueWriteBufferRect",
"clEnqueueCopyBuffer",
"clEnqueueCopyBufferRect",
"clEnqueueReadImage",
"clEnqueueWriteImage",
"clEnqueueCopyImage",
"clEnqueueCopyImageToBuffer",
"clEnqueueCopyBufferToImage",
"clEnqueueMapBuffer",
"clEnqueueMapImage",
"clEnqueueUnmapMemObject",
"clEnqueueNDRangeKernel",
"clEnqueueTask",
"clEnqueueNativeKernel",
"clEnqueueMarker",
"clEnqueueWaitForEvents",
"clEnqueueBarrier",
"clGetExtensionFunctionAddress",
};
namespace {
// generated by parser_cl.py
template <int ID, typename _R>
struct opencl_fn0
{
typedef _R (*FN)();
static _R switch_fn()
{ return ((FN)opencl_check_fn(ID))(); }
};
template <int ID, typename _R, typename _T1>
struct opencl_fn1
{
typedef _R (*FN)(_T1);
static _R switch_fn(_T1 p1)
{ return ((FN)opencl_check_fn(ID))(p1); }
};
template <int ID, typename _R, typename _T1, typename _T2>
struct opencl_fn2
{
typedef _R (*FN)(_T1, _T2);
static _R switch_fn(_T1 p1, _T2 p2)
{ return ((FN)opencl_check_fn(ID))(p1, p2); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3>
struct opencl_fn3
{
typedef _R (*FN)(_T1, _T2, _T3);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4>
struct opencl_fn4
{
typedef _R (*FN)(_T1, _T2, _T3, _T4);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5>
struct opencl_fn5
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6>
struct opencl_fn6
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7>
struct opencl_fn7
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8>
struct opencl_fn8
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9>
struct opencl_fn9
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10>
struct opencl_fn10
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11>
struct opencl_fn11
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12>
struct opencl_fn12
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13>
struct opencl_fn13
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14>
struct opencl_fn14
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); }
};
}
// generated by parser_cl.py
cl_int (*clGetPlatformIDs)(cl_uint, cl_platform_id*, cl_uint*) = opencl_fn3<OPENCL_FN_clGetPlatformIDs, cl_int, cl_uint, cl_platform_id*, cl_uint*>::switch_fn;
cl_int (*clGetPlatformInfo)(cl_platform_id, cl_platform_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetPlatformInfo, cl_int, cl_platform_id, cl_platform_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clGetDeviceIDs)(cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*) = opencl_fn5<OPENCL_FN_clGetDeviceIDs, cl_int, cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*>::switch_fn;
cl_int (*clGetDeviceInfo)(cl_device_id, cl_device_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetDeviceInfo, cl_int, cl_device_id, cl_device_info, size_t, void*, size_t*>::switch_fn;
cl_context (*clCreateContext)(const cl_context_properties*, cl_uint, const cl_device_id*, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*) = opencl_fn6<OPENCL_FN_clCreateContext, cl_context, const cl_context_properties*, cl_uint, const cl_device_id*, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*>::switch_fn;
cl_context (*clCreateContextFromType)(const cl_context_properties*, cl_device_type, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*) = opencl_fn5<OPENCL_FN_clCreateContextFromType, cl_context, const cl_context_properties*, cl_device_type, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*>::switch_fn;
cl_int (*clRetainContext)(cl_context) = opencl_fn1<OPENCL_FN_clRetainContext, cl_int, cl_context>::switch_fn;
cl_int (*clReleaseContext)(cl_context) = opencl_fn1<OPENCL_FN_clReleaseContext, cl_int, cl_context>::switch_fn;
cl_int (*clGetContextInfo)(cl_context, cl_context_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetContextInfo, cl_int, cl_context, cl_context_info, size_t, void*, size_t*>::switch_fn;
cl_command_queue (*clCreateCommandQueue)(cl_context, cl_device_id, cl_command_queue_properties, cl_int*) = opencl_fn4<OPENCL_FN_clCreateCommandQueue, cl_command_queue, cl_context, cl_device_id, cl_command_queue_properties, cl_int*>::switch_fn;
cl_int (*clRetainCommandQueue)(cl_command_queue) = opencl_fn1<OPENCL_FN_clRetainCommandQueue, cl_int, cl_command_queue>::switch_fn;
cl_int (*clReleaseCommandQueue)(cl_command_queue) = opencl_fn1<OPENCL_FN_clReleaseCommandQueue, cl_int, cl_command_queue>::switch_fn;
cl_int (*clGetCommandQueueInfo)(cl_command_queue, cl_command_queue_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetCommandQueueInfo, cl_int, cl_command_queue, cl_command_queue_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clSetCommandQueueProperty)(cl_command_queue, cl_command_queue_properties, cl_bool, cl_command_queue_properties*) = opencl_fn4<OPENCL_FN_clSetCommandQueueProperty, cl_int, cl_command_queue, cl_command_queue_properties, cl_bool, cl_command_queue_properties*>::switch_fn;
cl_mem (*clCreateBuffer)(cl_context, cl_mem_flags, size_t, void*, cl_int*) = opencl_fn5<OPENCL_FN_clCreateBuffer, cl_mem, cl_context, cl_mem_flags, size_t, void*, cl_int*>::switch_fn;
cl_mem (*clCreateSubBuffer)(cl_mem, cl_mem_flags, cl_buffer_create_type, const void*, cl_int*) = opencl_fn5<OPENCL_FN_clCreateSubBuffer, cl_mem, cl_mem, cl_mem_flags, cl_buffer_create_type, const void*, cl_int*>::switch_fn;
cl_mem (*clCreateImage2D)(cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, void*, cl_int*) = opencl_fn8<OPENCL_FN_clCreateImage2D, cl_mem, cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, void*, cl_int*>::switch_fn;
cl_mem (*clCreateImage3D)(cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, size_t, size_t, void*, cl_int*) = opencl_fn10<OPENCL_FN_clCreateImage3D, cl_mem, cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, size_t, size_t, void*, cl_int*>::switch_fn;
cl_int (*clRetainMemObject)(cl_mem) = opencl_fn1<OPENCL_FN_clRetainMemObject, cl_int, cl_mem>::switch_fn;
cl_int (*clReleaseMemObject)(cl_mem) = opencl_fn1<OPENCL_FN_clReleaseMemObject, cl_int, cl_mem>::switch_fn;
cl_int (*clGetSupportedImageFormats)(cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*) = opencl_fn6<OPENCL_FN_clGetSupportedImageFormats, cl_int, cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*>::switch_fn;
cl_int (*clGetMemObjectInfo)(cl_mem, cl_mem_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetMemObjectInfo, cl_int, cl_mem, cl_mem_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clGetImageInfo)(cl_mem, cl_image_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetImageInfo, cl_int, cl_mem, cl_image_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clSetMemObjectDestructorCallback)(cl_mem, void (CL_CALLBACK*) (cl_mem, void*), void*) = opencl_fn3<OPENCL_FN_clSetMemObjectDestructorCallback, cl_int, cl_mem, void (CL_CALLBACK*) (cl_mem, void*), void*>::switch_fn;
cl_sampler (*clCreateSampler)(cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*) = opencl_fn5<OPENCL_FN_clCreateSampler, cl_sampler, cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*>::switch_fn;
cl_int (*clRetainSampler)(cl_sampler) = opencl_fn1<OPENCL_FN_clRetainSampler, cl_int, cl_sampler>::switch_fn;
cl_int (*clReleaseSampler)(cl_sampler) = opencl_fn1<OPENCL_FN_clReleaseSampler, cl_int, cl_sampler>::switch_fn;
cl_int (*clGetSamplerInfo)(cl_sampler, cl_sampler_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetSamplerInfo, cl_int, cl_sampler, cl_sampler_info, size_t, void*, size_t*>::switch_fn;
cl_program (*clCreateProgramWithSource)(cl_context, cl_uint, const char**, const size_t*, cl_int*) = opencl_fn5<OPENCL_FN_clCreateProgramWithSource, cl_program, cl_context, cl_uint, const char**, const size_t*, cl_int*>::switch_fn;
cl_program (*clCreateProgramWithBinary)(cl_context, cl_uint, const cl_device_id*, const size_t*, const unsigned char**, cl_int*, cl_int*) = opencl_fn7<OPENCL_FN_clCreateProgramWithBinary, cl_program, cl_context, cl_uint, const cl_device_id*, const size_t*, const unsigned char**, cl_int*, cl_int*>::switch_fn;
cl_int (*clRetainProgram)(cl_program) = opencl_fn1<OPENCL_FN_clRetainProgram, cl_int, cl_program>::switch_fn;
cl_int (*clReleaseProgram)(cl_program) = opencl_fn1<OPENCL_FN_clReleaseProgram, cl_int, cl_program>::switch_fn;
cl_int (*clBuildProgram)(cl_program, cl_uint, const cl_device_id*, const char*, void (CL_CALLBACK*) (cl_program, void*), void*) = opencl_fn6<OPENCL_FN_clBuildProgram, cl_int, cl_program, cl_uint, const cl_device_id*, const char*, void (CL_CALLBACK*) (cl_program, void*), void*>::switch_fn;
cl_int (*clUnloadCompiler)() = opencl_fn0<OPENCL_FN_clUnloadCompiler, cl_int>::switch_fn;
cl_int (*clGetProgramInfo)(cl_program, cl_program_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetProgramInfo, cl_int, cl_program, cl_program_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clGetProgramBuildInfo)(cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*) = opencl_fn6<OPENCL_FN_clGetProgramBuildInfo, cl_int, cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*>::switch_fn;
cl_kernel (*clCreateKernel)(cl_program, const char*, cl_int*) = opencl_fn3<OPENCL_FN_clCreateKernel, cl_kernel, cl_program, const char*, cl_int*>::switch_fn;
cl_int (*clCreateKernelsInProgram)(cl_program, cl_uint, cl_kernel*, cl_uint*) = opencl_fn4<OPENCL_FN_clCreateKernelsInProgram, cl_int, cl_program, cl_uint, cl_kernel*, cl_uint*>::switch_fn;
cl_int (*clRetainKernel)(cl_kernel) = opencl_fn1<OPENCL_FN_clRetainKernel, cl_int, cl_kernel>::switch_fn;
cl_int (*clReleaseKernel)(cl_kernel) = opencl_fn1<OPENCL_FN_clReleaseKernel, cl_int, cl_kernel>::switch_fn;
cl_int (*clSetKernelArg)(cl_kernel, cl_uint, size_t, const void*) = opencl_fn4<OPENCL_FN_clSetKernelArg, cl_int, cl_kernel, cl_uint, size_t, const void*>::switch_fn;
cl_int (*clGetKernelInfo)(cl_kernel, cl_kernel_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetKernelInfo, cl_int, cl_kernel, cl_kernel_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clGetKernelWorkGroupInfo)(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*) = opencl_fn6<OPENCL_FN_clGetKernelWorkGroupInfo, cl_int, cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clWaitForEvents)(cl_uint, const cl_event*) = opencl_fn2<OPENCL_FN_clWaitForEvents, cl_int, cl_uint, const cl_event*>::switch_fn;
cl_int (*clGetEventInfo)(cl_event, cl_event_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetEventInfo, cl_int, cl_event, cl_event_info, size_t, void*, size_t*>::switch_fn;
cl_event (*clCreateUserEvent)(cl_context, cl_int*) = opencl_fn2<OPENCL_FN_clCreateUserEvent, cl_event, cl_context, cl_int*>::switch_fn;
cl_int (*clRetainEvent)(cl_event) = opencl_fn1<OPENCL_FN_clRetainEvent, cl_int, cl_event>::switch_fn;
cl_int (*clReleaseEvent)(cl_event) = opencl_fn1<OPENCL_FN_clReleaseEvent, cl_int, cl_event>::switch_fn;
cl_int (*clSetUserEventStatus)(cl_event, cl_int) = opencl_fn2<OPENCL_FN_clSetUserEventStatus, cl_int, cl_event, cl_int>::switch_fn;
cl_int (*clSetEventCallback)(cl_event, cl_int, void (CL_CALLBACK*) (cl_event, cl_int, void*), void*) = opencl_fn4<OPENCL_FN_clSetEventCallback, cl_int, cl_event, cl_int, void (CL_CALLBACK*) (cl_event, cl_int, void*), void*>::switch_fn;
cl_int (*clGetEventProfilingInfo)(cl_event, cl_profiling_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetEventProfilingInfo, cl_int, cl_event, cl_profiling_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clFlush)(cl_command_queue) = opencl_fn1<OPENCL_FN_clFlush, cl_int, cl_command_queue>::switch_fn;
cl_int (*clFinish)(cl_command_queue) = opencl_fn1<OPENCL_FN_clFinish, cl_int, cl_command_queue>::switch_fn;
cl_int (*clEnqueueReadBuffer)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueReadBuffer, cl_int, cl_command_queue, cl_mem, cl_bool, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueReadBufferRect)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*) = opencl_fn14<OPENCL_FN_clEnqueueReadBufferRect, cl_int, cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueWriteBuffer)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueWriteBuffer, cl_int, cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueWriteBufferRect)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*) = opencl_fn14<OPENCL_FN_clEnqueueWriteBufferRect, cl_int, cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueCopyBuffer)(cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueCopyBuffer, cl_int, cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueCopyBufferRect)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*) = opencl_fn13<OPENCL_FN_clEnqueueCopyBufferRect, cl_int, cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueReadImage)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*) = opencl_fn11<OPENCL_FN_clEnqueueReadImage, cl_int, cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueWriteImage)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*) = opencl_fn11<OPENCL_FN_clEnqueueWriteImage, cl_int, cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueCopyImage)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueCopyImage, cl_int, cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueCopyImageToBuffer)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, size_t, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueCopyImageToBuffer, cl_int, cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, size_t, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueCopyBufferToImage)(cl_command_queue, cl_mem, cl_mem, size_t, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueCopyBufferToImage, cl_int, cl_command_queue, cl_mem, cl_mem, size_t, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*>::switch_fn;
void* (*clEnqueueMapBuffer)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event*, cl_event*, cl_int*) = opencl_fn10<OPENCL_FN_clEnqueueMapBuffer, void*, cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event*, cl_event*, cl_int*>::switch_fn;
void* (*clEnqueueMapImage)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, const size_t*, const size_t*, size_t*, size_t*, cl_uint, const cl_event*, cl_event*, cl_int*) = opencl_fn12<OPENCL_FN_clEnqueueMapImage, void*, cl_command_queue, cl_mem, cl_bool, cl_map_flags, const size_t*, const size_t*, size_t*, size_t*, cl_uint, const cl_event*, cl_event*, cl_int*>::switch_fn;
cl_int (*clEnqueueUnmapMemObject)(cl_command_queue, cl_mem, void*, cl_uint, const cl_event*, cl_event*) = opencl_fn6<OPENCL_FN_clEnqueueUnmapMemObject, cl_int, cl_command_queue, cl_mem, void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueNDRangeKernel)(cl_command_queue, cl_kernel, cl_uint, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueNDRangeKernel, cl_int, cl_command_queue, cl_kernel, cl_uint, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueTask)(cl_command_queue, cl_kernel, cl_uint, const cl_event*, cl_event*) = opencl_fn5<OPENCL_FN_clEnqueueTask, cl_int, cl_command_queue, cl_kernel, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueNativeKernel)(cl_command_queue, void (CL_CALLBACK*) (void*), void*, size_t, cl_uint, const cl_mem*, const void**, cl_uint, const cl_event*, cl_event*) = opencl_fn10<OPENCL_FN_clEnqueueNativeKernel, cl_int, cl_command_queue, void (CL_CALLBACK*) (void*), void*, size_t, cl_uint, const cl_mem*, const void**, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueMarker)(cl_command_queue, cl_event*) = opencl_fn2<OPENCL_FN_clEnqueueMarker, cl_int, cl_command_queue, cl_event*>::switch_fn;
cl_int (*clEnqueueWaitForEvents)(cl_command_queue, cl_uint, const cl_event*) = opencl_fn3<OPENCL_FN_clEnqueueWaitForEvents, cl_int, cl_command_queue, cl_uint, const cl_event*>::switch_fn;
cl_int (*clEnqueueBarrier)(cl_command_queue) = opencl_fn1<OPENCL_FN_clEnqueueBarrier, cl_int, cl_command_queue>::switch_fn;
void* (*clGetExtensionFunctionAddress)(const char*) = opencl_fn1<OPENCL_FN_clGetExtensionFunctionAddress, void*, const char*>::switch_fn;
// generated by parser_cl.py
void* opencl_fn_ptrs[] = {
&clGetPlatformIDs,
&clGetPlatformInfo,
&clGetDeviceIDs,
&clGetDeviceInfo,
&clCreateContext,
&clCreateContextFromType,
&clRetainContext,
&clReleaseContext,
&clGetContextInfo,
&clCreateCommandQueue,
&clRetainCommandQueue,
&clReleaseCommandQueue,
&clGetCommandQueueInfo,
&clSetCommandQueueProperty,
&clCreateBuffer,
&clCreateSubBuffer,
&clCreateImage2D,
&clCreateImage3D,
&clRetainMemObject,
&clReleaseMemObject,
&clGetSupportedImageFormats,
&clGetMemObjectInfo,
&clGetImageInfo,
&clSetMemObjectDestructorCallback,
&clCreateSampler,
&clRetainSampler,
&clReleaseSampler,
&clGetSamplerInfo,
&clCreateProgramWithSource,
&clCreateProgramWithBinary,
&clRetainProgram,
&clReleaseProgram,
&clBuildProgram,
&clUnloadCompiler,
&clGetProgramInfo,
&clGetProgramBuildInfo,
&clCreateKernel,
&clCreateKernelsInProgram,
&clRetainKernel,
&clReleaseKernel,
&clSetKernelArg,
&clGetKernelInfo,
&clGetKernelWorkGroupInfo,
&clWaitForEvents,
&clGetEventInfo,
&clCreateUserEvent,
&clRetainEvent,
&clReleaseEvent,
&clSetUserEventStatus,
&clSetEventCallback,
&clGetEventProfilingInfo,
&clFlush,
&clFinish,
&clEnqueueReadBuffer,
&clEnqueueReadBufferRect,
&clEnqueueWriteBuffer,
&clEnqueueWriteBufferRect,
&clEnqueueCopyBuffer,
&clEnqueueCopyBufferRect,
&clEnqueueReadImage,
&clEnqueueWriteImage,
&clEnqueueCopyImage,
&clEnqueueCopyImageToBuffer,
&clEnqueueCopyBufferToImage,
&clEnqueueMapBuffer,
&clEnqueueMapImage,
&clEnqueueUnmapMemObject,
&clEnqueueNDRangeKernel,
&clEnqueueTask,
&clEnqueueNativeKernel,
&clEnqueueMarker,
&clEnqueueWaitForEvents,
&clEnqueueBarrier,
&clGetExtensionFunctionAddress,
};
//
// AUTOGENERATED, DO NOT EDIT
//
// generated by parser_cl.py
enum OPENCL_FN_ID {
OPENCL_FN_clGetPlatformIDs = 0,
OPENCL_FN_clGetPlatformInfo,
OPENCL_FN_clGetDeviceIDs,
OPENCL_FN_clGetDeviceInfo,
OPENCL_FN_clCreateSubDevices,
OPENCL_FN_clRetainDevice,
OPENCL_FN_clReleaseDevice,
OPENCL_FN_clCreateContext,
OPENCL_FN_clCreateContextFromType,
OPENCL_FN_clRetainContext,
OPENCL_FN_clReleaseContext,
OPENCL_FN_clGetContextInfo,
OPENCL_FN_clCreateCommandQueue,
OPENCL_FN_clRetainCommandQueue,
OPENCL_FN_clReleaseCommandQueue,
OPENCL_FN_clGetCommandQueueInfo,
OPENCL_FN_clCreateBuffer,
OPENCL_FN_clCreateSubBuffer,
OPENCL_FN_clCreateImage,
OPENCL_FN_clRetainMemObject,
OPENCL_FN_clReleaseMemObject,
OPENCL_FN_clGetSupportedImageFormats,
OPENCL_FN_clGetMemObjectInfo,
OPENCL_FN_clGetImageInfo,
OPENCL_FN_clSetMemObjectDestructorCallback,
OPENCL_FN_clCreateSampler,
OPENCL_FN_clRetainSampler,
OPENCL_FN_clReleaseSampler,
OPENCL_FN_clGetSamplerInfo,
OPENCL_FN_clCreateProgramWithSource,
OPENCL_FN_clCreateProgramWithBinary,
OPENCL_FN_clCreateProgramWithBuiltInKernels,
OPENCL_FN_clRetainProgram,
OPENCL_FN_clReleaseProgram,
OPENCL_FN_clBuildProgram,
OPENCL_FN_clCompileProgram,
OPENCL_FN_clLinkProgram,
OPENCL_FN_clUnloadPlatformCompiler,
OPENCL_FN_clGetProgramInfo,
OPENCL_FN_clGetProgramBuildInfo,
OPENCL_FN_clCreateKernel,
OPENCL_FN_clCreateKernelsInProgram,
OPENCL_FN_clRetainKernel,
OPENCL_FN_clReleaseKernel,
OPENCL_FN_clSetKernelArg,
OPENCL_FN_clGetKernelInfo,
OPENCL_FN_clGetKernelArgInfo,
OPENCL_FN_clGetKernelWorkGroupInfo,
OPENCL_FN_clWaitForEvents,
OPENCL_FN_clGetEventInfo,
OPENCL_FN_clCreateUserEvent,
OPENCL_FN_clRetainEvent,
OPENCL_FN_clReleaseEvent,
OPENCL_FN_clSetUserEventStatus,
OPENCL_FN_clSetEventCallback,
OPENCL_FN_clGetEventProfilingInfo,
OPENCL_FN_clFlush,
OPENCL_FN_clFinish,
OPENCL_FN_clEnqueueReadBuffer,
OPENCL_FN_clEnqueueReadBufferRect,
OPENCL_FN_clEnqueueWriteBuffer,
OPENCL_FN_clEnqueueWriteBufferRect,
OPENCL_FN_clEnqueueFillBuffer,
OPENCL_FN_clEnqueueCopyBuffer,
OPENCL_FN_clEnqueueCopyBufferRect,
OPENCL_FN_clEnqueueReadImage,
OPENCL_FN_clEnqueueWriteImage,
OPENCL_FN_clEnqueueFillImage,
OPENCL_FN_clEnqueueCopyImage,
OPENCL_FN_clEnqueueCopyImageToBuffer,
OPENCL_FN_clEnqueueCopyBufferToImage,
OPENCL_FN_clEnqueueMapBuffer,
OPENCL_FN_clEnqueueMapImage,
OPENCL_FN_clEnqueueUnmapMemObject,
OPENCL_FN_clEnqueueMigrateMemObjects,
OPENCL_FN_clEnqueueNDRangeKernel,
OPENCL_FN_clEnqueueTask,
OPENCL_FN_clEnqueueNativeKernel,
OPENCL_FN_clEnqueueMarkerWithWaitList,
OPENCL_FN_clEnqueueBarrierWithWaitList,
OPENCL_FN_clGetExtensionFunctionAddressForPlatform,
OPENCL_FN_clCreateImage2D,
OPENCL_FN_clCreateImage3D,
OPENCL_FN_clEnqueueMarker,
OPENCL_FN_clEnqueueWaitForEvents,
OPENCL_FN_clEnqueueBarrier,
OPENCL_FN_clUnloadCompiler,
OPENCL_FN_clGetExtensionFunctionAddress,
};
// generated by parser_cl.py
const char* opencl_fn_names[] = {
"clGetPlatformIDs",
"clGetPlatformInfo",
"clGetDeviceIDs",
"clGetDeviceInfo",
"clCreateSubDevices",
"clRetainDevice",
"clReleaseDevice",
"clCreateContext",
"clCreateContextFromType",
"clRetainContext",
"clReleaseContext",
"clGetContextInfo",
"clCreateCommandQueue",
"clRetainCommandQueue",
"clReleaseCommandQueue",
"clGetCommandQueueInfo",
"clCreateBuffer",
"clCreateSubBuffer",
"clCreateImage",
"clRetainMemObject",
"clReleaseMemObject",
"clGetSupportedImageFormats",
"clGetMemObjectInfo",
"clGetImageInfo",
"clSetMemObjectDestructorCallback",
"clCreateSampler",
"clRetainSampler",
"clReleaseSampler",
"clGetSamplerInfo",
"clCreateProgramWithSource",
"clCreateProgramWithBinary",
"clCreateProgramWithBuiltInKernels",
"clRetainProgram",
"clReleaseProgram",
"clBuildProgram",
"clCompileProgram",
"clLinkProgram",
"clUnloadPlatformCompiler",
"clGetProgramInfo",
"clGetProgramBuildInfo",
"clCreateKernel",
"clCreateKernelsInProgram",
"clRetainKernel",
"clReleaseKernel",
"clSetKernelArg",
"clGetKernelInfo",
"clGetKernelArgInfo",
"clGetKernelWorkGroupInfo",
"clWaitForEvents",
"clGetEventInfo",
"clCreateUserEvent",
"clRetainEvent",
"clReleaseEvent",
"clSetUserEventStatus",
"clSetEventCallback",
"clGetEventProfilingInfo",
"clFlush",
"clFinish",
"clEnqueueReadBuffer",
"clEnqueueReadBufferRect",
"clEnqueueWriteBuffer",
"clEnqueueWriteBufferRect",
"clEnqueueFillBuffer",
"clEnqueueCopyBuffer",
"clEnqueueCopyBufferRect",
"clEnqueueReadImage",
"clEnqueueWriteImage",
"clEnqueueFillImage",
"clEnqueueCopyImage",
"clEnqueueCopyImageToBuffer",
"clEnqueueCopyBufferToImage",
"clEnqueueMapBuffer",
"clEnqueueMapImage",
"clEnqueueUnmapMemObject",
"clEnqueueMigrateMemObjects",
"clEnqueueNDRangeKernel",
"clEnqueueTask",
"clEnqueueNativeKernel",
"clEnqueueMarkerWithWaitList",
"clEnqueueBarrierWithWaitList",
"clGetExtensionFunctionAddressForPlatform",
"clCreateImage2D",
"clCreateImage3D",
"clEnqueueMarker",
"clEnqueueWaitForEvents",
"clEnqueueBarrier",
"clUnloadCompiler",
"clGetExtensionFunctionAddress",
};
namespace {
// generated by parser_cl.py
template <int ID, typename _R>
struct opencl_fn0
{
typedef _R (*FN)();
static _R switch_fn()
{ return ((FN)opencl_check_fn(ID))(); }
};
template <int ID, typename _R, typename _T1>
struct opencl_fn1
{
typedef _R (*FN)(_T1);
static _R switch_fn(_T1 p1)
{ return ((FN)opencl_check_fn(ID))(p1); }
};
template <int ID, typename _R, typename _T1, typename _T2>
struct opencl_fn2
{
typedef _R (*FN)(_T1, _T2);
static _R switch_fn(_T1 p1, _T2 p2)
{ return ((FN)opencl_check_fn(ID))(p1, p2); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3>
struct opencl_fn3
{
typedef _R (*FN)(_T1, _T2, _T3);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4>
struct opencl_fn4
{
typedef _R (*FN)(_T1, _T2, _T3, _T4);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5>
struct opencl_fn5
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6>
struct opencl_fn6
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7>
struct opencl_fn7
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8>
struct opencl_fn8
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9>
struct opencl_fn9
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10>
struct opencl_fn10
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11>
struct opencl_fn11
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12>
struct opencl_fn12
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13>
struct opencl_fn13
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14>
struct opencl_fn14
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14)
{ return ((FN)opencl_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); }
};
}
// generated by parser_cl.py
cl_int (*clGetPlatformIDs)(cl_uint, cl_platform_id*, cl_uint*) = opencl_fn3<OPENCL_FN_clGetPlatformIDs, cl_int, cl_uint, cl_platform_id*, cl_uint*>::switch_fn;
cl_int (*clGetPlatformInfo)(cl_platform_id, cl_platform_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetPlatformInfo, cl_int, cl_platform_id, cl_platform_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clGetDeviceIDs)(cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*) = opencl_fn5<OPENCL_FN_clGetDeviceIDs, cl_int, cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*>::switch_fn;
cl_int (*clGetDeviceInfo)(cl_device_id, cl_device_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetDeviceInfo, cl_int, cl_device_id, cl_device_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clCreateSubDevices)(cl_device_id, const cl_device_partition_property*, cl_uint, cl_device_id*, cl_uint*) = opencl_fn5<OPENCL_FN_clCreateSubDevices, cl_int, cl_device_id, const cl_device_partition_property*, cl_uint, cl_device_id*, cl_uint*>::switch_fn;
cl_int (*clRetainDevice)(cl_device_id) = opencl_fn1<OPENCL_FN_clRetainDevice, cl_int, cl_device_id>::switch_fn;
cl_int (*clReleaseDevice)(cl_device_id) = opencl_fn1<OPENCL_FN_clReleaseDevice, cl_int, cl_device_id>::switch_fn;
cl_context (*clCreateContext)(const cl_context_properties*, cl_uint, const cl_device_id*, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*) = opencl_fn6<OPENCL_FN_clCreateContext, cl_context, const cl_context_properties*, cl_uint, const cl_device_id*, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*>::switch_fn;
cl_context (*clCreateContextFromType)(const cl_context_properties*, cl_device_type, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*) = opencl_fn5<OPENCL_FN_clCreateContextFromType, cl_context, const cl_context_properties*, cl_device_type, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*>::switch_fn;
cl_int (*clRetainContext)(cl_context) = opencl_fn1<OPENCL_FN_clRetainContext, cl_int, cl_context>::switch_fn;
cl_int (*clReleaseContext)(cl_context) = opencl_fn1<OPENCL_FN_clReleaseContext, cl_int, cl_context>::switch_fn;
cl_int (*clGetContextInfo)(cl_context, cl_context_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetContextInfo, cl_int, cl_context, cl_context_info, size_t, void*, size_t*>::switch_fn;
cl_command_queue (*clCreateCommandQueue)(cl_context, cl_device_id, cl_command_queue_properties, cl_int*) = opencl_fn4<OPENCL_FN_clCreateCommandQueue, cl_command_queue, cl_context, cl_device_id, cl_command_queue_properties, cl_int*>::switch_fn;
cl_int (*clRetainCommandQueue)(cl_command_queue) = opencl_fn1<OPENCL_FN_clRetainCommandQueue, cl_int, cl_command_queue>::switch_fn;
cl_int (*clReleaseCommandQueue)(cl_command_queue) = opencl_fn1<OPENCL_FN_clReleaseCommandQueue, cl_int, cl_command_queue>::switch_fn;
cl_int (*clGetCommandQueueInfo)(cl_command_queue, cl_command_queue_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetCommandQueueInfo, cl_int, cl_command_queue, cl_command_queue_info, size_t, void*, size_t*>::switch_fn;
cl_mem (*clCreateBuffer)(cl_context, cl_mem_flags, size_t, void*, cl_int*) = opencl_fn5<OPENCL_FN_clCreateBuffer, cl_mem, cl_context, cl_mem_flags, size_t, void*, cl_int*>::switch_fn;
cl_mem (*clCreateSubBuffer)(cl_mem, cl_mem_flags, cl_buffer_create_type, const void*, cl_int*) = opencl_fn5<OPENCL_FN_clCreateSubBuffer, cl_mem, cl_mem, cl_mem_flags, cl_buffer_create_type, const void*, cl_int*>::switch_fn;
cl_mem (*clCreateImage)(cl_context, cl_mem_flags, const cl_image_format*, const cl_image_desc*, void*, cl_int*) = opencl_fn6<OPENCL_FN_clCreateImage, cl_mem, cl_context, cl_mem_flags, const cl_image_format*, const cl_image_desc*, void*, cl_int*>::switch_fn;
cl_int (*clRetainMemObject)(cl_mem) = opencl_fn1<OPENCL_FN_clRetainMemObject, cl_int, cl_mem>::switch_fn;
cl_int (*clReleaseMemObject)(cl_mem) = opencl_fn1<OPENCL_FN_clReleaseMemObject, cl_int, cl_mem>::switch_fn;
cl_int (*clGetSupportedImageFormats)(cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*) = opencl_fn6<OPENCL_FN_clGetSupportedImageFormats, cl_int, cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*>::switch_fn;
cl_int (*clGetMemObjectInfo)(cl_mem, cl_mem_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetMemObjectInfo, cl_int, cl_mem, cl_mem_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clGetImageInfo)(cl_mem, cl_image_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetImageInfo, cl_int, cl_mem, cl_image_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clSetMemObjectDestructorCallback)(cl_mem, void (CL_CALLBACK*) (cl_mem, void*), void*) = opencl_fn3<OPENCL_FN_clSetMemObjectDestructorCallback, cl_int, cl_mem, void (CL_CALLBACK*) (cl_mem, void*), void*>::switch_fn;
cl_sampler (*clCreateSampler)(cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*) = opencl_fn5<OPENCL_FN_clCreateSampler, cl_sampler, cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*>::switch_fn;
cl_int (*clRetainSampler)(cl_sampler) = opencl_fn1<OPENCL_FN_clRetainSampler, cl_int, cl_sampler>::switch_fn;
cl_int (*clReleaseSampler)(cl_sampler) = opencl_fn1<OPENCL_FN_clReleaseSampler, cl_int, cl_sampler>::switch_fn;
cl_int (*clGetSamplerInfo)(cl_sampler, cl_sampler_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetSamplerInfo, cl_int, cl_sampler, cl_sampler_info, size_t, void*, size_t*>::switch_fn;
cl_program (*clCreateProgramWithSource)(cl_context, cl_uint, const char**, const size_t*, cl_int*) = opencl_fn5<OPENCL_FN_clCreateProgramWithSource, cl_program, cl_context, cl_uint, const char**, const size_t*, cl_int*>::switch_fn;
cl_program (*clCreateProgramWithBinary)(cl_context, cl_uint, const cl_device_id*, const size_t*, const unsigned char**, cl_int*, cl_int*) = opencl_fn7<OPENCL_FN_clCreateProgramWithBinary, cl_program, cl_context, cl_uint, const cl_device_id*, const size_t*, const unsigned char**, cl_int*, cl_int*>::switch_fn;
cl_program (*clCreateProgramWithBuiltInKernels)(cl_context, cl_uint, const cl_device_id*, const char*, cl_int*) = opencl_fn5<OPENCL_FN_clCreateProgramWithBuiltInKernels, cl_program, cl_context, cl_uint, const cl_device_id*, const char*, cl_int*>::switch_fn;
cl_int (*clRetainProgram)(cl_program) = opencl_fn1<OPENCL_FN_clRetainProgram, cl_int, cl_program>::switch_fn;
cl_int (*clReleaseProgram)(cl_program) = opencl_fn1<OPENCL_FN_clReleaseProgram, cl_int, cl_program>::switch_fn;
cl_int (*clBuildProgram)(cl_program, cl_uint, const cl_device_id*, const char*, void (CL_CALLBACK*) (cl_program, void*), void*) = opencl_fn6<OPENCL_FN_clBuildProgram, cl_int, cl_program, cl_uint, const cl_device_id*, const char*, void (CL_CALLBACK*) (cl_program, void*), void*>::switch_fn;
cl_int (*clCompileProgram)(cl_program, cl_uint, const cl_device_id*, const char*, cl_uint, const cl_program*, const char**, void (CL_CALLBACK*) (cl_program, void*), void*) = opencl_fn9<OPENCL_FN_clCompileProgram, cl_int, cl_program, cl_uint, const cl_device_id*, const char*, cl_uint, const cl_program*, const char**, void (CL_CALLBACK*) (cl_program, void*), void*>::switch_fn;
cl_program (*clLinkProgram)(cl_context, cl_uint, const cl_device_id*, const char*, cl_uint, const cl_program*, void (CL_CALLBACK*) (cl_program, void*), void*, cl_int*) = opencl_fn9<OPENCL_FN_clLinkProgram, cl_program, cl_context, cl_uint, const cl_device_id*, const char*, cl_uint, const cl_program*, void (CL_CALLBACK*) (cl_program, void*), void*, cl_int*>::switch_fn;
cl_int (*clUnloadPlatformCompiler)(cl_platform_id) = opencl_fn1<OPENCL_FN_clUnloadPlatformCompiler, cl_int, cl_platform_id>::switch_fn;
cl_int (*clGetProgramInfo)(cl_program, cl_program_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetProgramInfo, cl_int, cl_program, cl_program_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clGetProgramBuildInfo)(cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*) = opencl_fn6<OPENCL_FN_clGetProgramBuildInfo, cl_int, cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*>::switch_fn;
cl_kernel (*clCreateKernel)(cl_program, const char*, cl_int*) = opencl_fn3<OPENCL_FN_clCreateKernel, cl_kernel, cl_program, const char*, cl_int*>::switch_fn;
cl_int (*clCreateKernelsInProgram)(cl_program, cl_uint, cl_kernel*, cl_uint*) = opencl_fn4<OPENCL_FN_clCreateKernelsInProgram, cl_int, cl_program, cl_uint, cl_kernel*, cl_uint*>::switch_fn;
cl_int (*clRetainKernel)(cl_kernel) = opencl_fn1<OPENCL_FN_clRetainKernel, cl_int, cl_kernel>::switch_fn;
cl_int (*clReleaseKernel)(cl_kernel) = opencl_fn1<OPENCL_FN_clReleaseKernel, cl_int, cl_kernel>::switch_fn;
cl_int (*clSetKernelArg)(cl_kernel, cl_uint, size_t, const void*) = opencl_fn4<OPENCL_FN_clSetKernelArg, cl_int, cl_kernel, cl_uint, size_t, const void*>::switch_fn;
cl_int (*clGetKernelInfo)(cl_kernel, cl_kernel_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetKernelInfo, cl_int, cl_kernel, cl_kernel_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clGetKernelArgInfo)(cl_kernel, cl_uint, cl_kernel_arg_info, size_t, void*, size_t*) = opencl_fn6<OPENCL_FN_clGetKernelArgInfo, cl_int, cl_kernel, cl_uint, cl_kernel_arg_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clGetKernelWorkGroupInfo)(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*) = opencl_fn6<OPENCL_FN_clGetKernelWorkGroupInfo, cl_int, cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clWaitForEvents)(cl_uint, const cl_event*) = opencl_fn2<OPENCL_FN_clWaitForEvents, cl_int, cl_uint, const cl_event*>::switch_fn;
cl_int (*clGetEventInfo)(cl_event, cl_event_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetEventInfo, cl_int, cl_event, cl_event_info, size_t, void*, size_t*>::switch_fn;
cl_event (*clCreateUserEvent)(cl_context, cl_int*) = opencl_fn2<OPENCL_FN_clCreateUserEvent, cl_event, cl_context, cl_int*>::switch_fn;
cl_int (*clRetainEvent)(cl_event) = opencl_fn1<OPENCL_FN_clRetainEvent, cl_int, cl_event>::switch_fn;
cl_int (*clReleaseEvent)(cl_event) = opencl_fn1<OPENCL_FN_clReleaseEvent, cl_int, cl_event>::switch_fn;
cl_int (*clSetUserEventStatus)(cl_event, cl_int) = opencl_fn2<OPENCL_FN_clSetUserEventStatus, cl_int, cl_event, cl_int>::switch_fn;
cl_int (*clSetEventCallback)(cl_event, cl_int, void (CL_CALLBACK*) (cl_event, cl_int, void*), void*) = opencl_fn4<OPENCL_FN_clSetEventCallback, cl_int, cl_event, cl_int, void (CL_CALLBACK*) (cl_event, cl_int, void*), void*>::switch_fn;
cl_int (*clGetEventProfilingInfo)(cl_event, cl_profiling_info, size_t, void*, size_t*) = opencl_fn5<OPENCL_FN_clGetEventProfilingInfo, cl_int, cl_event, cl_profiling_info, size_t, void*, size_t*>::switch_fn;
cl_int (*clFlush)(cl_command_queue) = opencl_fn1<OPENCL_FN_clFlush, cl_int, cl_command_queue>::switch_fn;
cl_int (*clFinish)(cl_command_queue) = opencl_fn1<OPENCL_FN_clFinish, cl_int, cl_command_queue>::switch_fn;
cl_int (*clEnqueueReadBuffer)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueReadBuffer, cl_int, cl_command_queue, cl_mem, cl_bool, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueReadBufferRect)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*) = opencl_fn14<OPENCL_FN_clEnqueueReadBufferRect, cl_int, cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueWriteBuffer)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueWriteBuffer, cl_int, cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueWriteBufferRect)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*) = opencl_fn14<OPENCL_FN_clEnqueueWriteBufferRect, cl_int, cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueFillBuffer)(cl_command_queue, cl_mem, const void*, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueFillBuffer, cl_int, cl_command_queue, cl_mem, const void*, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueCopyBuffer)(cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueCopyBuffer, cl_int, cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueCopyBufferRect)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*) = opencl_fn13<OPENCL_FN_clEnqueueCopyBufferRect, cl_int, cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueReadImage)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*) = opencl_fn11<OPENCL_FN_clEnqueueReadImage, cl_int, cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueWriteImage)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*) = opencl_fn11<OPENCL_FN_clEnqueueWriteImage, cl_int, cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueFillImage)(cl_command_queue, cl_mem, const void*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*) = opencl_fn8<OPENCL_FN_clEnqueueFillImage, cl_int, cl_command_queue, cl_mem, const void*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueCopyImage)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueCopyImage, cl_int, cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueCopyImageToBuffer)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, size_t, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueCopyImageToBuffer, cl_int, cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, size_t, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueCopyBufferToImage)(cl_command_queue, cl_mem, cl_mem, size_t, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueCopyBufferToImage, cl_int, cl_command_queue, cl_mem, cl_mem, size_t, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*>::switch_fn;
void* (*clEnqueueMapBuffer)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event*, cl_event*, cl_int*) = opencl_fn10<OPENCL_FN_clEnqueueMapBuffer, void*, cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event*, cl_event*, cl_int*>::switch_fn;
void* (*clEnqueueMapImage)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, const size_t*, const size_t*, size_t*, size_t*, cl_uint, const cl_event*, cl_event*, cl_int*) = opencl_fn12<OPENCL_FN_clEnqueueMapImage, void*, cl_command_queue, cl_mem, cl_bool, cl_map_flags, const size_t*, const size_t*, size_t*, size_t*, cl_uint, const cl_event*, cl_event*, cl_int*>::switch_fn;
cl_int (*clEnqueueUnmapMemObject)(cl_command_queue, cl_mem, void*, cl_uint, const cl_event*, cl_event*) = opencl_fn6<OPENCL_FN_clEnqueueUnmapMemObject, cl_int, cl_command_queue, cl_mem, void*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueMigrateMemObjects)(cl_command_queue, cl_uint, const cl_mem*, cl_mem_migration_flags, cl_uint, const cl_event*, cl_event*) = opencl_fn7<OPENCL_FN_clEnqueueMigrateMemObjects, cl_int, cl_command_queue, cl_uint, const cl_mem*, cl_mem_migration_flags, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueNDRangeKernel)(cl_command_queue, cl_kernel, cl_uint, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*) = opencl_fn9<OPENCL_FN_clEnqueueNDRangeKernel, cl_int, cl_command_queue, cl_kernel, cl_uint, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueTask)(cl_command_queue, cl_kernel, cl_uint, const cl_event*, cl_event*) = opencl_fn5<OPENCL_FN_clEnqueueTask, cl_int, cl_command_queue, cl_kernel, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueNativeKernel)(cl_command_queue, void (CL_CALLBACK*) (void*), void*, size_t, cl_uint, const cl_mem*, const void**, cl_uint, const cl_event*, cl_event*) = opencl_fn10<OPENCL_FN_clEnqueueNativeKernel, cl_int, cl_command_queue, void (CL_CALLBACK*) (void*), void*, size_t, cl_uint, const cl_mem*, const void**, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueMarkerWithWaitList)(cl_command_queue, cl_uint, const cl_event*, cl_event*) = opencl_fn4<OPENCL_FN_clEnqueueMarkerWithWaitList, cl_int, cl_command_queue, cl_uint, const cl_event*, cl_event*>::switch_fn;
cl_int (*clEnqueueBarrierWithWaitList)(cl_command_queue, cl_uint, const cl_event*, cl_event*) = opencl_fn4<OPENCL_FN_clEnqueueBarrierWithWaitList, cl_int, cl_command_queue, cl_uint, const cl_event*, cl_event*>::switch_fn;
void* (*clGetExtensionFunctionAddressForPlatform)(cl_platform_id, const char*) = opencl_fn2<OPENCL_FN_clGetExtensionFunctionAddressForPlatform, void*, cl_platform_id, const char*>::switch_fn;
cl_mem (*clCreateImage2D)(cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, void*, cl_int*) = opencl_fn8<OPENCL_FN_clCreateImage2D, cl_mem, cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, void*, cl_int*>::switch_fn;
cl_mem (*clCreateImage3D)(cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, size_t, size_t, void*, cl_int*) = opencl_fn10<OPENCL_FN_clCreateImage3D, cl_mem, cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, size_t, size_t, void*, cl_int*>::switch_fn;
cl_int (*clEnqueueMarker)(cl_command_queue, cl_event*) = opencl_fn2<OPENCL_FN_clEnqueueMarker, cl_int, cl_command_queue, cl_event*>::switch_fn;
cl_int (*clEnqueueWaitForEvents)(cl_command_queue, cl_uint, const cl_event*) = opencl_fn3<OPENCL_FN_clEnqueueWaitForEvents, cl_int, cl_command_queue, cl_uint, const cl_event*>::switch_fn;
cl_int (*clEnqueueBarrier)(cl_command_queue) = opencl_fn1<OPENCL_FN_clEnqueueBarrier, cl_int, cl_command_queue>::switch_fn;
cl_int (*clUnloadCompiler)() = opencl_fn0<OPENCL_FN_clUnloadCompiler, cl_int>::switch_fn;
void* (*clGetExtensionFunctionAddress)(const char*) = opencl_fn1<OPENCL_FN_clGetExtensionFunctionAddress, void*, const char*>::switch_fn;
// generated by parser_cl.py
void* opencl_fn_ptrs[] = {
&clGetPlatformIDs,
&clGetPlatformInfo,
&clGetDeviceIDs,
&clGetDeviceInfo,
&clCreateSubDevices,
&clRetainDevice,
&clReleaseDevice,
&clCreateContext,
&clCreateContextFromType,
&clRetainContext,
&clReleaseContext,
&clGetContextInfo,
&clCreateCommandQueue,
&clRetainCommandQueue,
&clReleaseCommandQueue,
&clGetCommandQueueInfo,
&clCreateBuffer,
&clCreateSubBuffer,
&clCreateImage,
&clRetainMemObject,
&clReleaseMemObject,
&clGetSupportedImageFormats,
&clGetMemObjectInfo,
&clGetImageInfo,
&clSetMemObjectDestructorCallback,
&clCreateSampler,
&clRetainSampler,
&clReleaseSampler,
&clGetSamplerInfo,
&clCreateProgramWithSource,
&clCreateProgramWithBinary,
&clCreateProgramWithBuiltInKernels,
&clRetainProgram,
&clReleaseProgram,
&clBuildProgram,
&clCompileProgram,
&clLinkProgram,
&clUnloadPlatformCompiler,
&clGetProgramInfo,
&clGetProgramBuildInfo,
&clCreateKernel,
&clCreateKernelsInProgram,
&clRetainKernel,
&clReleaseKernel,
&clSetKernelArg,
&clGetKernelInfo,
&clGetKernelArgInfo,
&clGetKernelWorkGroupInfo,
&clWaitForEvents,
&clGetEventInfo,
&clCreateUserEvent,
&clRetainEvent,
&clReleaseEvent,
&clSetUserEventStatus,
&clSetEventCallback,
&clGetEventProfilingInfo,
&clFlush,
&clFinish,
&clEnqueueReadBuffer,
&clEnqueueReadBufferRect,
&clEnqueueWriteBuffer,
&clEnqueueWriteBufferRect,
&clEnqueueFillBuffer,
&clEnqueueCopyBuffer,
&clEnqueueCopyBufferRect,
&clEnqueueReadImage,
&clEnqueueWriteImage,
&clEnqueueFillImage,
&clEnqueueCopyImage,
&clEnqueueCopyImageToBuffer,
&clEnqueueCopyBufferToImage,
&clEnqueueMapBuffer,
&clEnqueueMapImage,
&clEnqueueUnmapMemObject,
&clEnqueueMigrateMemObjects,
&clEnqueueNDRangeKernel,
&clEnqueueTask,
&clEnqueueNativeKernel,
&clEnqueueMarkerWithWaitList,
&clEnqueueBarrierWithWaitList,
&clGetExtensionFunctionAddressForPlatform,
&clCreateImage2D,
&clCreateImage3D,
&clEnqueueMarker,
&clEnqueueWaitForEvents,
&clEnqueueBarrier,
&clUnloadCompiler,
&clGetExtensionFunctionAddress,
};
This source diff could not be displayed because it is too large. You can view the blob instead.
//
// AUTOGENERATED, DO NOT EDIT
//
#include "precomp.hpp"
#ifdef HAVE_CLAMDFFT
#include "opencv2/ocl/cl_runtime/cl_runtime.hpp"
#include "opencv2/ocl/cl_runtime/clamdfft_runtime.hpp"
#if defined(_WIN32)
static void* WinGetProcAddress(const char* name)
{
static HMODULE opencl_module = NULL;
if (!opencl_module)
{
opencl_module = GetModuleHandleA("clAmdFft.Runtime.dll");
if (!opencl_module)
{
opencl_module = LoadLibraryA("clAmdFft.Runtime.dll");
if (!opencl_module)
return NULL;
}
}
return (void*)GetProcAddress(opencl_module, name);
}
#define CV_CL_GET_PROC_ADDRESS(name) WinGetProcAddress(name)
#endif // _WIN32
#if defined(linux)
#include <dlfcn.h>
#include <stdio.h>
static void* GetProcAddress (const char* name)
{
static void* h = NULL;
if (!h)
{
h = dlopen("libclAmdFft.Runtime.so", RTLD_LAZY | RTLD_GLOBAL);
if (!h)
return NULL;
}
return dlsym(h, name);
}
#define CV_CL_GET_PROC_ADDRESS(name) GetProcAddress(name)
#endif
#ifndef CV_CL_GET_PROC_ADDRESS
#define CV_CL_GET_PROC_ADDRESS(name) NULL
#endif
// generated by parser_clamdfft.py
enum OPENCLAMDFFT_FN_ID {
OPENCLAMDFFT_FN_clAmdFftSetup = 0,
OPENCLAMDFFT_FN_clAmdFftTeardown,
OPENCLAMDFFT_FN_clAmdFftGetVersion,
OPENCLAMDFFT_FN_clAmdFftCreateDefaultPlan,
OPENCLAMDFFT_FN_clAmdFftCopyPlan,
OPENCLAMDFFT_FN_clAmdFftBakePlan,
OPENCLAMDFFT_FN_clAmdFftDestroyPlan,
OPENCLAMDFFT_FN_clAmdFftGetPlanContext,
OPENCLAMDFFT_FN_clAmdFftGetPlanPrecision,
OPENCLAMDFFT_FN_clAmdFftSetPlanPrecision,
OPENCLAMDFFT_FN_clAmdFftGetPlanScale,
OPENCLAMDFFT_FN_clAmdFftSetPlanScale,
OPENCLAMDFFT_FN_clAmdFftGetPlanBatchSize,
OPENCLAMDFFT_FN_clAmdFftSetPlanBatchSize,
OPENCLAMDFFT_FN_clAmdFftGetPlanDim,
OPENCLAMDFFT_FN_clAmdFftSetPlanDim,
OPENCLAMDFFT_FN_clAmdFftGetPlanLength,
OPENCLAMDFFT_FN_clAmdFftSetPlanLength,
OPENCLAMDFFT_FN_clAmdFftGetPlanInStride,
OPENCLAMDFFT_FN_clAmdFftSetPlanInStride,
OPENCLAMDFFT_FN_clAmdFftGetPlanOutStride,
OPENCLAMDFFT_FN_clAmdFftSetPlanOutStride,
OPENCLAMDFFT_FN_clAmdFftGetPlanDistance,
OPENCLAMDFFT_FN_clAmdFftSetPlanDistance,
OPENCLAMDFFT_FN_clAmdFftGetLayout,
OPENCLAMDFFT_FN_clAmdFftSetLayout,
OPENCLAMDFFT_FN_clAmdFftGetResultLocation,
OPENCLAMDFFT_FN_clAmdFftSetResultLocation,
OPENCLAMDFFT_FN_clAmdFftGetPlanTransposeResult,
OPENCLAMDFFT_FN_clAmdFftSetPlanTransposeResult,
OPENCLAMDFFT_FN_clAmdFftGetTmpBufSize,
OPENCLAMDFFT_FN_clAmdFftEnqueueTransform,
};
// generated by parser_clamdfft.py
const char* openclamdfft_fn_names[] = {
"clAmdFftSetup",
"clAmdFftTeardown",
"clAmdFftGetVersion",
"clAmdFftCreateDefaultPlan",
"clAmdFftCopyPlan",
"clAmdFftBakePlan",
"clAmdFftDestroyPlan",
"clAmdFftGetPlanContext",
"clAmdFftGetPlanPrecision",
"clAmdFftSetPlanPrecision",
"clAmdFftGetPlanScale",
"clAmdFftSetPlanScale",
"clAmdFftGetPlanBatchSize",
"clAmdFftSetPlanBatchSize",
"clAmdFftGetPlanDim",
"clAmdFftSetPlanDim",
"clAmdFftGetPlanLength",
"clAmdFftSetPlanLength",
"clAmdFftGetPlanInStride",
"clAmdFftSetPlanInStride",
"clAmdFftGetPlanOutStride",
"clAmdFftSetPlanOutStride",
"clAmdFftGetPlanDistance",
"clAmdFftSetPlanDistance",
"clAmdFftGetLayout",
"clAmdFftSetLayout",
"clAmdFftGetResultLocation",
"clAmdFftSetResultLocation",
"clAmdFftGetPlanTransposeResult",
"clAmdFftSetPlanTransposeResult",
"clAmdFftGetTmpBufSize",
"clAmdFftEnqueueTransform",
};
static void* openclamdfft_check_fn(int ID)
{
void* func = CV_CL_GET_PROC_ADDRESS(openclamdfft_fn_names[ID]);
if (!func)
{
std::ostringstream msg;
msg << "OpenCL AMD FFT function is not available: [" << openclamdfft_fn_names[ID] << "]";
CV_Error(CV_StsBadFunc, msg.str());
}
extern void* openclamdfft_fn_ptrs[];
*(void**)(openclamdfft_fn_ptrs[ID]) = func;
return func;
}
namespace {
// generated by parser_clamdfft.py
template <int ID, typename _R>
struct openclamdfft_fn0
{
typedef _R (*FN)();
static _R switch_fn()
{ return ((FN)openclamdfft_check_fn(ID))(); }
};
template <int ID, typename _R, typename _T1>
struct openclamdfft_fn1
{
typedef _R (*FN)(_T1);
static _R switch_fn(_T1 p1)
{ return ((FN)openclamdfft_check_fn(ID))(p1); }
};
template <int ID, typename _R, typename _T1, typename _T2>
struct openclamdfft_fn2
{
typedef _R (*FN)(_T1, _T2);
static _R switch_fn(_T1 p1, _T2 p2)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3>
struct openclamdfft_fn3
{
typedef _R (*FN)(_T1, _T2, _T3);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4>
struct openclamdfft_fn4
{
typedef _R (*FN)(_T1, _T2, _T3, _T4);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5>
struct openclamdfft_fn5
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6>
struct openclamdfft_fn6
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7>
struct openclamdfft_fn7
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8>
struct openclamdfft_fn8
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9>
struct openclamdfft_fn9
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10>
struct openclamdfft_fn10
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11>
struct openclamdfft_fn11
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12>
struct openclamdfft_fn12
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13>
struct openclamdfft_fn13
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14>
struct openclamdfft_fn14
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15>
struct openclamdfft_fn15
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14, _T15 p15)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16>
struct openclamdfft_fn16
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14, _T15 p15, _T16 p16)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17>
struct openclamdfft_fn17
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14, _T15 p15, _T16 p16, _T17 p17)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18>
struct openclamdfft_fn18
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14, _T15 p15, _T16 p16, _T17 p17, _T18 p18)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18, typename _T19>
struct openclamdfft_fn19
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18, _T19);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14, _T15 p15, _T16 p16, _T17 p17, _T18 p18, _T19 p19)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18, typename _T19, typename _T20>
struct openclamdfft_fn20
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18, _T19, _T20);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14, _T15 p15, _T16 p16, _T17 p17, _T18 p18, _T19 p19, _T20 p20)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18, typename _T19, typename _T20, typename _T21>
struct openclamdfft_fn21
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18, _T19, _T20, _T21);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14, _T15 p15, _T16 p16, _T17 p17, _T18 p18, _T19 p19, _T20 p20, _T21 p21)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21); }
};
template <int ID, typename _R, typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18, typename _T19, typename _T20, typename _T21, typename _T22>
struct openclamdfft_fn22
{
typedef _R (*FN)(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18, _T19, _T20, _T21, _T22);
static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4, _T5 p5, _T6 p6, _T7 p7, _T8 p8, _T9 p9, _T10 p10, _T11 p11, _T12 p12, _T13 p13, _T14 p14, _T15 p15, _T16 p16, _T17 p17, _T18 p18, _T19 p19, _T20 p20, _T21 p21, _T22 p22)
{ return ((FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22); }
};
}
// generated by parser_clamdfft.py
clAmdFftStatus (*clAmdFftSetup)(const clAmdFftSetupData*) = openclamdfft_fn1<OPENCLAMDFFT_FN_clAmdFftSetup, clAmdFftStatus, const clAmdFftSetupData*>::switch_fn;
clAmdFftStatus (*clAmdFftTeardown)() = openclamdfft_fn0<OPENCLAMDFFT_FN_clAmdFftTeardown, clAmdFftStatus>::switch_fn;
clAmdFftStatus (*clAmdFftGetVersion)(cl_uint*, cl_uint*, cl_uint*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftGetVersion, clAmdFftStatus, cl_uint*, cl_uint*, cl_uint*>::switch_fn;
clAmdFftStatus (*clAmdFftCreateDefaultPlan)(clAmdFftPlanHandle*, cl_context, const clAmdFftDim, const size_t*) = openclamdfft_fn4<OPENCLAMDFFT_FN_clAmdFftCreateDefaultPlan, clAmdFftStatus, clAmdFftPlanHandle*, cl_context, const clAmdFftDim, const size_t*>::switch_fn;
clAmdFftStatus (*clAmdFftCopyPlan)(clAmdFftPlanHandle*, cl_context, clAmdFftPlanHandle) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftCopyPlan, clAmdFftStatus, clAmdFftPlanHandle*, cl_context, clAmdFftPlanHandle>::switch_fn;
clAmdFftStatus (*clAmdFftBakePlan)(clAmdFftPlanHandle, cl_uint, cl_command_queue*, void (CL_CALLBACK*) (clAmdFftPlanHandle plHandle, void* user_data), void*) = openclamdfft_fn5<OPENCLAMDFFT_FN_clAmdFftBakePlan, clAmdFftStatus, clAmdFftPlanHandle, cl_uint, cl_command_queue*, void (CL_CALLBACK*) (clAmdFftPlanHandle plHandle, void* user_data), void*>::switch_fn;
clAmdFftStatus (*clAmdFftDestroyPlan)(clAmdFftPlanHandle*) = openclamdfft_fn1<OPENCLAMDFFT_FN_clAmdFftDestroyPlan, clAmdFftStatus, clAmdFftPlanHandle*>::switch_fn;
clAmdFftStatus (*clAmdFftGetPlanContext)(const clAmdFftPlanHandle, cl_context*) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftGetPlanContext, clAmdFftStatus, const clAmdFftPlanHandle, cl_context*>::switch_fn;
clAmdFftStatus (*clAmdFftGetPlanPrecision)(const clAmdFftPlanHandle, clAmdFftPrecision*) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftGetPlanPrecision, clAmdFftStatus, const clAmdFftPlanHandle, clAmdFftPrecision*>::switch_fn;
clAmdFftStatus (*clAmdFftSetPlanPrecision)(clAmdFftPlanHandle, clAmdFftPrecision) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftSetPlanPrecision, clAmdFftStatus, clAmdFftPlanHandle, clAmdFftPrecision>::switch_fn;
clAmdFftStatus (*clAmdFftGetPlanScale)(const clAmdFftPlanHandle, clAmdFftDirection, cl_float*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftGetPlanScale, clAmdFftStatus, const clAmdFftPlanHandle, clAmdFftDirection, cl_float*>::switch_fn;
clAmdFftStatus (*clAmdFftSetPlanScale)(clAmdFftPlanHandle, clAmdFftDirection, cl_float) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftSetPlanScale, clAmdFftStatus, clAmdFftPlanHandle, clAmdFftDirection, cl_float>::switch_fn;
clAmdFftStatus (*clAmdFftGetPlanBatchSize)(const clAmdFftPlanHandle, size_t*) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftGetPlanBatchSize, clAmdFftStatus, const clAmdFftPlanHandle, size_t*>::switch_fn;
clAmdFftStatus (*clAmdFftSetPlanBatchSize)(clAmdFftPlanHandle, size_t) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftSetPlanBatchSize, clAmdFftStatus, clAmdFftPlanHandle, size_t>::switch_fn;
clAmdFftStatus (*clAmdFftGetPlanDim)(const clAmdFftPlanHandle, clAmdFftDim*, cl_uint*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftGetPlanDim, clAmdFftStatus, const clAmdFftPlanHandle, clAmdFftDim*, cl_uint*>::switch_fn;
clAmdFftStatus (*clAmdFftSetPlanDim)(clAmdFftPlanHandle, const clAmdFftDim) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftSetPlanDim, clAmdFftStatus, clAmdFftPlanHandle, const clAmdFftDim>::switch_fn;
clAmdFftStatus (*clAmdFftGetPlanLength)(const clAmdFftPlanHandle, const clAmdFftDim, size_t*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftGetPlanLength, clAmdFftStatus, const clAmdFftPlanHandle, const clAmdFftDim, size_t*>::switch_fn;
clAmdFftStatus (*clAmdFftSetPlanLength)(clAmdFftPlanHandle, const clAmdFftDim, const size_t*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftSetPlanLength, clAmdFftStatus, clAmdFftPlanHandle, const clAmdFftDim, const size_t*>::switch_fn;
clAmdFftStatus (*clAmdFftGetPlanInStride)(const clAmdFftPlanHandle, const clAmdFftDim, size_t*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftGetPlanInStride, clAmdFftStatus, const clAmdFftPlanHandle, const clAmdFftDim, size_t*>::switch_fn;
clAmdFftStatus (*clAmdFftSetPlanInStride)(clAmdFftPlanHandle, const clAmdFftDim, size_t*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftSetPlanInStride, clAmdFftStatus, clAmdFftPlanHandle, const clAmdFftDim, size_t*>::switch_fn;
clAmdFftStatus (*clAmdFftGetPlanOutStride)(const clAmdFftPlanHandle, const clAmdFftDim, size_t*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftGetPlanOutStride, clAmdFftStatus, const clAmdFftPlanHandle, const clAmdFftDim, size_t*>::switch_fn;
clAmdFftStatus (*clAmdFftSetPlanOutStride)(clAmdFftPlanHandle, const clAmdFftDim, size_t*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftSetPlanOutStride, clAmdFftStatus, clAmdFftPlanHandle, const clAmdFftDim, size_t*>::switch_fn;
clAmdFftStatus (*clAmdFftGetPlanDistance)(const clAmdFftPlanHandle, size_t*, size_t*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftGetPlanDistance, clAmdFftStatus, const clAmdFftPlanHandle, size_t*, size_t*>::switch_fn;
clAmdFftStatus (*clAmdFftSetPlanDistance)(clAmdFftPlanHandle, size_t, size_t) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftSetPlanDistance, clAmdFftStatus, clAmdFftPlanHandle, size_t, size_t>::switch_fn;
clAmdFftStatus (*clAmdFftGetLayout)(const clAmdFftPlanHandle, clAmdFftLayout*, clAmdFftLayout*) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftGetLayout, clAmdFftStatus, const clAmdFftPlanHandle, clAmdFftLayout*, clAmdFftLayout*>::switch_fn;
clAmdFftStatus (*clAmdFftSetLayout)(clAmdFftPlanHandle, clAmdFftLayout, clAmdFftLayout) = openclamdfft_fn3<OPENCLAMDFFT_FN_clAmdFftSetLayout, clAmdFftStatus, clAmdFftPlanHandle, clAmdFftLayout, clAmdFftLayout>::switch_fn;
clAmdFftStatus (*clAmdFftGetResultLocation)(const clAmdFftPlanHandle, clAmdFftResultLocation*) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftGetResultLocation, clAmdFftStatus, const clAmdFftPlanHandle, clAmdFftResultLocation*>::switch_fn;
clAmdFftStatus (*clAmdFftSetResultLocation)(clAmdFftPlanHandle, clAmdFftResultLocation) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftSetResultLocation, clAmdFftStatus, clAmdFftPlanHandle, clAmdFftResultLocation>::switch_fn;
clAmdFftStatus (*clAmdFftGetPlanTransposeResult)(const clAmdFftPlanHandle, clAmdFftResultTransposed*) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftGetPlanTransposeResult, clAmdFftStatus, const clAmdFftPlanHandle, clAmdFftResultTransposed*>::switch_fn;
clAmdFftStatus (*clAmdFftSetPlanTransposeResult)(clAmdFftPlanHandle, clAmdFftResultTransposed) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftSetPlanTransposeResult, clAmdFftStatus, clAmdFftPlanHandle, clAmdFftResultTransposed>::switch_fn;
clAmdFftStatus (*clAmdFftGetTmpBufSize)(const clAmdFftPlanHandle, size_t*) = openclamdfft_fn2<OPENCLAMDFFT_FN_clAmdFftGetTmpBufSize, clAmdFftStatus, const clAmdFftPlanHandle, size_t*>::switch_fn;
clAmdFftStatus (*clAmdFftEnqueueTransform)(clAmdFftPlanHandle, clAmdFftDirection, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*, cl_mem*, cl_mem*, cl_mem) = openclamdfft_fn10<OPENCLAMDFFT_FN_clAmdFftEnqueueTransform, clAmdFftStatus, clAmdFftPlanHandle, clAmdFftDirection, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*, cl_mem*, cl_mem*, cl_mem>::switch_fn;
// generated by parser_clamdfft.py
void* openclamdfft_fn_ptrs[] = {
&clAmdFftSetup,
&clAmdFftTeardown,
&clAmdFftGetVersion,
&clAmdFftCreateDefaultPlan,
&clAmdFftCopyPlan,
&clAmdFftBakePlan,
&clAmdFftDestroyPlan,
&clAmdFftGetPlanContext,
&clAmdFftGetPlanPrecision,
&clAmdFftSetPlanPrecision,
&clAmdFftGetPlanScale,
&clAmdFftSetPlanScale,
&clAmdFftGetPlanBatchSize,
&clAmdFftSetPlanBatchSize,
&clAmdFftGetPlanDim,
&clAmdFftSetPlanDim,
&clAmdFftGetPlanLength,
&clAmdFftSetPlanLength,
&clAmdFftGetPlanInStride,
&clAmdFftSetPlanInStride,
&clAmdFftGetPlanOutStride,
&clAmdFftSetPlanOutStride,
&clAmdFftGetPlanDistance,
&clAmdFftSetPlanDistance,
&clAmdFftGetLayout,
&clAmdFftSetLayout,
&clAmdFftGetResultLocation,
&clAmdFftSetResultLocation,
&clAmdFftGetPlanTransposeResult,
&clAmdFftSetPlanTransposeResult,
&clAmdFftGetTmpBufSize,
&clAmdFftEnqueueTransform,
};
#endif
import sys, os, re
#
# Parser helpers
#
def remove_comments(s):
def replacer(match):
s = match.group(0)
if s.startswith('/'):
return ""
else:
return s
pattern = re.compile(
r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"',
re.DOTALL | re.MULTILINE
)
return re.sub(pattern, replacer, s)
def getTokens(s):
return re.findall(r'[a-z_A-Z0-9_]+|[^[a-z_A-Z0-9_ \n\r\t]', s)
def getParameter(pos, tokens):
deep = 0
p = []
while True:
if pos >= len(tokens):
break
if (tokens[pos] == ')' or tokens[pos] == ',') and deep == 0:
if tokens[pos] == ')':
pos = len(tokens)
else:
pos += 1
break
if tokens[pos] == '(':
deep += 1
if tokens[pos] == ')':
deep -= 1
p.append(tokens[pos])
pos += 1
return (' '.join(p), pos)
def getParameters(i, tokens):
assert tokens[i] == '('
i += 1
params = []
while True:
if i >= len(tokens) or tokens[i] == ')':
break
(param, i) = getParameter(i, tokens)
if len(param) > 0:
params.append(param)
else:
assert False
break
if len(params) > 0 and params[0] == 'void':
del params[0]
return params
def postProcessParameters(fns):
for fn in fns:
fn['params_full'] = list(fn['params'])
for i in range(len(fn['params'])):
p = fn['params'][i]
if p.find('(') != -1:
p = re.sub(r'\* *([a-zA-Z0-9_]*) ?\)', '*)', p, 1)
fn['params'][i] = p
continue
parts = re.findall(r'[a-z_A-Z0-9]+|\*', p)
if len(parts) > 1:
if parts[-1].find('*') == -1:
del parts[-1]
fn['params'][i] = ' '.join(parts)
#
# Generator helpers
#
def outputToString(f):
def wrapped(*args, **kwargs):
from cStringIO import StringIO
old_stdout = sys.stdout
sys.stdout = str_stdout = StringIO()
res = f(*args, **kwargs)
assert res is None
sys.stdout = old_stdout
result = str_stdout.getvalue()
result = re.sub(r'([^\n ]) [ ]+', r'\1 ', result) # don't remove spaces at start of line
result = re.sub(r' ,', ',', result)
result = re.sub(r' \*', '*', result)
result = re.sub(r'\( ', '(', result)
result = re.sub(r' \)', ')', result)
return result
return wrapped
@outputToString
def generateEnums(fns, prefix='OPENCL_FN'):
print '// generated by %s' % os.path.basename(sys.argv[0])
print 'enum %s_ID {' % prefix
first = True
for fn in fns:
print ' %s_%s%s,' % (prefix, fn['name'], ' = 0' if first else '')
first = False
print '};'
@outputToString
def generateNames(fns, prefix='opencl_fn'):
print '// generated by %s' % os.path.basename(sys.argv[0])
print 'const char* %s_names[] = {' % prefix
for fn in fns:
print ' "%s",' % (fn['name'])
print '};'
@outputToString
def generatePtrs(fns, prefix='opencl_fn'):
print '// generated by %s' % os.path.basename(sys.argv[0])
print 'void* %s_ptrs[] = {' % prefix
for fn in fns:
print ' &%s,' % (fn['name'])
print '};'
@outputToString
def generateRemapOrigin(fns):
print '// generated by %s' % os.path.basename(sys.argv[0])
for fn in fns:
print '#define %s %s_' % (fn['name'], fn['name'])
@outputToString
def generateRemapDynamic(fns):
print '// generated by %s' % os.path.basename(sys.argv[0])
for fn in fns:
print '#undef %s' % (fn['name'])
print '#define %s %s_pfn' % (fn['name'], fn['name'])
@outputToString
def generateParamsCfg(fns):
for fn in fns:
print '%s %d' % (fn['name'], len(fn['params']))
@outputToString
def generateFnDeclaration(fns):
print '// generated by %s' % os.path.basename(sys.argv[0])
for fn in fns:
print 'extern CL_RUNTIME_EXPORT %s %s (%s *%s)(%s);' % (' '.join(fn['modifiers']), ' '.join(fn['ret']), ' '.join(fn['calling']),
fn['name'], ', '.join(fn['params'] if not fn.has_key('params_full') else fn['params_full']))
@outputToString
def generateFnDefinition(fns, lprefix='opencl_fn', uprefix='OPENCL_FN'):
print '// generated by %s' % os.path.basename(sys.argv[0])
for fn in fns:
print '%s%s (%s *%s)(%s) = %s%d<%s_%s, %s%s>::switch_fn;' % \
((' '.join(fn['modifiers'] + ' ') if len(fn['modifiers']) > 0 else ''),
' '.join(fn['ret']), ' '.join(fn['calling']), fn['name'], ', '.join(fn['params']), \
lprefix, len(fn['params']), uprefix, fn['name'], ' '.join(fn['ret']), ('' if len(fn['params']) == 0 else ', ' + ', '.join(fn['params'])))
@outputToString
def generateTemplates(sz, lprefix, switch_name, calling_convention=''):
print '// generated by %s' % os.path.basename(sys.argv[0])
for sz in range(sz):
template_params = ['int ID', 'typename _R']
types = []
types_with_params = []
params = []
for i in range(1, sz + 1):
template_params.append('typename _T%d' % i)
types.append('_T%d' % i)
types_with_params.append('_T%d p%d' % (i, i))
params.append('p%d' % i)
print 'template <%s>' % ', '.join(template_params)
print 'struct %s%d' % (lprefix, sz)
print '{'
print ' typedef _R (%s *FN)(%s);' % (calling_convention, ', '.join(types))
print ' static _R %s switch_fn(%s)' % (calling_convention, ', '.join(types_with_params))
print ' { return ((FN)%s(ID))(%s); }' % (switch_name, ', '.join(params))
print '};'
print ''
def ProcessTemplate(inputFile, ctx, noteLine='//\n// AUTOGENERATED, DO NOT EDIT\n//'):
f = open(inputFile, "r")
if noteLine:
print noteLine
for line in f:
if line.startswith('@'):
assert line[-1] == '\n'
line = line[:-1] # remove '\n'
assert line[-1] == '@'
name = line[1:-1]
assert ctx.has_key(name), name
line = ctx[name]
print line,
f.close()
#!/bin/bash -e
echo "Generate files for CL runtime..."
cat sources/opencl11/cl.h | python parser_cl.py cl_runtime_opencl11
cat sources/opencl12/cl.h | python parser_cl.py cl_runtime_opencl12
cat sources/clAmdBlas.h | python parser_clamdblas.py
cat sources/clAmdFft.h | python parser_clamdfft.py
echo "Generate files for CL runtime... Done"
#!/bin/python
# usage:
# cat opencl11/cl.h | $0 cl_runtime_opencl11
# cat opencl12/cl.h | $0 cl_runtime_opencl12
import sys, re;
from common import remove_comments, getTokens, getParameters, postProcessParameters
try:
if len(sys.argv) > 1:
outfile = open('../../../include/opencv2/ocl/cl_runtime/' + sys.argv[1] + '.hpp', "w")
outfile_impl = open('../' + sys.argv[1] + '_impl.hpp', "w")
if len(sys.argv) > 2:
f = open(sys.argv[2], "r")
else:
f = sys.stdin
else:
sys.exit("ERROR. Specify output file")
except:
sys.exit("ERROR. Can't open input/output file, check parameters")
fns = []
while True:
line = f.readline()
if len(line) == 0:
break
assert isinstance(line, str)
parts = line.split();
if line.startswith('extern') and line.find('CL_API_CALL') != -1:
# read block of lines
while True:
nl = f.readline()
nl = nl.strip()
nl = re.sub(r'\n', r'', nl)
if len(nl) == 0:
break;
line += ' ' + nl
line = remove_comments(line)
parts = getTokens(line)
fn = {}
modifiers = []
ret = []
calling = []
i = 1
while (i < len(parts)):
if parts[i].startswith('CL_'):
modifiers.append(parts[i])
else:
break
i += 1
while (i < len(parts)):
if not parts[i].startswith('CL_'):
ret.append(parts[i])
else:
break
i += 1
while (i < len(parts)):
calling.append(parts[i])
i += 1
if parts[i - 1] == 'CL_API_CALL':
break
fn['modifiers'] = [] # modifiers
fn['ret'] = ret
fn['calling'] = [] # calling
# print 'modifiers='+' '.join(modifiers)
# print 'ret='+' '.join(type)
# print 'calling='+' '.join(calling)
name = parts[i]; i += 1;
fn['name'] = name
print 'name=' + name
params = getParameters(i, parts)
fn['params'] = params
# print 'params="'+','.join(params)+'"'
fns.append(fn)
f.close()
print 'Found %d functions' % len(fns)
postProcessParameters(fns)
from pprint import pprint
pprint(fns)
from common import *
ctx = {}
ctx['CL_REMAP_ORIGIN'] = generateRemapOrigin(fns)
ctx['CL_REMAP_DYNAMIC'] = generateRemapDynamic(fns)
ctx['CL_FN_DECLARATIONS'] = generateFnDeclaration(fns)
sys.stdout = outfile
ProcessTemplate('template/cl_runtime_opencl.hpp.in', ctx)
ctx['CL_FN_ENUMS'] = generateEnums(fns)
ctx['CL_FN_NAMES'] = generateNames(fns)
ctx['CL_FN_DEFINITIONS'] = generateFnDefinition(fns)
ctx['CL_FN_PTRS'] = generatePtrs(fns)
ctx['CL_FN_SWITCH'] = generateTemplates(15, 'opencl_fn', 'opencl_check_fn')
sys.stdout = outfile_impl
ProcessTemplate('template/cl_runtime_impl_opencl.hpp.in', ctx)
#!/bin/python
# usage:
# cat clAmdBlas.h | $0
import sys, re;
from common import remove_comments, getTokens, getParameters, postProcessParameters
try:
if len(sys.argv) > 1:
f = open(sys.argv[1], "r")
else:
f = sys.stdin
except:
sys.exit("ERROR. Can't open input file")
fns = []
while True:
line = f.readline()
if len(line) == 0:
break
assert isinstance(line, str)
line = line.strip()
parts = line.split();
if (line.startswith('clAmd') or line.startswith('cl_') or line == 'void') and len(line.split()) == 1 and line.find('(') == -1:
fn = {}
modifiers = []
ret = []
calling = []
i = 0
while (i < len(parts)):
if parts[i].startswith('CL_'):
modifiers.append(parts[i])
else:
break
i += 1
while (i < len(parts)):
if not parts[i].startswith('CL_'):
ret.append(parts[i])
else:
break
i += 1
while (i < len(parts)):
calling.append(parts[i])
i += 1
fn['modifiers'] = [] # modifiers
fn['ret'] = ret
fn['calling'] = calling
# print 'modifiers='+' '.join(modifiers)
# print 'ret='+' '.join(type)
# print 'calling='+' '.join(calling)
# read block of lines
line = f.readline()
while True:
nl = f.readline()
nl = nl.strip()
nl = re.sub(r'\n', r'', nl)
if len(nl) == 0:
break;
line += ' ' + nl
line = remove_comments(line)
parts = getTokens(line)
i = 0;
name = parts[i]; i += 1;
fn['name'] = name
print 'name=' + name
params = getParameters(i, parts)
fn['params'] = params
# print 'params="'+','.join(params)+'"'
fns.append(fn)
f.close()
print 'Found %d functions' % len(fns)
postProcessParameters(fns)
from pprint import pprint
pprint(fns)
from common import *
ctx = {}
ctx['CLAMDBLAS_REMAP_ORIGIN'] = generateRemapOrigin(fns)
ctx['CLAMDBLAS_REMAP_DYNAMIC'] = generateRemapDynamic(fns)
ctx['CLAMDBLAS_FN_DECLARATIONS'] = generateFnDeclaration(fns)
sys.stdout = open('../../../include/opencv2/ocl/cl_runtime/clamdblas_runtime.hpp', 'w')
ProcessTemplate('template/clamdblas_runtime.hpp.in', ctx)
ctx['CL_FN_ENUMS'] = generateEnums(fns, 'OPENCLAMDBLAS_FN')
ctx['CL_FN_NAMES'] = generateNames(fns, 'openclamdblas_fn')
ctx['CL_FN_DEFINITIONS'] = generateFnDefinition(fns, 'openclamdblas_fn', 'OPENCLAMDBLAS_FN')
ctx['CL_FN_PTRS'] = generatePtrs(fns, 'openclamdblas_fn')
ctx['CL_FN_SWITCH'] = generateTemplates(23, 'openclamdblas_fn', 'openclamdblas_check_fn', '')
sys.stdout = open('../clamdblas_runtime.cpp', 'w')
ProcessTemplate('template/clamdblas_runtime.cpp.in', ctx)
#!/bin/python
# usage:
# cat clAmdFft.h | $0
import sys, re;
from common import remove_comments, getTokens, getParameters, postProcessParameters
try:
if len(sys.argv) > 1:
f = open(sys.argv[1], "r")
else:
f = sys.stdin
except:
sys.exit("ERROR. Can't open input file")
fns = []
while True:
line = f.readline()
if len(line) == 0:
break
assert isinstance(line, str)
line = line.strip()
if line.startswith('CLAMDFFTAPI'):
line = re.sub(r'\n', r'', line)
while True:
nl = f.readline()
nl = nl.strip()
nl = re.sub(r'\n', r'', nl)
if len(nl) == 0:
break;
line += ' ' + nl
line = remove_comments(line)
parts = getTokens(line)
fn = {}
modifiers = []
ret = []
calling = []
i = 0
while True:
if parts[i] == "CLAMDFFTAPI":
modifiers.append(parts[i])
else:
break
i += 1
while (i < len(parts)):
if not parts[i] == '(':
ret.append(parts[i])
else:
del ret[-1]
i -= 1
break
i += 1
fn['modifiers'] = [] # modifiers
fn['ret'] = ret
fn['calling'] = calling
name = parts[i]; i += 1;
fn['name'] = name
print 'name=' + name
params = getParameters(i, parts)
if len(params) > 0 and params[0] == 'void':
del params[0]
fn['params'] = params
# print 'params="'+','.join(params)+'"'
fns.append(fn)
f.close()
print 'Found %d functions' % len(fns)
postProcessParameters(fns)
from pprint import pprint
pprint(fns)
from common import *
ctx = {}
ctx['CLAMDFFT_REMAP_ORIGIN'] = generateRemapOrigin(fns)
ctx['CLAMDFFT_REMAP_DYNAMIC'] = generateRemapDynamic(fns)
ctx['CLAMDFFT_FN_DECLARATIONS'] = generateFnDeclaration(fns)
sys.stdout = open('../../../include/opencv2/ocl/cl_runtime/clamdfft_runtime.hpp', 'w')
ProcessTemplate('template/clamdfft_runtime.hpp.in', ctx)
ctx['CL_FN_ENUMS'] = generateEnums(fns, 'OPENCLAMDFFT_FN')
ctx['CL_FN_NAMES'] = generateNames(fns, 'openclamdfft_fn')
ctx['CL_FN_DEFINITIONS'] = generateFnDefinition(fns, 'openclamdfft_fn', 'OPENCLAMDFFT_FN')
ctx['CL_FN_PTRS'] = generatePtrs(fns, 'openclamdfft_fn')
ctx['CL_FN_SWITCH'] = generateTemplates(23, 'openclamdfft_fn', 'openclamdfft_check_fn', '')
sys.stdout = open('../clamdfft_runtime.cpp', 'w')
ProcessTemplate('template/clamdfft_runtime.cpp.in', ctx)
@CL_FN_ENUMS@
@CL_FN_NAMES@
namespace {
@CL_FN_SWITCH@
}
@CL_FN_DEFINITIONS@
@CL_FN_PTRS@
#ifndef __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__
#define __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__
#ifdef HAVE_OPENCL
#if defined __APPLE__ && !defined(IOS)
#include <OpenCL/cl.h>
#else
@CL_REMAP_ORIGIN@
#if defined __APPLE__
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif
@CL_REMAP_DYNAMIC@
#ifndef CL_RUNTIME_EXPORT
#if (defined(BUILD_SHARED_LIBS) || defined(OPENCV_OCL_SHARED)) && (defined WIN32 || defined _WIN32 || defined WINCE)
#define CL_RUNTIME_EXPORT __declspec(dllimport)
#else
#define CL_RUNTIME_EXPORT
#endif
#endif
@CL_FN_DECLARATIONS@
#endif
#endif
#endif // __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__
#include "precomp.hpp"
#ifdef HAVE_CLAMDBLAS
#include "opencv2/ocl/cl_runtime/cl_runtime.hpp"
#include "opencv2/ocl/cl_runtime/clamdblas_runtime.hpp"
#if defined(_WIN32)
static void* WinGetProcAddress(const char* name)
{
static HMODULE opencl_module = NULL;
if (!opencl_module)
{
opencl_module = GetModuleHandleA("clAmdBlas.dll");
if (!opencl_module)
{
opencl_module = LoadLibraryA("clAmdBlas.dll");
if (!opencl_module)
return NULL;
}
}
return (void*)GetProcAddress(opencl_module, name);
}
#define CV_CL_GET_PROC_ADDRESS(name) WinGetProcAddress(name)
#endif // _WIN32
#if defined(linux)
#include <dlfcn.h>
#include <stdio.h>
static void* GetProcAddress (const char* name)
{
static void* h = NULL;
if (!h)
{
h = dlopen("libclAmdBlas.so", RTLD_LAZY | RTLD_GLOBAL);
if (!h)
return NULL;
}
return dlsym(h, name);
}
#define CV_CL_GET_PROC_ADDRESS(name) GetProcAddress(name)
#endif
#ifndef CV_CL_GET_PROC_ADDRESS
#define CV_CL_GET_PROC_ADDRESS(name) NULL
#endif
@CL_FN_ENUMS@
@CL_FN_NAMES@
static void* openclamdblas_check_fn(int ID)
{
void* func = CV_CL_GET_PROC_ADDRESS(openclamdblas_fn_names[ID]);
if (!func)
{
std::ostringstream msg;
msg << "OpenCL AMD BLAS function is not available: [" << openclamdblas_fn_names[ID] << "]";
CV_Error(CV_StsBadFunc, msg.str());
}
extern void* openclamdblas_fn_ptrs[];
*(void**)(openclamdblas_fn_ptrs[ID]) = func;
return func;
}
namespace {
@CL_FN_SWITCH@
}
@CL_FN_DEFINITIONS@
@CL_FN_PTRS@
#endif
#ifndef __OPENCV_OCL_CLAMDBLAS_RUNTIME_HPP__
#define __OPENCV_OCL_CLAMDBLAS_RUNTIME_HPP__
#ifdef HAVE_CLAMDBLAS
@CLAMDBLAS_REMAP_ORIGIN@
#include <clAmdBlas.h>
@CLAMDBLAS_REMAP_DYNAMIC@
#ifndef CL_RUNTIME_EXPORT
#if (defined(BUILD_SHARED_LIBS) || defined(OPENCV_OCL_SHARED)) && (defined WIN32 || defined _WIN32 || defined WINCE)
#define CL_RUNTIME_EXPORT __declspec(dllimport)
#else
#define CL_RUNTIME_EXPORT
#endif
#endif
@CLAMDBLAS_FN_DECLARATIONS@
#endif
#endif // __OPENCV_OCL_CLAMDBLAS_RUNTIME_HPP__
#include "precomp.hpp"
#ifdef HAVE_CLAMDFFT
#include "opencv2/ocl/cl_runtime/cl_runtime.hpp"
#include "opencv2/ocl/cl_runtime/clamdfft_runtime.hpp"
#if defined(_WIN32)
static void* WinGetProcAddress(const char* name)
{
static HMODULE opencl_module = NULL;
if (!opencl_module)
{
opencl_module = GetModuleHandleA("clAmdFft.Runtime.dll");
if (!opencl_module)
{
opencl_module = LoadLibraryA("clAmdFft.Runtime.dll");
if (!opencl_module)
return NULL;
}
}
return (void*)GetProcAddress(opencl_module, name);
}
#define CV_CL_GET_PROC_ADDRESS(name) WinGetProcAddress(name)
#endif // _WIN32
#if defined(linux)
#include <dlfcn.h>
#include <stdio.h>
static void* GetProcAddress (const char* name)
{
static void* h = NULL;
if (!h)
{
h = dlopen("libclAmdFft.Runtime.so", RTLD_LAZY | RTLD_GLOBAL);
if (!h)
return NULL;
}
return dlsym(h, name);
}
#define CV_CL_GET_PROC_ADDRESS(name) GetProcAddress(name)
#endif
#ifndef CV_CL_GET_PROC_ADDRESS
#define CV_CL_GET_PROC_ADDRESS(name) NULL
#endif
@CL_FN_ENUMS@
@CL_FN_NAMES@
static void* openclamdfft_check_fn(int ID)
{
void* func = CV_CL_GET_PROC_ADDRESS(openclamdfft_fn_names[ID]);
if (!func)
{
std::ostringstream msg;
msg << "OpenCL AMD FFT function is not available: [" << openclamdfft_fn_names[ID] << "]";
CV_Error(CV_StsBadFunc, msg.str());
}
extern void* openclamdfft_fn_ptrs[];
*(void**)(openclamdfft_fn_ptrs[ID]) = func;
return func;
}
namespace {
@CL_FN_SWITCH@
}
@CL_FN_DEFINITIONS@
@CL_FN_PTRS@
#endif
#ifndef __OPENCV_OCL_CLAMDFFT_RUNTIME_HPP__
#define __OPENCV_OCL_CLAMDFFT_RUNTIME_HPP__
#ifdef HAVE_CLAMDFFT
@CLAMDFFT_REMAP_ORIGIN@
#include <clAmdFft.h>
@CLAMDFFT_REMAP_DYNAMIC@
#ifndef CL_RUNTIME_EXPORT
#if (defined(BUILD_SHARED_LIBS) || defined(OPENCV_OCL_SHARED)) && (defined WIN32 || defined _WIN32 || defined WINCE)
#define CL_RUNTIME_EXPORT __declspec(dllimport)
#else
#define CL_RUNTIME_EXPORT
#endif
#endif
@CLAMDFFT_FN_DECLARATIONS@
#endif
#endif // __OPENCV_OCL_CLAMDFFT_RUNTIME_HPP__
...@@ -59,7 +59,7 @@ namespace cv { namespace ocl { ...@@ -59,7 +59,7 @@ namespace cv { namespace ocl {
}} }}
void cv::ocl::fft_teardown(){} void cv::ocl::fft_teardown(){}
#else #else
#include "clAmdFft.h" #include "opencv2/ocl/cl_runtime/clamdfft_runtime.hpp"
namespace cv namespace cv
{ {
namespace ocl namespace ocl
......
...@@ -73,7 +73,7 @@ void cv::ocl::clBlasTeardown() ...@@ -73,7 +73,7 @@ void cv::ocl::clBlasTeardown()
} }
#else #else
#include "clAmdBlas.h" #include "opencv2/ocl/cl_runtime/clamdblas_runtime.hpp"
using namespace cv; using namespace cv;
static bool clBlasInitialized = false; static bool clBlasInitialized = false;
......
...@@ -52,8 +52,18 @@ ...@@ -52,8 +52,18 @@
#pragma warning( disable: 4267 4324 4244 4251 4710 4711 4514 4996 ) #pragma warning( disable: 4267 4324 4244 4251 4710 4711 4514 4996 )
#endif #endif
#if defined(_WIN32)
#include <windows.h>
#endif
#include "cvconfig.h" #include "cvconfig.h"
#if defined(BUILD_SHARED_LIBS) && (defined WIN32 || defined _WIN32 || defined WINCE)
#define CL_RUNTIME_EXPORT __declspec(dllexport)
#else
#define CL_RUNTIME_EXPORT
#endif
#include <map> #include <map>
#include <iostream> #include <iostream>
#include <limits> #include <limits>
......
...@@ -46,11 +46,7 @@ ...@@ -46,11 +46,7 @@
#ifndef __OPENCV_OPENCL_SAFE_CALL_HPP__ #ifndef __OPENCV_OPENCL_SAFE_CALL_HPP__
#define __OPENCV_OPENCL_SAFE_CALL_HPP__ #define __OPENCV_OPENCL_SAFE_CALL_HPP__
#if defined __APPLE__ #include "opencv2/ocl/cl_runtime/cl_runtime.hpp"
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif
#if defined(__GNUC__) #if defined(__GNUC__)
#define openCLSafeCall(expr) ___openCLSafeCall(expr, __FILE__, __LINE__, __func__) #define openCLSafeCall(expr) ___openCLSafeCall(expr, __FILE__, __LINE__, __func__)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment