diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a1598d132..532fd88207 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -824,7 +824,14 @@ endif() if(HAVE_OPENCL) 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) status(" Include path:" ${OPENCL_INCLUDE_DIRS}) endif() diff --git a/cmake/OpenCVDetectOpenCL.cmake b/cmake/OpenCVDetectOpenCL.cmake index 2c96274a8c..7ed54b565d 100644 --- a/cmake/OpenCVDetectOpenCL.cmake +++ b/cmake/OpenCVDetectOpenCL.cmake @@ -6,7 +6,7 @@ if(APPLE) else(APPLE) #find_package(OpenCL QUIET) - if (NOT OPENCL_FOUND) + if(NOT OPENCL_FOUND) find_path(OPENCL_ROOT_DIR 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 @@ -20,18 +20,7 @@ else(APPLE) DOC "OpenCL include directory" NO_DEFAULT_PATH) - if (X86_64) - 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) + set(OPENCL_LIBRARY "OPENCL_DYNAMIC_LOAD") mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY) include(FindPackageHandleStandardArgs) @@ -40,20 +29,30 @@ else(APPLE) endif(APPLE) if(OPENCL_FOUND) - set(HAVE_OPENCL 1) - set(OPENCL_INCLUDE_DIRS ${OPENCL_INCLUDE_DIR}) - set(OPENCL_LIBRARIES ${OPENCL_LIBRARY}) - - if(WIN32 AND X86_64) - set(CLAMD_POSSIBLE_LIB_SUFFIXES lib64/import) - elseif(WIN32) - set(CLAMD_POSSIBLE_LIB_SUFFIXES lib32/import) + try_compile(HAVE_OPENCL11 + "${OpenCV_BINARY_DIR}" + "${OpenCV_SOURCE_DIR}/cmake/checks/opencl11.cpp" + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${OPENCL_INCLUDE_DIR}" + ) + if(NOT HAVE_OPENCL11) + message(STATUS "OpenCL 1.1 not found, ignore OpenCL SDK") + 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() - if(X86_64 AND UNIX) - set(CLAMD_POSSIBLE_LIB_SUFFIXES lib64) - elseif(X86 AND UNIX) - set(CLAMD_POSSIBLE_LIB_SUFFIXES lib32) + set(HAVE_OPENCL 1) + set(OPENCL_INCLUDE_DIRS ${OPENCL_INCLUDE_DIR}) + if(OPENCL_LIBRARY MATCHES "OPENCL_DYNAMIC_LOAD") + unset(OPENCL_LIBRARIES) + else() + set(OPENCL_LIBRARIES "${OPENCL_LIBRARY}") endif() if(WITH_OPENCLAMDFFT) @@ -70,16 +69,9 @@ if(OPENCL_FOUND) PATH_SUFFIXES include DOC "clAmdFft include directory") - find_library(CLAMDFFT_LIBRARY - NAMES clAmdFft.Runtime - HINTS ${CLAMDFFT_ROOT_DIR} - PATH_SUFFIXES ${CLAMD_POSSIBLE_LIB_SUFFIXES} - DOC "clAmdFft library") - - if(CLAMDFFT_LIBRARY AND CLAMDFFT_INCLUDE_DIR) + if(CLAMDFFT_INCLUDE_DIR) set(HAVE_CLAMDFFT 1) list(APPEND OPENCL_INCLUDE_DIRS "${CLAMDFFT_INCLUDE_DIR}") - list(APPEND OPENCL_LIBRARIES "${CLAMDFFT_LIBRARY}") endif() endif() @@ -97,16 +89,9 @@ if(OPENCL_FOUND) PATH_SUFFIXES include DOC "clAmdFft include directory") - find_library(CLAMDBLAS_LIBRARY - NAMES clAmdBlas - HINTS ${CLAMDBLAS_ROOT_DIR} - PATH_SUFFIXES ${CLAMD_POSSIBLE_LIB_SUFFIXES} - DOC "clAmdBlas library") - - if(CLAMDBLAS_LIBRARY AND CLAMDBLAS_INCLUDE_DIR) + if(CLAMDBLAS_INCLUDE_DIR) set(HAVE_CLAMDBLAS 1) list(APPEND OPENCL_INCLUDE_DIRS "${CLAMDBLAS_INCLUDE_DIR}") - list(APPEND OPENCL_LIBRARIES "${CLAMDBLAS_LIBRARY}") endif() endif() endif() diff --git a/cmake/checks/opencl11.cpp b/cmake/checks/opencl11.cpp new file mode 100644 index 0000000000..b17889d1d4 --- /dev/null +++ b/cmake/checks/opencl11.cpp @@ -0,0 +1,14 @@ +#if defined __APPLE__ +#include +#else +#include +#endif + +int main(int argc, char** argv) +{ +#ifdef CL_VERSION_1_1 +#else +#error OpenCL 1.1 not found +#endif + return 0; +} diff --git a/cmake/checks/opencl12.cpp b/cmake/checks/opencl12.cpp new file mode 100644 index 0000000000..639502e02a --- /dev/null +++ b/cmake/checks/opencl12.cpp @@ -0,0 +1,14 @@ +#if defined __APPLE__ +#include +#else +#include +#endif + +int main(int argc, char** argv) +{ +#ifdef CL_VERSION_1_2 +#else +#error OpenCL 1.2 not found +#endif + return 0; +} diff --git a/cmake/templates/cvconfig.h.cmake b/cmake/templates/cvconfig.h.cmake index 960becf381..14eb519d01 100644 --- a/cmake/templates/cvconfig.h.cmake +++ b/cmake/templates/cvconfig.h.cmake @@ -108,6 +108,8 @@ /* OpenCL Support */ #cmakedefine HAVE_OPENCL +#cmakedefine HAVE_OPENCL11 +#cmakedefine HAVE_OPENCL12 /* OpenEXR codec */ #cmakedefine HAVE_OPENEXR diff --git a/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime.hpp b/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime.hpp new file mode 100644 index 0000000000..3e62edec92 --- /dev/null +++ b/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime.hpp @@ -0,0 +1,16 @@ +#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__ diff --git a/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime_opencl11.hpp b/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime_opencl11.hpp new file mode 100644 index 0000000000..4155dce963 --- /dev/null +++ b/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime_opencl11.hpp @@ -0,0 +1,333 @@ +// +// 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 +#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 +#else +#include +#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__ diff --git a/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime_opencl12.hpp b/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime_opencl12.hpp new file mode 100644 index 0000000000..8d03fbff6a --- /dev/null +++ b/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime_opencl12.hpp @@ -0,0 +1,389 @@ +// +// 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 +#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 +#else +#include +#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__ diff --git a/modules/ocl/include/opencv2/ocl/cl_runtime/clamdblas_runtime.hpp b/modules/ocl/include/opencv2/ocl/cl_runtime/clamdblas_runtime.hpp new file mode 100644 index 0000000000..ae28a158e9 --- /dev/null +++ b/modules/ocl/include/opencv2/ocl/cl_runtime/clamdblas_runtime.hpp @@ -0,0 +1,728 @@ +// +// 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 + +// 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__ diff --git a/modules/ocl/include/opencv2/ocl/cl_runtime/clamdfft_runtime.hpp b/modules/ocl/include/opencv2/ocl/cl_runtime/clamdfft_runtime.hpp new file mode 100644 index 0000000000..7145f86046 --- /dev/null +++ b/modules/ocl/include/opencv2/ocl/cl_runtime/clamdfft_runtime.hpp @@ -0,0 +1,156 @@ +// +// 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 + +// 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__ diff --git a/modules/ocl/include/opencv2/ocl/private/util.hpp b/modules/ocl/include/opencv2/ocl/private/util.hpp index 9adae38230..3de0d438d4 100644 --- a/modules/ocl/include/opencv2/ocl/private/util.hpp +++ b/modules/ocl/include/opencv2/ocl/private/util.hpp @@ -48,11 +48,7 @@ #include "opencv2/ocl/ocl.hpp" -#if defined __APPLE__ -#include -#else -#include -#endif +#include "opencv2/ocl/cl_runtime/cl_runtime.hpp" namespace cv { diff --git a/modules/ocl/src/cl_runtime/cl_runtime.cpp b/modules/ocl/src/cl_runtime/cl_runtime.cpp new file mode 100644 index 0000000000..c237afe74c --- /dev/null +++ b/modules/ocl/src/cl_runtime/cl_runtime.cpp @@ -0,0 +1,105 @@ +#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 + + 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 + #include + + 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 diff --git a/modules/ocl/src/cl_runtime/cl_runtime_opencl11_impl.hpp b/modules/ocl/src/cl_runtime/cl_runtime_opencl11_impl.hpp new file mode 100644 index 0000000000..ef14696996 --- /dev/null +++ b/modules/ocl/src/cl_runtime/cl_runtime_opencl11_impl.hpp @@ -0,0 +1,435 @@ +// +// 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 +struct opencl_fn0 +{ + typedef _R (*FN)(); + static _R switch_fn() + { return ((FN)opencl_check_fn(ID))(); } +}; + +template +struct opencl_fn1 +{ + typedef _R (*FN)(_T1); + static _R switch_fn(_T1 p1) + { return ((FN)opencl_check_fn(ID))(p1); } +}; + +template +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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::switch_fn; +cl_int (*clGetPlatformInfo)(cl_platform_id, cl_platform_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clGetDeviceIDs)(cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*) = opencl_fn5::switch_fn; +cl_int (*clGetDeviceInfo)(cl_device_id, cl_device_info, size_t, void*, size_t*) = opencl_fn5::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::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::switch_fn; +cl_int (*clRetainContext)(cl_context) = opencl_fn1::switch_fn; +cl_int (*clReleaseContext)(cl_context) = opencl_fn1::switch_fn; +cl_int (*clGetContextInfo)(cl_context, cl_context_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_command_queue (*clCreateCommandQueue)(cl_context, cl_device_id, cl_command_queue_properties, cl_int*) = opencl_fn4::switch_fn; +cl_int (*clRetainCommandQueue)(cl_command_queue) = opencl_fn1::switch_fn; +cl_int (*clReleaseCommandQueue)(cl_command_queue) = opencl_fn1::switch_fn; +cl_int (*clGetCommandQueueInfo)(cl_command_queue, cl_command_queue_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clSetCommandQueueProperty)(cl_command_queue, cl_command_queue_properties, cl_bool, cl_command_queue_properties*) = opencl_fn4::switch_fn; +cl_mem (*clCreateBuffer)(cl_context, cl_mem_flags, size_t, void*, cl_int*) = opencl_fn5::switch_fn; +cl_mem (*clCreateSubBuffer)(cl_mem, cl_mem_flags, cl_buffer_create_type, const void*, cl_int*) = opencl_fn5::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::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::switch_fn; +cl_int (*clRetainMemObject)(cl_mem) = opencl_fn1::switch_fn; +cl_int (*clReleaseMemObject)(cl_mem) = opencl_fn1::switch_fn; +cl_int (*clGetSupportedImageFormats)(cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*) = opencl_fn6::switch_fn; +cl_int (*clGetMemObjectInfo)(cl_mem, cl_mem_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clGetImageInfo)(cl_mem, cl_image_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clSetMemObjectDestructorCallback)(cl_mem, void (CL_CALLBACK*) (cl_mem, void*), void*) = opencl_fn3::switch_fn; +cl_sampler (*clCreateSampler)(cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*) = opencl_fn5::switch_fn; +cl_int (*clRetainSampler)(cl_sampler) = opencl_fn1::switch_fn; +cl_int (*clReleaseSampler)(cl_sampler) = opencl_fn1::switch_fn; +cl_int (*clGetSamplerInfo)(cl_sampler, cl_sampler_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_program (*clCreateProgramWithSource)(cl_context, cl_uint, const char**, const size_t*, cl_int*) = opencl_fn5::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::switch_fn; +cl_int (*clRetainProgram)(cl_program) = opencl_fn1::switch_fn; +cl_int (*clReleaseProgram)(cl_program) = opencl_fn1::switch_fn; +cl_int (*clBuildProgram)(cl_program, cl_uint, const cl_device_id*, const char*, void (CL_CALLBACK*) (cl_program, void*), void*) = opencl_fn6::switch_fn; +cl_int (*clUnloadCompiler)() = opencl_fn0::switch_fn; +cl_int (*clGetProgramInfo)(cl_program, cl_program_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clGetProgramBuildInfo)(cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*) = opencl_fn6::switch_fn; +cl_kernel (*clCreateKernel)(cl_program, const char*, cl_int*) = opencl_fn3::switch_fn; +cl_int (*clCreateKernelsInProgram)(cl_program, cl_uint, cl_kernel*, cl_uint*) = opencl_fn4::switch_fn; +cl_int (*clRetainKernel)(cl_kernel) = opencl_fn1::switch_fn; +cl_int (*clReleaseKernel)(cl_kernel) = opencl_fn1::switch_fn; +cl_int (*clSetKernelArg)(cl_kernel, cl_uint, size_t, const void*) = opencl_fn4::switch_fn; +cl_int (*clGetKernelInfo)(cl_kernel, cl_kernel_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clGetKernelWorkGroupInfo)(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*) = opencl_fn6::switch_fn; +cl_int (*clWaitForEvents)(cl_uint, const cl_event*) = opencl_fn2::switch_fn; +cl_int (*clGetEventInfo)(cl_event, cl_event_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_event (*clCreateUserEvent)(cl_context, cl_int*) = opencl_fn2::switch_fn; +cl_int (*clRetainEvent)(cl_event) = opencl_fn1::switch_fn; +cl_int (*clReleaseEvent)(cl_event) = opencl_fn1::switch_fn; +cl_int (*clSetUserEventStatus)(cl_event, cl_int) = opencl_fn2::switch_fn; +cl_int (*clSetEventCallback)(cl_event, cl_int, void (CL_CALLBACK*) (cl_event, cl_int, void*), void*) = opencl_fn4::switch_fn; +cl_int (*clGetEventProfilingInfo)(cl_event, cl_profiling_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clFlush)(cl_command_queue) = opencl_fn1::switch_fn; +cl_int (*clFinish)(cl_command_queue) = opencl_fn1::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::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::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::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::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::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::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::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::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::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::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::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::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::switch_fn; +cl_int (*clEnqueueUnmapMemObject)(cl_command_queue, cl_mem, void*, cl_uint, const cl_event*, cl_event*) = opencl_fn6::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::switch_fn; +cl_int (*clEnqueueTask)(cl_command_queue, cl_kernel, cl_uint, const cl_event*, cl_event*) = opencl_fn5::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::switch_fn; +cl_int (*clEnqueueMarker)(cl_command_queue, cl_event*) = opencl_fn2::switch_fn; +cl_int (*clEnqueueWaitForEvents)(cl_command_queue, cl_uint, const cl_event*) = opencl_fn3::switch_fn; +cl_int (*clEnqueueBarrier)(cl_command_queue) = opencl_fn1::switch_fn; +void* (*clGetExtensionFunctionAddress)(const char*) = opencl_fn1::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, +}; diff --git a/modules/ocl/src/cl_runtime/cl_runtime_opencl12_impl.hpp b/modules/ocl/src/cl_runtime/cl_runtime_opencl12_impl.hpp new file mode 100644 index 0000000000..f6f3e957a1 --- /dev/null +++ b/modules/ocl/src/cl_runtime/cl_runtime_opencl12_impl.hpp @@ -0,0 +1,491 @@ +// +// 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 +struct opencl_fn0 +{ + typedef _R (*FN)(); + static _R switch_fn() + { return ((FN)opencl_check_fn(ID))(); } +}; + +template +struct opencl_fn1 +{ + typedef _R (*FN)(_T1); + static _R switch_fn(_T1 p1) + { return ((FN)opencl_check_fn(ID))(p1); } +}; + +template +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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::switch_fn; +cl_int (*clGetPlatformInfo)(cl_platform_id, cl_platform_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clGetDeviceIDs)(cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*) = opencl_fn5::switch_fn; +cl_int (*clGetDeviceInfo)(cl_device_id, cl_device_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clCreateSubDevices)(cl_device_id, const cl_device_partition_property*, cl_uint, cl_device_id*, cl_uint*) = opencl_fn5::switch_fn; +cl_int (*clRetainDevice)(cl_device_id) = opencl_fn1::switch_fn; +cl_int (*clReleaseDevice)(cl_device_id) = opencl_fn1::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::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::switch_fn; +cl_int (*clRetainContext)(cl_context) = opencl_fn1::switch_fn; +cl_int (*clReleaseContext)(cl_context) = opencl_fn1::switch_fn; +cl_int (*clGetContextInfo)(cl_context, cl_context_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_command_queue (*clCreateCommandQueue)(cl_context, cl_device_id, cl_command_queue_properties, cl_int*) = opencl_fn4::switch_fn; +cl_int (*clRetainCommandQueue)(cl_command_queue) = opencl_fn1::switch_fn; +cl_int (*clReleaseCommandQueue)(cl_command_queue) = opencl_fn1::switch_fn; +cl_int (*clGetCommandQueueInfo)(cl_command_queue, cl_command_queue_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_mem (*clCreateBuffer)(cl_context, cl_mem_flags, size_t, void*, cl_int*) = opencl_fn5::switch_fn; +cl_mem (*clCreateSubBuffer)(cl_mem, cl_mem_flags, cl_buffer_create_type, const void*, cl_int*) = opencl_fn5::switch_fn; +cl_mem (*clCreateImage)(cl_context, cl_mem_flags, const cl_image_format*, const cl_image_desc*, void*, cl_int*) = opencl_fn6::switch_fn; +cl_int (*clRetainMemObject)(cl_mem) = opencl_fn1::switch_fn; +cl_int (*clReleaseMemObject)(cl_mem) = opencl_fn1::switch_fn; +cl_int (*clGetSupportedImageFormats)(cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*) = opencl_fn6::switch_fn; +cl_int (*clGetMemObjectInfo)(cl_mem, cl_mem_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clGetImageInfo)(cl_mem, cl_image_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clSetMemObjectDestructorCallback)(cl_mem, void (CL_CALLBACK*) (cl_mem, void*), void*) = opencl_fn3::switch_fn; +cl_sampler (*clCreateSampler)(cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*) = opencl_fn5::switch_fn; +cl_int (*clRetainSampler)(cl_sampler) = opencl_fn1::switch_fn; +cl_int (*clReleaseSampler)(cl_sampler) = opencl_fn1::switch_fn; +cl_int (*clGetSamplerInfo)(cl_sampler, cl_sampler_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_program (*clCreateProgramWithSource)(cl_context, cl_uint, const char**, const size_t*, cl_int*) = opencl_fn5::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::switch_fn; +cl_program (*clCreateProgramWithBuiltInKernels)(cl_context, cl_uint, const cl_device_id*, const char*, cl_int*) = opencl_fn5::switch_fn; +cl_int (*clRetainProgram)(cl_program) = opencl_fn1::switch_fn; +cl_int (*clReleaseProgram)(cl_program) = opencl_fn1::switch_fn; +cl_int (*clBuildProgram)(cl_program, cl_uint, const cl_device_id*, const char*, void (CL_CALLBACK*) (cl_program, void*), void*) = opencl_fn6::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::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::switch_fn; +cl_int (*clUnloadPlatformCompiler)(cl_platform_id) = opencl_fn1::switch_fn; +cl_int (*clGetProgramInfo)(cl_program, cl_program_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clGetProgramBuildInfo)(cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*) = opencl_fn6::switch_fn; +cl_kernel (*clCreateKernel)(cl_program, const char*, cl_int*) = opencl_fn3::switch_fn; +cl_int (*clCreateKernelsInProgram)(cl_program, cl_uint, cl_kernel*, cl_uint*) = opencl_fn4::switch_fn; +cl_int (*clRetainKernel)(cl_kernel) = opencl_fn1::switch_fn; +cl_int (*clReleaseKernel)(cl_kernel) = opencl_fn1::switch_fn; +cl_int (*clSetKernelArg)(cl_kernel, cl_uint, size_t, const void*) = opencl_fn4::switch_fn; +cl_int (*clGetKernelInfo)(cl_kernel, cl_kernel_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clGetKernelArgInfo)(cl_kernel, cl_uint, cl_kernel_arg_info, size_t, void*, size_t*) = opencl_fn6::switch_fn; +cl_int (*clGetKernelWorkGroupInfo)(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*) = opencl_fn6::switch_fn; +cl_int (*clWaitForEvents)(cl_uint, const cl_event*) = opencl_fn2::switch_fn; +cl_int (*clGetEventInfo)(cl_event, cl_event_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_event (*clCreateUserEvent)(cl_context, cl_int*) = opencl_fn2::switch_fn; +cl_int (*clRetainEvent)(cl_event) = opencl_fn1::switch_fn; +cl_int (*clReleaseEvent)(cl_event) = opencl_fn1::switch_fn; +cl_int (*clSetUserEventStatus)(cl_event, cl_int) = opencl_fn2::switch_fn; +cl_int (*clSetEventCallback)(cl_event, cl_int, void (CL_CALLBACK*) (cl_event, cl_int, void*), void*) = opencl_fn4::switch_fn; +cl_int (*clGetEventProfilingInfo)(cl_event, cl_profiling_info, size_t, void*, size_t*) = opencl_fn5::switch_fn; +cl_int (*clFlush)(cl_command_queue) = opencl_fn1::switch_fn; +cl_int (*clFinish)(cl_command_queue) = opencl_fn1::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::switch_fn; +cl_int (*clEnqueueUnmapMemObject)(cl_command_queue, cl_mem, void*, cl_uint, const cl_event*, cl_event*) = opencl_fn6::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::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::switch_fn; +cl_int (*clEnqueueTask)(cl_command_queue, cl_kernel, cl_uint, const cl_event*, cl_event*) = opencl_fn5::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::switch_fn; +cl_int (*clEnqueueMarkerWithWaitList)(cl_command_queue, cl_uint, const cl_event*, cl_event*) = opencl_fn4::switch_fn; +cl_int (*clEnqueueBarrierWithWaitList)(cl_command_queue, cl_uint, const cl_event*, cl_event*) = opencl_fn4::switch_fn; +void* (*clGetExtensionFunctionAddressForPlatform)(cl_platform_id, const char*) = opencl_fn2::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::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::switch_fn; +cl_int (*clEnqueueMarker)(cl_command_queue, cl_event*) = opencl_fn2::switch_fn; +cl_int (*clEnqueueWaitForEvents)(cl_command_queue, cl_uint, const cl_event*) = opencl_fn3::switch_fn; +cl_int (*clEnqueueBarrier)(cl_command_queue) = opencl_fn1::switch_fn; +cl_int (*clUnloadCompiler)() = opencl_fn0::switch_fn; +void* (*clGetExtensionFunctionAddress)(const char*) = opencl_fn1::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, +}; diff --git a/modules/ocl/src/cl_runtime/clamdblas_runtime.cpp b/modules/ocl/src/cl_runtime/clamdblas_runtime.cpp new file mode 100644 index 0000000000..0a077db691 --- /dev/null +++ b/modules/ocl/src/cl_runtime/clamdblas_runtime.cpp @@ -0,0 +1,968 @@ +// +// AUTOGENERATED, DO NOT EDIT +// +#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 + #include + + 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 + +// generated by parser_clamdblas.py +enum OPENCLAMDBLAS_FN_ID { + OPENCLAMDBLAS_FN_clAmdBlasGetVersion = 0, + OPENCLAMDBLAS_FN_clAmdBlasSetup, + OPENCLAMDBLAS_FN_clAmdBlasTeardown, + OPENCLAMDBLAS_FN_clAmdBlasAddScratchImage, + OPENCLAMDBLAS_FN_clAmdBlasRemoveScratchImage, + OPENCLAMDBLAS_FN_clAmdBlasSswap, + OPENCLAMDBLAS_FN_clAmdBlasDswap, + OPENCLAMDBLAS_FN_clAmdBlasCswap, + OPENCLAMDBLAS_FN_clAmdBlasZswap, + OPENCLAMDBLAS_FN_clAmdBlasSscal, + OPENCLAMDBLAS_FN_clAmdBlasDscal, + OPENCLAMDBLAS_FN_clAmdBlasCscal, + OPENCLAMDBLAS_FN_clAmdBlasZscal, + OPENCLAMDBLAS_FN_clAmdBlasCsscal, + OPENCLAMDBLAS_FN_clAmdBlasZdscal, + OPENCLAMDBLAS_FN_clAmdBlasScopy, + OPENCLAMDBLAS_FN_clAmdBlasDcopy, + OPENCLAMDBLAS_FN_clAmdBlasCcopy, + OPENCLAMDBLAS_FN_clAmdBlasZcopy, + OPENCLAMDBLAS_FN_clAmdBlasSaxpy, + OPENCLAMDBLAS_FN_clAmdBlasDaxpy, + OPENCLAMDBLAS_FN_clAmdBlasCaxpy, + OPENCLAMDBLAS_FN_clAmdBlasZaxpy, + OPENCLAMDBLAS_FN_clAmdBlasSdot, + OPENCLAMDBLAS_FN_clAmdBlasDdot, + OPENCLAMDBLAS_FN_clAmdBlasCdotu, + OPENCLAMDBLAS_FN_clAmdBlasZdotu, + OPENCLAMDBLAS_FN_clAmdBlasCdotc, + OPENCLAMDBLAS_FN_clAmdBlasZdotc, + OPENCLAMDBLAS_FN_clAmdBlasSrotg, + OPENCLAMDBLAS_FN_clAmdBlasDrotg, + OPENCLAMDBLAS_FN_clAmdBlasCrotg, + OPENCLAMDBLAS_FN_clAmdBlasZrotg, + OPENCLAMDBLAS_FN_clAmdBlasSrotmg, + OPENCLAMDBLAS_FN_clAmdBlasDrotmg, + OPENCLAMDBLAS_FN_clAmdBlasSrot, + OPENCLAMDBLAS_FN_clAmdBlasDrot, + OPENCLAMDBLAS_FN_clAmdBlasCsrot, + OPENCLAMDBLAS_FN_clAmdBlasZdrot, + OPENCLAMDBLAS_FN_clAmdBlasSrotm, + OPENCLAMDBLAS_FN_clAmdBlasDrotm, + OPENCLAMDBLAS_FN_clAmdBlasSnrm2, + OPENCLAMDBLAS_FN_clAmdBlasDnrm2, + OPENCLAMDBLAS_FN_clAmdBlasScnrm2, + OPENCLAMDBLAS_FN_clAmdBlasDznrm2, + OPENCLAMDBLAS_FN_clAmdBlasiSamax, + OPENCLAMDBLAS_FN_clAmdBlasiDamax, + OPENCLAMDBLAS_FN_clAmdBlasiCamax, + OPENCLAMDBLAS_FN_clAmdBlasiZamax, + OPENCLAMDBLAS_FN_clAmdBlasSasum, + OPENCLAMDBLAS_FN_clAmdBlasDasum, + OPENCLAMDBLAS_FN_clAmdBlasScasum, + OPENCLAMDBLAS_FN_clAmdBlasDzasum, + OPENCLAMDBLAS_FN_clAmdBlasSgemv, + OPENCLAMDBLAS_FN_clAmdBlasDgemv, + OPENCLAMDBLAS_FN_clAmdBlasCgemv, + OPENCLAMDBLAS_FN_clAmdBlasZgemv, + OPENCLAMDBLAS_FN_clAmdBlasSgemvEx, + OPENCLAMDBLAS_FN_clAmdBlasDgemvEx, + OPENCLAMDBLAS_FN_clAmdBlasCgemvEx, + OPENCLAMDBLAS_FN_clAmdBlasZgemvEx, + OPENCLAMDBLAS_FN_clAmdBlasSsymv, + OPENCLAMDBLAS_FN_clAmdBlasDsymv, + OPENCLAMDBLAS_FN_clAmdBlasSsymvEx, + OPENCLAMDBLAS_FN_clAmdBlasDsymvEx, + OPENCLAMDBLAS_FN_clAmdBlasChemv, + OPENCLAMDBLAS_FN_clAmdBlasZhemv, + OPENCLAMDBLAS_FN_clAmdBlasStrmv, + OPENCLAMDBLAS_FN_clAmdBlasDtrmv, + OPENCLAMDBLAS_FN_clAmdBlasCtrmv, + OPENCLAMDBLAS_FN_clAmdBlasZtrmv, + OPENCLAMDBLAS_FN_clAmdBlasStrsv, + OPENCLAMDBLAS_FN_clAmdBlasDtrsv, + OPENCLAMDBLAS_FN_clAmdBlasCtrsv, + OPENCLAMDBLAS_FN_clAmdBlasZtrsv, + OPENCLAMDBLAS_FN_clAmdBlasSger, + OPENCLAMDBLAS_FN_clAmdBlasDger, + OPENCLAMDBLAS_FN_clAmdBlasCgeru, + OPENCLAMDBLAS_FN_clAmdBlasZgeru, + OPENCLAMDBLAS_FN_clAmdBlasCgerc, + OPENCLAMDBLAS_FN_clAmdBlasZgerc, + OPENCLAMDBLAS_FN_clAmdBlasSsyr, + OPENCLAMDBLAS_FN_clAmdBlasDsyr, + OPENCLAMDBLAS_FN_clAmdBlasCher, + OPENCLAMDBLAS_FN_clAmdBlasZher, + OPENCLAMDBLAS_FN_clAmdBlasSsyr2, + OPENCLAMDBLAS_FN_clAmdBlasDsyr2, + OPENCLAMDBLAS_FN_clAmdBlasCher2, + OPENCLAMDBLAS_FN_clAmdBlasZher2, + OPENCLAMDBLAS_FN_clAmdBlasStpmv, + OPENCLAMDBLAS_FN_clAmdBlasDtpmv, + OPENCLAMDBLAS_FN_clAmdBlasCtpmv, + OPENCLAMDBLAS_FN_clAmdBlasZtpmv, + OPENCLAMDBLAS_FN_clAmdBlasStpsv, + OPENCLAMDBLAS_FN_clAmdBlasDtpsv, + OPENCLAMDBLAS_FN_clAmdBlasCtpsv, + OPENCLAMDBLAS_FN_clAmdBlasZtpsv, + OPENCLAMDBLAS_FN_clAmdBlasSspmv, + OPENCLAMDBLAS_FN_clAmdBlasDspmv, + OPENCLAMDBLAS_FN_clAmdBlasChpmv, + OPENCLAMDBLAS_FN_clAmdBlasZhpmv, + OPENCLAMDBLAS_FN_clAmdBlasSspr, + OPENCLAMDBLAS_FN_clAmdBlasDspr, + OPENCLAMDBLAS_FN_clAmdBlasChpr, + OPENCLAMDBLAS_FN_clAmdBlasZhpr, + OPENCLAMDBLAS_FN_clAmdBlasSspr2, + OPENCLAMDBLAS_FN_clAmdBlasDspr2, + OPENCLAMDBLAS_FN_clAmdBlasChpr2, + OPENCLAMDBLAS_FN_clAmdBlasZhpr2, + OPENCLAMDBLAS_FN_clAmdBlasSgbmv, + OPENCLAMDBLAS_FN_clAmdBlasDgbmv, + OPENCLAMDBLAS_FN_clAmdBlasCgbmv, + OPENCLAMDBLAS_FN_clAmdBlasZgbmv, + OPENCLAMDBLAS_FN_clAmdBlasStbmv, + OPENCLAMDBLAS_FN_clAmdBlasDtbmv, + OPENCLAMDBLAS_FN_clAmdBlasCtbmv, + OPENCLAMDBLAS_FN_clAmdBlasZtbmv, + OPENCLAMDBLAS_FN_clAmdBlasSsbmv, + OPENCLAMDBLAS_FN_clAmdBlasDsbmv, + OPENCLAMDBLAS_FN_clAmdBlasChbmv, + OPENCLAMDBLAS_FN_clAmdBlasZhbmv, + OPENCLAMDBLAS_FN_clAmdBlasStbsv, + OPENCLAMDBLAS_FN_clAmdBlasDtbsv, + OPENCLAMDBLAS_FN_clAmdBlasCtbsv, + OPENCLAMDBLAS_FN_clAmdBlasZtbsv, + OPENCLAMDBLAS_FN_clAmdBlasSgemm, + OPENCLAMDBLAS_FN_clAmdBlasDgemm, + OPENCLAMDBLAS_FN_clAmdBlasCgemm, + OPENCLAMDBLAS_FN_clAmdBlasZgemm, + OPENCLAMDBLAS_FN_clAmdBlasSgemmEx, + OPENCLAMDBLAS_FN_clAmdBlasDgemmEx, + OPENCLAMDBLAS_FN_clAmdBlasCgemmEx, + OPENCLAMDBLAS_FN_clAmdBlasZgemmEx, + OPENCLAMDBLAS_FN_clAmdBlasStrmm, + OPENCLAMDBLAS_FN_clAmdBlasDtrmm, + OPENCLAMDBLAS_FN_clAmdBlasCtrmm, + OPENCLAMDBLAS_FN_clAmdBlasZtrmm, + OPENCLAMDBLAS_FN_clAmdBlasStrmmEx, + OPENCLAMDBLAS_FN_clAmdBlasDtrmmEx, + OPENCLAMDBLAS_FN_clAmdBlasCtrmmEx, + OPENCLAMDBLAS_FN_clAmdBlasZtrmmEx, + OPENCLAMDBLAS_FN_clAmdBlasStrsm, + OPENCLAMDBLAS_FN_clAmdBlasDtrsm, + OPENCLAMDBLAS_FN_clAmdBlasCtrsm, + OPENCLAMDBLAS_FN_clAmdBlasZtrsm, + OPENCLAMDBLAS_FN_clAmdBlasStrsmEx, + OPENCLAMDBLAS_FN_clAmdBlasDtrsmEx, + OPENCLAMDBLAS_FN_clAmdBlasCtrsmEx, + OPENCLAMDBLAS_FN_clAmdBlasZtrsmEx, + OPENCLAMDBLAS_FN_clAmdBlasSsyrk, + OPENCLAMDBLAS_FN_clAmdBlasDsyrk, + OPENCLAMDBLAS_FN_clAmdBlasCsyrk, + OPENCLAMDBLAS_FN_clAmdBlasZsyrk, + OPENCLAMDBLAS_FN_clAmdBlasSsyrkEx, + OPENCLAMDBLAS_FN_clAmdBlasDsyrkEx, + OPENCLAMDBLAS_FN_clAmdBlasCsyrkEx, + OPENCLAMDBLAS_FN_clAmdBlasZsyrkEx, + OPENCLAMDBLAS_FN_clAmdBlasSsyr2k, + OPENCLAMDBLAS_FN_clAmdBlasDsyr2k, + OPENCLAMDBLAS_FN_clAmdBlasCsyr2k, + OPENCLAMDBLAS_FN_clAmdBlasZsyr2k, + OPENCLAMDBLAS_FN_clAmdBlasSsyr2kEx, + OPENCLAMDBLAS_FN_clAmdBlasDsyr2kEx, + OPENCLAMDBLAS_FN_clAmdBlasCsyr2kEx, + OPENCLAMDBLAS_FN_clAmdBlasZsyr2kEx, + OPENCLAMDBLAS_FN_clAmdBlasSsymm, + OPENCLAMDBLAS_FN_clAmdBlasDsymm, + OPENCLAMDBLAS_FN_clAmdBlasCsymm, + OPENCLAMDBLAS_FN_clAmdBlasZsymm, + OPENCLAMDBLAS_FN_clAmdBlasChemm, + OPENCLAMDBLAS_FN_clAmdBlasZhemm, + OPENCLAMDBLAS_FN_clAmdBlasCherk, + OPENCLAMDBLAS_FN_clAmdBlasZherk, + OPENCLAMDBLAS_FN_clAmdBlasCher2k, + OPENCLAMDBLAS_FN_clAmdBlasZher2k, +}; +// generated by parser_clamdblas.py +const char* openclamdblas_fn_names[] = { + "clAmdBlasGetVersion", + "clAmdBlasSetup", + "clAmdBlasTeardown", + "clAmdBlasAddScratchImage", + "clAmdBlasRemoveScratchImage", + "clAmdBlasSswap", + "clAmdBlasDswap", + "clAmdBlasCswap", + "clAmdBlasZswap", + "clAmdBlasSscal", + "clAmdBlasDscal", + "clAmdBlasCscal", + "clAmdBlasZscal", + "clAmdBlasCsscal", + "clAmdBlasZdscal", + "clAmdBlasScopy", + "clAmdBlasDcopy", + "clAmdBlasCcopy", + "clAmdBlasZcopy", + "clAmdBlasSaxpy", + "clAmdBlasDaxpy", + "clAmdBlasCaxpy", + "clAmdBlasZaxpy", + "clAmdBlasSdot", + "clAmdBlasDdot", + "clAmdBlasCdotu", + "clAmdBlasZdotu", + "clAmdBlasCdotc", + "clAmdBlasZdotc", + "clAmdBlasSrotg", + "clAmdBlasDrotg", + "clAmdBlasCrotg", + "clAmdBlasZrotg", + "clAmdBlasSrotmg", + "clAmdBlasDrotmg", + "clAmdBlasSrot", + "clAmdBlasDrot", + "clAmdBlasCsrot", + "clAmdBlasZdrot", + "clAmdBlasSrotm", + "clAmdBlasDrotm", + "clAmdBlasSnrm2", + "clAmdBlasDnrm2", + "clAmdBlasScnrm2", + "clAmdBlasDznrm2", + "clAmdBlasiSamax", + "clAmdBlasiDamax", + "clAmdBlasiCamax", + "clAmdBlasiZamax", + "clAmdBlasSasum", + "clAmdBlasDasum", + "clAmdBlasScasum", + "clAmdBlasDzasum", + "clAmdBlasSgemv", + "clAmdBlasDgemv", + "clAmdBlasCgemv", + "clAmdBlasZgemv", + "clAmdBlasSgemvEx", + "clAmdBlasDgemvEx", + "clAmdBlasCgemvEx", + "clAmdBlasZgemvEx", + "clAmdBlasSsymv", + "clAmdBlasDsymv", + "clAmdBlasSsymvEx", + "clAmdBlasDsymvEx", + "clAmdBlasChemv", + "clAmdBlasZhemv", + "clAmdBlasStrmv", + "clAmdBlasDtrmv", + "clAmdBlasCtrmv", + "clAmdBlasZtrmv", + "clAmdBlasStrsv", + "clAmdBlasDtrsv", + "clAmdBlasCtrsv", + "clAmdBlasZtrsv", + "clAmdBlasSger", + "clAmdBlasDger", + "clAmdBlasCgeru", + "clAmdBlasZgeru", + "clAmdBlasCgerc", + "clAmdBlasZgerc", + "clAmdBlasSsyr", + "clAmdBlasDsyr", + "clAmdBlasCher", + "clAmdBlasZher", + "clAmdBlasSsyr2", + "clAmdBlasDsyr2", + "clAmdBlasCher2", + "clAmdBlasZher2", + "clAmdBlasStpmv", + "clAmdBlasDtpmv", + "clAmdBlasCtpmv", + "clAmdBlasZtpmv", + "clAmdBlasStpsv", + "clAmdBlasDtpsv", + "clAmdBlasCtpsv", + "clAmdBlasZtpsv", + "clAmdBlasSspmv", + "clAmdBlasDspmv", + "clAmdBlasChpmv", + "clAmdBlasZhpmv", + "clAmdBlasSspr", + "clAmdBlasDspr", + "clAmdBlasChpr", + "clAmdBlasZhpr", + "clAmdBlasSspr2", + "clAmdBlasDspr2", + "clAmdBlasChpr2", + "clAmdBlasZhpr2", + "clAmdBlasSgbmv", + "clAmdBlasDgbmv", + "clAmdBlasCgbmv", + "clAmdBlasZgbmv", + "clAmdBlasStbmv", + "clAmdBlasDtbmv", + "clAmdBlasCtbmv", + "clAmdBlasZtbmv", + "clAmdBlasSsbmv", + "clAmdBlasDsbmv", + "clAmdBlasChbmv", + "clAmdBlasZhbmv", + "clAmdBlasStbsv", + "clAmdBlasDtbsv", + "clAmdBlasCtbsv", + "clAmdBlasZtbsv", + "clAmdBlasSgemm", + "clAmdBlasDgemm", + "clAmdBlasCgemm", + "clAmdBlasZgemm", + "clAmdBlasSgemmEx", + "clAmdBlasDgemmEx", + "clAmdBlasCgemmEx", + "clAmdBlasZgemmEx", + "clAmdBlasStrmm", + "clAmdBlasDtrmm", + "clAmdBlasCtrmm", + "clAmdBlasZtrmm", + "clAmdBlasStrmmEx", + "clAmdBlasDtrmmEx", + "clAmdBlasCtrmmEx", + "clAmdBlasZtrmmEx", + "clAmdBlasStrsm", + "clAmdBlasDtrsm", + "clAmdBlasCtrsm", + "clAmdBlasZtrsm", + "clAmdBlasStrsmEx", + "clAmdBlasDtrsmEx", + "clAmdBlasCtrsmEx", + "clAmdBlasZtrsmEx", + "clAmdBlasSsyrk", + "clAmdBlasDsyrk", + "clAmdBlasCsyrk", + "clAmdBlasZsyrk", + "clAmdBlasSsyrkEx", + "clAmdBlasDsyrkEx", + "clAmdBlasCsyrkEx", + "clAmdBlasZsyrkEx", + "clAmdBlasSsyr2k", + "clAmdBlasDsyr2k", + "clAmdBlasCsyr2k", + "clAmdBlasZsyr2k", + "clAmdBlasSsyr2kEx", + "clAmdBlasDsyr2kEx", + "clAmdBlasCsyr2kEx", + "clAmdBlasZsyr2kEx", + "clAmdBlasSsymm", + "clAmdBlasDsymm", + "clAmdBlasCsymm", + "clAmdBlasZsymm", + "clAmdBlasChemm", + "clAmdBlasZhemm", + "clAmdBlasCherk", + "clAmdBlasZherk", + "clAmdBlasCher2k", + "clAmdBlasZher2k", +}; + +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 { +// generated by parser_clamdblas.py +template +struct openclamdblas_fn0 +{ + typedef _R (*FN)(); + static _R switch_fn() + { return ((FN)openclamdblas_check_fn(ID))(); } +}; + +template +struct openclamdblas_fn1 +{ + typedef _R (*FN)(_T1); + static _R switch_fn(_T1 p1) + { return ((FN)openclamdblas_check_fn(ID))(p1); } +}; + +template +struct openclamdblas_fn2 +{ + typedef _R (*FN)(_T1, _T2); + static _R switch_fn(_T1 p1, _T2 p2) + { return ((FN)openclamdblas_check_fn(ID))(p1, p2); } +}; + +template +struct openclamdblas_fn3 +{ + typedef _R (*FN)(_T1, _T2, _T3); + static _R switch_fn(_T1 p1, _T2 p2, _T3 p3) + { return ((FN)openclamdblas_check_fn(ID))(p1, p2, p3); } +}; + +template +struct openclamdblas_fn4 +{ + typedef _R (*FN)(_T1, _T2, _T3, _T4); + static _R switch_fn(_T1 p1, _T2 p2, _T3 p3, _T4 p4) + { return ((FN)openclamdblas_check_fn(ID))(p1, p2, p3, p4); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19); } +}; + +template +struct openclamdblas_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)openclamdblas_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20); } +}; + +template +struct openclamdblas_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)openclamdblas_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 +struct openclamdblas_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)openclamdblas_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_clamdblas.py +clAmdBlasStatus (*clAmdBlasGetVersion)(cl_uint*, cl_uint*, cl_uint*) = openclamdblas_fn3::switch_fn; +clAmdBlasStatus (*clAmdBlasSetup)() = openclamdblas_fn0::switch_fn; +void (*clAmdBlasTeardown)() = openclamdblas_fn0::switch_fn; +cl_ulong (*clAmdBlasAddScratchImage)(cl_context, size_t, size_t, clAmdBlasStatus*) = openclamdblas_fn4::switch_fn; +clAmdBlasStatus (*clAmdBlasRemoveScratchImage)(cl_ulong) = openclamdblas_fn1::switch_fn; +clAmdBlasStatus (*clAmdBlasSswap)(size_t, cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasDswap)(size_t, cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasCswap)(size_t, cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasZswap)(size_t, cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasSscal)(size_t, cl_float, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn10::switch_fn; +clAmdBlasStatus (*clAmdBlasDscal)(size_t, cl_double, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn10::switch_fn; +clAmdBlasStatus (*clAmdBlasCscal)(size_t, cl_float2, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn10::switch_fn; +clAmdBlasStatus (*clAmdBlasZscal)(size_t, cl_double2, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn10::switch_fn; +clAmdBlasStatus (*clAmdBlasCsscal)(size_t, cl_float, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn10::switch_fn; +clAmdBlasStatus (*clAmdBlasZdscal)(size_t, cl_double, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn10::switch_fn; +clAmdBlasStatus (*clAmdBlasScopy)(size_t, const cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasDcopy)(size_t, const cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasCcopy)(size_t, const cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasZcopy)(size_t, const cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasSaxpy)(size_t, cl_float, const cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn13::switch_fn; +clAmdBlasStatus (*clAmdBlasDaxpy)(size_t, cl_double, const cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn13::switch_fn; +clAmdBlasStatus (*clAmdBlasCaxpy)(size_t, cl_float2, const cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn13::switch_fn; +clAmdBlasStatus (*clAmdBlasZaxpy)(size_t, cl_double2, const cl_mem, size_t, int, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn13::switch_fn; +clAmdBlasStatus (*clAmdBlasSdot)(size_t, cl_mem, size_t, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasDdot)(size_t, cl_mem, size_t, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasCdotu)(size_t, cl_mem, size_t, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasZdotu)(size_t, cl_mem, size_t, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasCdotc)(size_t, cl_mem, size_t, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasZdotc)(size_t, cl_mem, size_t, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasSrotg)(cl_mem, size_t, cl_mem, size_t, cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn13::switch_fn; +clAmdBlasStatus (*clAmdBlasDrotg)(cl_mem, size_t, cl_mem, size_t, cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn13::switch_fn; +clAmdBlasStatus (*clAmdBlasCrotg)(cl_mem, size_t, cl_mem, size_t, cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn13::switch_fn; +clAmdBlasStatus (*clAmdBlasZrotg)(cl_mem, size_t, cl_mem, size_t, cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn13::switch_fn; +clAmdBlasStatus (*clAmdBlasSrotmg)(cl_mem, size_t, cl_mem, size_t, cl_mem, size_t, const cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasDrotmg)(cl_mem, size_t, cl_mem, size_t, cl_mem, size_t, const cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasSrot)(size_t, cl_mem, size_t, int, cl_mem, size_t, int, cl_float, cl_float, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn14::switch_fn; +clAmdBlasStatus (*clAmdBlasDrot)(size_t, cl_mem, size_t, int, cl_mem, size_t, int, cl_double, cl_double, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn14::switch_fn; +clAmdBlasStatus (*clAmdBlasCsrot)(size_t, cl_mem, size_t, int, cl_mem, size_t, int, cl_float, cl_float, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn14::switch_fn; +clAmdBlasStatus (*clAmdBlasZdrot)(size_t, cl_mem, size_t, int, cl_mem, size_t, int, cl_double, cl_double, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn14::switch_fn; +clAmdBlasStatus (*clAmdBlasSrotm)(size_t, cl_mem, size_t, int, cl_mem, size_t, int, const cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn14::switch_fn; +clAmdBlasStatus (*clAmdBlasDrotm)(size_t, cl_mem, size_t, int, cl_mem, size_t, int, const cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn14::switch_fn; +clAmdBlasStatus (*clAmdBlasSnrm2)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasDnrm2)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasScnrm2)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasDznrm2)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasiSamax)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasiDamax)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasiCamax)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasiZamax)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasSasum)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasDasum)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasScasum)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasDzasum)(size_t, cl_mem, size_t, const cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn12::switch_fn; +clAmdBlasStatus (*clAmdBlasSgemv)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, cl_float, const cl_mem, size_t, const cl_mem, size_t, int, cl_float, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasDgemv)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, cl_double, const cl_mem, size_t, const cl_mem, size_t, int, cl_double, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasCgemv)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, FloatComplex, const cl_mem, size_t, const cl_mem, size_t, int, FloatComplex, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasZgemv)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, DoubleComplex, const cl_mem, size_t, const cl_mem, size_t, int, DoubleComplex, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasSgemvEx)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, cl_float, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_float, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn20::switch_fn; +clAmdBlasStatus (*clAmdBlasDgemvEx)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, cl_double, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_double, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn20::switch_fn; +clAmdBlasStatus (*clAmdBlasCgemvEx)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, FloatComplex, const cl_mem, size_t, size_t, const cl_mem, size_t, int, FloatComplex, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn20::switch_fn; +clAmdBlasStatus (*clAmdBlasZgemvEx)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, DoubleComplex, const cl_mem, size_t, size_t, const cl_mem, size_t, int, DoubleComplex, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn20::switch_fn; +clAmdBlasStatus (*clAmdBlasSsymv)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float, const cl_mem, size_t, const cl_mem, size_t, int, cl_float, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasDsymv)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double, const cl_mem, size_t, const cl_mem, size_t, int, cl_double, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasSsymvEx)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_float, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasDsymvEx)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_double, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasChemv)(clAmdBlasOrder, clAmdBlasUplo, size_t, FloatComplex, const cl_mem, size_t, size_t, const cl_mem, size_t, int, FloatComplex, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasZhemv)(clAmdBlasOrder, clAmdBlasUplo, size_t, DoubleComplex, const cl_mem, size_t, size_t, const cl_mem, size_t, int, DoubleComplex, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasStrmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasDtrmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasCtrmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasZtrmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasStrsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasDtrsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasCtrsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasZtrsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasSger)(clAmdBlasOrder, size_t, size_t, cl_float, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasDger)(clAmdBlasOrder, size_t, size_t, cl_double, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasCgeru)(clAmdBlasOrder, size_t, size_t, cl_float2, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasZgeru)(clAmdBlasOrder, size_t, size_t, cl_double2, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasCgerc)(clAmdBlasOrder, size_t, size_t, cl_float2, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasZgerc)(clAmdBlasOrder, size_t, size_t, cl_double2, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasSsyr)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasDsyr)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasCher)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasZher)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasSsyr2)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasDsyr2)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasCher2)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float2, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasZher2)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double2, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasStpmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasDtpmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasCtpmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasZtpmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasStpsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasDtpsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasCtpsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasZtpsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, const cl_mem, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn15::switch_fn; +clAmdBlasStatus (*clAmdBlasSspmv)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float, const cl_mem, size_t, const cl_mem, size_t, int, cl_float, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasDspmv)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double, const cl_mem, size_t, const cl_mem, size_t, int, cl_double, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasChpmv)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float2, const cl_mem, size_t, const cl_mem, size_t, int, cl_float2, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasZhpmv)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double2, const cl_mem, size_t, const cl_mem, size_t, int, cl_double2, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasSspr)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float, const cl_mem, size_t, int, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn14::switch_fn; +clAmdBlasStatus (*clAmdBlasDspr)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double, const cl_mem, size_t, int, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn14::switch_fn; +clAmdBlasStatus (*clAmdBlasChpr)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float, const cl_mem, size_t, int, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn14::switch_fn; +clAmdBlasStatus (*clAmdBlasZhpr)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double, const cl_mem, size_t, int, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn14::switch_fn; +clAmdBlasStatus (*clAmdBlasSspr2)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasDspr2)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasChpr2)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_float2, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasZhpr2)(clAmdBlasOrder, clAmdBlasUplo, size_t, cl_double2, const cl_mem, size_t, int, const cl_mem, size_t, int, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasSgbmv)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, size_t, size_t, cl_float, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_float, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn22::switch_fn; +clAmdBlasStatus (*clAmdBlasDgbmv)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, size_t, size_t, cl_double, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_double, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn22::switch_fn; +clAmdBlasStatus (*clAmdBlasCgbmv)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, size_t, size_t, cl_float2, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_float2, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn22::switch_fn; +clAmdBlasStatus (*clAmdBlasZgbmv)(clAmdBlasOrder, clAmdBlasTranspose, size_t, size_t, size_t, size_t, cl_double2, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_double2, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn22::switch_fn; +clAmdBlasStatus (*clAmdBlasStbmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasDtbmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasCtbmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasZtbmv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_mem, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasSsbmv)(clAmdBlasOrder, clAmdBlasUplo, size_t, size_t, cl_float, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_float, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn20::switch_fn; +clAmdBlasStatus (*clAmdBlasDsbmv)(clAmdBlasOrder, clAmdBlasUplo, size_t, size_t, cl_double, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_double, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn20::switch_fn; +clAmdBlasStatus (*clAmdBlasChbmv)(clAmdBlasOrder, clAmdBlasUplo, size_t, size_t, cl_float2, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_float2, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn20::switch_fn; +clAmdBlasStatus (*clAmdBlasZhbmv)(clAmdBlasOrder, clAmdBlasUplo, size_t, size_t, cl_double2, const cl_mem, size_t, size_t, const cl_mem, size_t, int, cl_double2, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn20::switch_fn; +clAmdBlasStatus (*clAmdBlasStbsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasDtbsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasCtbsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasZtbsv)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, const cl_mem, size_t, size_t, cl_mem, size_t, int, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasSgemm)(clAmdBlasOrder, clAmdBlasTranspose, clAmdBlasTranspose, size_t, size_t, size_t, cl_float, const cl_mem, size_t, const cl_mem, size_t, cl_float, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasDgemm)(clAmdBlasOrder, clAmdBlasTranspose, clAmdBlasTranspose, size_t, size_t, size_t, cl_double, const cl_mem, size_t, const cl_mem, size_t, cl_double, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasCgemm)(clAmdBlasOrder, clAmdBlasTranspose, clAmdBlasTranspose, size_t, size_t, size_t, FloatComplex, const cl_mem, size_t, const cl_mem, size_t, FloatComplex, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasZgemm)(clAmdBlasOrder, clAmdBlasTranspose, clAmdBlasTranspose, size_t, size_t, size_t, DoubleComplex, const cl_mem, size_t, const cl_mem, size_t, DoubleComplex, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasSgemmEx)(clAmdBlasOrder, clAmdBlasTranspose, clAmdBlasTranspose, size_t, size_t, size_t, cl_float, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_float, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn22::switch_fn; +clAmdBlasStatus (*clAmdBlasDgemmEx)(clAmdBlasOrder, clAmdBlasTranspose, clAmdBlasTranspose, size_t, size_t, size_t, cl_double, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_double, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn22::switch_fn; +clAmdBlasStatus (*clAmdBlasCgemmEx)(clAmdBlasOrder, clAmdBlasTranspose, clAmdBlasTranspose, size_t, size_t, size_t, FloatComplex, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, FloatComplex, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn22::switch_fn; +clAmdBlasStatus (*clAmdBlasZgemmEx)(clAmdBlasOrder, clAmdBlasTranspose, clAmdBlasTranspose, size_t, size_t, size_t, DoubleComplex, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, DoubleComplex, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn22::switch_fn; +clAmdBlasStatus (*clAmdBlasStrmm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, cl_float, const cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasDtrmm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, cl_double, const cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasCtrmm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, FloatComplex, const cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasZtrmm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, DoubleComplex, const cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasStrmmEx)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, cl_float, const cl_mem, size_t, size_t, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasDtrmmEx)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, cl_double, const cl_mem, size_t, size_t, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasCtrmmEx)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, FloatComplex, const cl_mem, size_t, size_t, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasZtrmmEx)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, DoubleComplex, const cl_mem, size_t, size_t, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasStrsm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, cl_float, const cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasDtrsm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, cl_double, const cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasCtrsm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, FloatComplex, const cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasZtrsm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, DoubleComplex, const cl_mem, size_t, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn17::switch_fn; +clAmdBlasStatus (*clAmdBlasStrsmEx)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, cl_float, const cl_mem, size_t, size_t, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasDtrsmEx)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, cl_double, const cl_mem, size_t, size_t, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasCtrsmEx)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, FloatComplex, const cl_mem, size_t, size_t, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasZtrsmEx)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, clAmdBlasTranspose, clAmdBlasDiag, size_t, size_t, DoubleComplex, const cl_mem, size_t, size_t, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn19::switch_fn; +clAmdBlasStatus (*clAmdBlasSsyrk)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, cl_float, const cl_mem, size_t, cl_float, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasDsyrk)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, cl_double, const cl_mem, size_t, cl_double, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasCsyrk)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, FloatComplex, const cl_mem, size_t, FloatComplex, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasZsyrk)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, DoubleComplex, const cl_mem, size_t, DoubleComplex, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn16::switch_fn; +clAmdBlasStatus (*clAmdBlasSsyrkEx)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, cl_float, const cl_mem, size_t, size_t, cl_float, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasDsyrkEx)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, cl_double, const cl_mem, size_t, size_t, cl_double, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasCsyrkEx)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, FloatComplex, const cl_mem, size_t, size_t, FloatComplex, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasZsyrkEx)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, DoubleComplex, const cl_mem, size_t, size_t, DoubleComplex, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasSsyr2k)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, cl_float, const cl_mem, size_t, const cl_mem, size_t, cl_float, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasDsyr2k)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, cl_double, const cl_mem, size_t, const cl_mem, size_t, cl_double, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasCsyr2k)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, FloatComplex, const cl_mem, size_t, const cl_mem, size_t, FloatComplex, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasZsyr2k)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, DoubleComplex, const cl_mem, size_t, const cl_mem, size_t, DoubleComplex, cl_mem, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasSsyr2kEx)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, cl_float, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_float, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasDsyr2kEx)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, cl_double, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_double, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasCsyr2kEx)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, FloatComplex, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, FloatComplex, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasZsyr2kEx)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, DoubleComplex, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, DoubleComplex, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasSsymm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, size_t, size_t, cl_float, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_float, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasDsymm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, size_t, size_t, cl_double, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_double, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasCsymm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, size_t, size_t, cl_float2, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_float2, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasZsymm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, size_t, size_t, cl_double2, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_double2, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasChemm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, size_t, size_t, cl_float2, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_float2, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasZhemm)(clAmdBlasOrder, clAmdBlasSide, clAmdBlasUplo, size_t, size_t, cl_double2, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_double2, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasCherk)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, float, const cl_mem, size_t, size_t, float, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasZherk)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, double, const cl_mem, size_t, size_t, double, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn18::switch_fn; +clAmdBlasStatus (*clAmdBlasCher2k)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, FloatComplex, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_float, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; +clAmdBlasStatus (*clAmdBlasZher2k)(clAmdBlasOrder, clAmdBlasUplo, clAmdBlasTranspose, size_t, size_t, DoubleComplex, const cl_mem, size_t, size_t, const cl_mem, size_t, size_t, cl_double, cl_mem, size_t, size_t, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*) = openclamdblas_fn21::switch_fn; + +// generated by parser_clamdblas.py +void* openclamdblas_fn_ptrs[] = { + &clAmdBlasGetVersion, + &clAmdBlasSetup, + &clAmdBlasTeardown, + &clAmdBlasAddScratchImage, + &clAmdBlasRemoveScratchImage, + &clAmdBlasSswap, + &clAmdBlasDswap, + &clAmdBlasCswap, + &clAmdBlasZswap, + &clAmdBlasSscal, + &clAmdBlasDscal, + &clAmdBlasCscal, + &clAmdBlasZscal, + &clAmdBlasCsscal, + &clAmdBlasZdscal, + &clAmdBlasScopy, + &clAmdBlasDcopy, + &clAmdBlasCcopy, + &clAmdBlasZcopy, + &clAmdBlasSaxpy, + &clAmdBlasDaxpy, + &clAmdBlasCaxpy, + &clAmdBlasZaxpy, + &clAmdBlasSdot, + &clAmdBlasDdot, + &clAmdBlasCdotu, + &clAmdBlasZdotu, + &clAmdBlasCdotc, + &clAmdBlasZdotc, + &clAmdBlasSrotg, + &clAmdBlasDrotg, + &clAmdBlasCrotg, + &clAmdBlasZrotg, + &clAmdBlasSrotmg, + &clAmdBlasDrotmg, + &clAmdBlasSrot, + &clAmdBlasDrot, + &clAmdBlasCsrot, + &clAmdBlasZdrot, + &clAmdBlasSrotm, + &clAmdBlasDrotm, + &clAmdBlasSnrm2, + &clAmdBlasDnrm2, + &clAmdBlasScnrm2, + &clAmdBlasDznrm2, + &clAmdBlasiSamax, + &clAmdBlasiDamax, + &clAmdBlasiCamax, + &clAmdBlasiZamax, + &clAmdBlasSasum, + &clAmdBlasDasum, + &clAmdBlasScasum, + &clAmdBlasDzasum, + &clAmdBlasSgemv, + &clAmdBlasDgemv, + &clAmdBlasCgemv, + &clAmdBlasZgemv, + &clAmdBlasSgemvEx, + &clAmdBlasDgemvEx, + &clAmdBlasCgemvEx, + &clAmdBlasZgemvEx, + &clAmdBlasSsymv, + &clAmdBlasDsymv, + &clAmdBlasSsymvEx, + &clAmdBlasDsymvEx, + &clAmdBlasChemv, + &clAmdBlasZhemv, + &clAmdBlasStrmv, + &clAmdBlasDtrmv, + &clAmdBlasCtrmv, + &clAmdBlasZtrmv, + &clAmdBlasStrsv, + &clAmdBlasDtrsv, + &clAmdBlasCtrsv, + &clAmdBlasZtrsv, + &clAmdBlasSger, + &clAmdBlasDger, + &clAmdBlasCgeru, + &clAmdBlasZgeru, + &clAmdBlasCgerc, + &clAmdBlasZgerc, + &clAmdBlasSsyr, + &clAmdBlasDsyr, + &clAmdBlasCher, + &clAmdBlasZher, + &clAmdBlasSsyr2, + &clAmdBlasDsyr2, + &clAmdBlasCher2, + &clAmdBlasZher2, + &clAmdBlasStpmv, + &clAmdBlasDtpmv, + &clAmdBlasCtpmv, + &clAmdBlasZtpmv, + &clAmdBlasStpsv, + &clAmdBlasDtpsv, + &clAmdBlasCtpsv, + &clAmdBlasZtpsv, + &clAmdBlasSspmv, + &clAmdBlasDspmv, + &clAmdBlasChpmv, + &clAmdBlasZhpmv, + &clAmdBlasSspr, + &clAmdBlasDspr, + &clAmdBlasChpr, + &clAmdBlasZhpr, + &clAmdBlasSspr2, + &clAmdBlasDspr2, + &clAmdBlasChpr2, + &clAmdBlasZhpr2, + &clAmdBlasSgbmv, + &clAmdBlasDgbmv, + &clAmdBlasCgbmv, + &clAmdBlasZgbmv, + &clAmdBlasStbmv, + &clAmdBlasDtbmv, + &clAmdBlasCtbmv, + &clAmdBlasZtbmv, + &clAmdBlasSsbmv, + &clAmdBlasDsbmv, + &clAmdBlasChbmv, + &clAmdBlasZhbmv, + &clAmdBlasStbsv, + &clAmdBlasDtbsv, + &clAmdBlasCtbsv, + &clAmdBlasZtbsv, + &clAmdBlasSgemm, + &clAmdBlasDgemm, + &clAmdBlasCgemm, + &clAmdBlasZgemm, + &clAmdBlasSgemmEx, + &clAmdBlasDgemmEx, + &clAmdBlasCgemmEx, + &clAmdBlasZgemmEx, + &clAmdBlasStrmm, + &clAmdBlasDtrmm, + &clAmdBlasCtrmm, + &clAmdBlasZtrmm, + &clAmdBlasStrmmEx, + &clAmdBlasDtrmmEx, + &clAmdBlasCtrmmEx, + &clAmdBlasZtrmmEx, + &clAmdBlasStrsm, + &clAmdBlasDtrsm, + &clAmdBlasCtrsm, + &clAmdBlasZtrsm, + &clAmdBlasStrsmEx, + &clAmdBlasDtrsmEx, + &clAmdBlasCtrsmEx, + &clAmdBlasZtrsmEx, + &clAmdBlasSsyrk, + &clAmdBlasDsyrk, + &clAmdBlasCsyrk, + &clAmdBlasZsyrk, + &clAmdBlasSsyrkEx, + &clAmdBlasDsyrkEx, + &clAmdBlasCsyrkEx, + &clAmdBlasZsyrkEx, + &clAmdBlasSsyr2k, + &clAmdBlasDsyr2k, + &clAmdBlasCsyr2k, + &clAmdBlasZsyr2k, + &clAmdBlasSsyr2kEx, + &clAmdBlasDsyr2kEx, + &clAmdBlasCsyr2kEx, + &clAmdBlasZsyr2kEx, + &clAmdBlasSsymm, + &clAmdBlasDsymm, + &clAmdBlasCsymm, + &clAmdBlasZsymm, + &clAmdBlasChemm, + &clAmdBlasZhemm, + &clAmdBlasCherk, + &clAmdBlasZherk, + &clAmdBlasCher2k, + &clAmdBlasZher2k, +}; + +#endif diff --git a/modules/ocl/src/cl_runtime/clamdfft_runtime.cpp b/modules/ocl/src/cl_runtime/clamdfft_runtime.cpp new file mode 100644 index 0000000000..60cbecef2a --- /dev/null +++ b/modules/ocl/src/cl_runtime/clamdfft_runtime.cpp @@ -0,0 +1,396 @@ +// +// 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 + #include + + 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 +struct openclamdfft_fn0 +{ + typedef _R (*FN)(); + static _R switch_fn() + { return ((FN)openclamdfft_check_fn(ID))(); } +}; + +template +struct openclamdfft_fn1 +{ + typedef _R (*FN)(_T1); + static _R switch_fn(_T1 p1) + { return ((FN)openclamdfft_check_fn(ID))(p1); } +}; + +template +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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::switch_fn; +clAmdFftStatus (*clAmdFftTeardown)() = openclamdfft_fn0::switch_fn; +clAmdFftStatus (*clAmdFftGetVersion)(cl_uint*, cl_uint*, cl_uint*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftCreateDefaultPlan)(clAmdFftPlanHandle*, cl_context, const clAmdFftDim, const size_t*) = openclamdfft_fn4::switch_fn; +clAmdFftStatus (*clAmdFftCopyPlan)(clAmdFftPlanHandle*, cl_context, clAmdFftPlanHandle) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftBakePlan)(clAmdFftPlanHandle, cl_uint, cl_command_queue*, void (CL_CALLBACK*) (clAmdFftPlanHandle plHandle, void* user_data), void*) = openclamdfft_fn5::switch_fn; +clAmdFftStatus (*clAmdFftDestroyPlan)(clAmdFftPlanHandle*) = openclamdfft_fn1::switch_fn; +clAmdFftStatus (*clAmdFftGetPlanContext)(const clAmdFftPlanHandle, cl_context*) = openclamdfft_fn2::switch_fn; +clAmdFftStatus (*clAmdFftGetPlanPrecision)(const clAmdFftPlanHandle, clAmdFftPrecision*) = openclamdfft_fn2::switch_fn; +clAmdFftStatus (*clAmdFftSetPlanPrecision)(clAmdFftPlanHandle, clAmdFftPrecision) = openclamdfft_fn2::switch_fn; +clAmdFftStatus (*clAmdFftGetPlanScale)(const clAmdFftPlanHandle, clAmdFftDirection, cl_float*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftSetPlanScale)(clAmdFftPlanHandle, clAmdFftDirection, cl_float) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftGetPlanBatchSize)(const clAmdFftPlanHandle, size_t*) = openclamdfft_fn2::switch_fn; +clAmdFftStatus (*clAmdFftSetPlanBatchSize)(clAmdFftPlanHandle, size_t) = openclamdfft_fn2::switch_fn; +clAmdFftStatus (*clAmdFftGetPlanDim)(const clAmdFftPlanHandle, clAmdFftDim*, cl_uint*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftSetPlanDim)(clAmdFftPlanHandle, const clAmdFftDim) = openclamdfft_fn2::switch_fn; +clAmdFftStatus (*clAmdFftGetPlanLength)(const clAmdFftPlanHandle, const clAmdFftDim, size_t*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftSetPlanLength)(clAmdFftPlanHandle, const clAmdFftDim, const size_t*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftGetPlanInStride)(const clAmdFftPlanHandle, const clAmdFftDim, size_t*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftSetPlanInStride)(clAmdFftPlanHandle, const clAmdFftDim, size_t*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftGetPlanOutStride)(const clAmdFftPlanHandle, const clAmdFftDim, size_t*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftSetPlanOutStride)(clAmdFftPlanHandle, const clAmdFftDim, size_t*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftGetPlanDistance)(const clAmdFftPlanHandle, size_t*, size_t*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftSetPlanDistance)(clAmdFftPlanHandle, size_t, size_t) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftGetLayout)(const clAmdFftPlanHandle, clAmdFftLayout*, clAmdFftLayout*) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftSetLayout)(clAmdFftPlanHandle, clAmdFftLayout, clAmdFftLayout) = openclamdfft_fn3::switch_fn; +clAmdFftStatus (*clAmdFftGetResultLocation)(const clAmdFftPlanHandle, clAmdFftResultLocation*) = openclamdfft_fn2::switch_fn; +clAmdFftStatus (*clAmdFftSetResultLocation)(clAmdFftPlanHandle, clAmdFftResultLocation) = openclamdfft_fn2::switch_fn; +clAmdFftStatus (*clAmdFftGetPlanTransposeResult)(const clAmdFftPlanHandle, clAmdFftResultTransposed*) = openclamdfft_fn2::switch_fn; +clAmdFftStatus (*clAmdFftSetPlanTransposeResult)(clAmdFftPlanHandle, clAmdFftResultTransposed) = openclamdfft_fn2::switch_fn; +clAmdFftStatus (*clAmdFftGetTmpBufSize)(const clAmdFftPlanHandle, size_t*) = openclamdfft_fn2::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::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 diff --git a/modules/ocl/src/cl_runtime/generator/common.py b/modules/ocl/src/cl_runtime/generator/common.py new file mode 100644 index 0000000000..99a56096b0 --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/common.py @@ -0,0 +1,199 @@ +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() diff --git a/modules/ocl/src/cl_runtime/generator/generate.sh b/modules/ocl/src/cl_runtime/generator/generate.sh new file mode 100644 index 0000000000..5be039dfef --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/generate.sh @@ -0,0 +1,7 @@ +#!/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" diff --git a/modules/ocl/src/cl_runtime/generator/parser_cl.py b/modules/ocl/src/cl_runtime/generator/parser_cl.py new file mode 100644 index 0000000000..e711e4cf09 --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/parser_cl.py @@ -0,0 +1,112 @@ +#!/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) diff --git a/modules/ocl/src/cl_runtime/generator/parser_clamdblas.py b/modules/ocl/src/cl_runtime/generator/parser_clamdblas.py new file mode 100644 index 0000000000..52e62c5de8 --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/parser_clamdblas.py @@ -0,0 +1,107 @@ +#!/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) diff --git a/modules/ocl/src/cl_runtime/generator/parser_clamdfft.py b/modules/ocl/src/cl_runtime/generator/parser_clamdfft.py new file mode 100644 index 0000000000..35b78cad43 --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/parser_clamdfft.py @@ -0,0 +1,104 @@ +#!/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) diff --git a/modules/ocl/src/cl_runtime/generator/template/cl_runtime_impl_opencl.hpp.in b/modules/ocl/src/cl_runtime/generator/template/cl_runtime_impl_opencl.hpp.in new file mode 100644 index 0000000000..ff0395dcd3 --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/template/cl_runtime_impl_opencl.hpp.in @@ -0,0 +1,10 @@ +@CL_FN_ENUMS@ +@CL_FN_NAMES@ + +namespace { +@CL_FN_SWITCH@ +} + +@CL_FN_DEFINITIONS@ + +@CL_FN_PTRS@ diff --git a/modules/ocl/src/cl_runtime/generator/template/cl_runtime_opencl.hpp.in b/modules/ocl/src/cl_runtime/generator/template/cl_runtime_opencl.hpp.in new file mode 100644 index 0000000000..0079cb696d --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/template/cl_runtime_opencl.hpp.in @@ -0,0 +1,34 @@ +#ifndef __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__ +#define __OPENCV_OCL_CL_RUNTIME_OPENCL_HPP__ + +#ifdef HAVE_OPENCL + +#if defined __APPLE__ && !defined(IOS) +#include +#else + +@CL_REMAP_ORIGIN@ + +#if defined __APPLE__ +#include +#else +#include +#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__ diff --git a/modules/ocl/src/cl_runtime/generator/template/clamdblas_runtime.cpp.in b/modules/ocl/src/cl_runtime/generator/template/clamdblas_runtime.cpp.in new file mode 100644 index 0000000000..8492edda9e --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/template/clamdblas_runtime.cpp.in @@ -0,0 +1,75 @@ +#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 + #include + + 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 diff --git a/modules/ocl/src/cl_runtime/generator/template/clamdblas_runtime.hpp.in b/modules/ocl/src/cl_runtime/generator/template/clamdblas_runtime.hpp.in new file mode 100644 index 0000000000..cbffb0861a --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/template/clamdblas_runtime.hpp.in @@ -0,0 +1,25 @@ +#ifndef __OPENCV_OCL_CLAMDBLAS_RUNTIME_HPP__ +#define __OPENCV_OCL_CLAMDBLAS_RUNTIME_HPP__ + +#ifdef HAVE_CLAMDBLAS + +@CLAMDBLAS_REMAP_ORIGIN@ + +#include + +@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__ diff --git a/modules/ocl/src/cl_runtime/generator/template/clamdfft_runtime.cpp.in b/modules/ocl/src/cl_runtime/generator/template/clamdfft_runtime.cpp.in new file mode 100644 index 0000000000..aee6bd8ab6 --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/template/clamdfft_runtime.cpp.in @@ -0,0 +1,75 @@ +#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 + #include + + 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 diff --git a/modules/ocl/src/cl_runtime/generator/template/clamdfft_runtime.hpp.in b/modules/ocl/src/cl_runtime/generator/template/clamdfft_runtime.hpp.in new file mode 100644 index 0000000000..5e26d0154e --- /dev/null +++ b/modules/ocl/src/cl_runtime/generator/template/clamdfft_runtime.hpp.in @@ -0,0 +1,25 @@ +#ifndef __OPENCV_OCL_CLAMDFFT_RUNTIME_HPP__ +#define __OPENCV_OCL_CLAMDFFT_RUNTIME_HPP__ + +#ifdef HAVE_CLAMDFFT + +@CLAMDFFT_REMAP_ORIGIN@ + +#include + +@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__ diff --git a/modules/ocl/src/fft.cpp b/modules/ocl/src/fft.cpp index 7aa40e8b7b..b6cc070fb5 100644 --- a/modules/ocl/src/fft.cpp +++ b/modules/ocl/src/fft.cpp @@ -59,7 +59,7 @@ namespace cv { namespace ocl { }} void cv::ocl::fft_teardown(){} #else -#include "clAmdFft.h" +#include "opencv2/ocl/cl_runtime/clamdfft_runtime.hpp" namespace cv { namespace ocl diff --git a/modules/ocl/src/gemm.cpp b/modules/ocl/src/gemm.cpp index 7e31cdbf4f..ec03c2f932 100644 --- a/modules/ocl/src/gemm.cpp +++ b/modules/ocl/src/gemm.cpp @@ -73,7 +73,7 @@ void cv::ocl::clBlasTeardown() } #else -#include "clAmdBlas.h" +#include "opencv2/ocl/cl_runtime/clamdblas_runtime.hpp" using namespace cv; static bool clBlasInitialized = false; diff --git a/modules/ocl/src/precomp.hpp b/modules/ocl/src/precomp.hpp index a50ab900ab..039e7ff061 100644 --- a/modules/ocl/src/precomp.hpp +++ b/modules/ocl/src/precomp.hpp @@ -52,8 +52,18 @@ #pragma warning( disable: 4267 4324 4244 4251 4710 4711 4514 4996 ) #endif +#if defined(_WIN32) +#include +#endif + #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 #include #include diff --git a/modules/ocl/src/safe_call.hpp b/modules/ocl/src/safe_call.hpp index ba36cabd32..574400eefd 100644 --- a/modules/ocl/src/safe_call.hpp +++ b/modules/ocl/src/safe_call.hpp @@ -46,11 +46,7 @@ #ifndef __OPENCV_OPENCL_SAFE_CALL_HPP__ #define __OPENCV_OPENCL_SAFE_CALL_HPP__ -#if defined __APPLE__ -#include -#else -#include -#endif +#include "opencv2/ocl/cl_runtime/cl_runtime.hpp" #if defined(__GNUC__) #define openCLSafeCall(expr) ___openCLSafeCall(expr, __FILE__, __LINE__, __func__)