-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add OpenCL language support #1175
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi! Thanks for contributing. Please take a look at my review.
components/prism-opencl.js
Outdated
/* OpenCL kernel language */ | ||
Prism.languages.opencl = Prism.languages.extend('c', { | ||
// Extracted from the official specs (2.0) and http://streamcomputing.eu/downloads/?opencl.lang (opencl-keywords, opencl-types) and http://sourceforge.net/tracker/?func=detail&aid=2957794&group_id=95717&atid=612384 (Words2, partly Words3) | ||
'keyword': /\b(__attribute__|__constant|__global|__kernel|__local|__private|__read_only|__read_write|__write_only|_cl_command_queue|_cl_context|_cl_device_id|_cl_event|_cl_kernel|_cl_mem|_cl_platform_id|_cl_program|_cl_sampler|auto|bool|bool16|bool2|bool3|bool4|bool8|break|case|char|char16|char2|char3|char4|char8|cl_image_format|cl_mem_fence_flags|clk_event_t|complex|const|constant|continue|default|do|double|double16|double16x1|double16x16|double16x2|double16x4|double16x8|double1x1|double1x16|double1x2|double1x4|double1x8|double2|double2x1|double2x16|double2x2|double2x4|double2x8|double3|double4|double4x1|double4x16|double4x2|double4x4|double4x8|double8|double8x1|double8x16|double8x2|double8x4|double8x8|else|enum|event_t|extern|float|float16|float16x1|float16x16|float16x2|float16x4|float16x8|float1x1|float1x16|float1x2|float1x4|float1x8|float2|float2x1|float2x16|float2x2|float2x4|float2x8|float3|float4|float4x1|float4x16|float4x2|float4x4|float4x8|float8|float8x1|float8x16|float8x2|float8x4|float8x8|for|global|goto|half|half16|half2|half3|half4|half8|if|image1d_array_t|image1d_buffer_t|image1d_t|image2d_array_depth_t|image2d_array_msaa_depth_t|image2d_array_msaa_t|image2d_array_t|image2d_depth_t|image2d_msaa_depth_t|image2d_msaa_t|image2d_t|image3d_t|imaginary|inline|int|int16|int2|int3|int4|int8|intptr_t|kernel|local|long|long16|long2|long3|long4|long8|ndrange_t|packed|pipe|private|ptrdiff_t|quad|quad16|quad2|quad3|quad4|quad8|queue_t|read_only|read_write|register|reserve_id_t|restrict|return|sampler_t|short|short16|short2|short3|short4|short8|signed|size_t|sizeof|static|struct|switch|typedef|uchar|uchar16|uchar2|uchar3|uchar4|uchar8|uint|uint16|uint2|uint3|uint4|uint8|uintptr_t|ulong|ulong16|ulong2|ulong3|ulong4|ulong8|uniform|union|unsigned|ushort|ushort16|ushort2|ushort3|ushort4|ushort8|void|volatile|while|write_only)\b/, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wow those are huge regexps. You might want to consider at least combining some of them?
bool(16|2|3|4|8)?
double(16(x(1|16|2|4|8))?|1x(1|16|2|4|8)|2(x(1|16|2|4|8))?|3|4(x(1|16|2|4|8))?|8(x(1|16|2|4|8))?)?
image(1d_(array_|buffer_)?t|2d_(array_(depth_|msaa_depth_|msaa_)?|depth_|msaa_depth_|msaa_)?t|3d_t)
etc.
components/prism-opencl.js
Outdated
'keyword': /\b(__attribute__|__constant|__global|__kernel|__local|__private|__read_only|__read_write|__write_only|_cl_command_queue|_cl_context|_cl_device_id|_cl_event|_cl_kernel|_cl_mem|_cl_platform_id|_cl_program|_cl_sampler|auto|bool|bool16|bool2|bool3|bool4|bool8|break|case|char|char16|char2|char3|char4|char8|cl_image_format|cl_mem_fence_flags|clk_event_t|complex|const|constant|continue|default|do|double|double16|double16x1|double16x16|double16x2|double16x4|double16x8|double1x1|double1x16|double1x2|double1x4|double1x8|double2|double2x1|double2x16|double2x2|double2x4|double2x8|double3|double4|double4x1|double4x16|double4x2|double4x4|double4x8|double8|double8x1|double8x16|double8x2|double8x4|double8x8|else|enum|event_t|extern|float|float16|float16x1|float16x16|float16x2|float16x4|float16x8|float1x1|float1x16|float1x2|float1x4|float1x8|float2|float2x1|float2x16|float2x2|float2x4|float2x8|float3|float4|float4x1|float4x16|float4x2|float4x4|float4x8|float8|float8x1|float8x16|float8x2|float8x4|float8x8|for|global|goto|half|half16|half2|half3|half4|half8|if|image1d_array_t|image1d_buffer_t|image1d_t|image2d_array_depth_t|image2d_array_msaa_depth_t|image2d_array_msaa_t|image2d_array_t|image2d_depth_t|image2d_msaa_depth_t|image2d_msaa_t|image2d_t|image3d_t|imaginary|inline|int|int16|int2|int3|int4|int8|intptr_t|kernel|local|long|long16|long2|long3|long4|long8|ndrange_t|packed|pipe|private|ptrdiff_t|quad|quad16|quad2|quad3|quad4|quad8|queue_t|read_only|read_write|register|reserve_id_t|restrict|return|sampler_t|short|short16|short2|short3|short4|short8|signed|size_t|sizeof|static|struct|switch|typedef|uchar|uchar16|uchar2|uchar3|uchar4|uchar8|uint|uint16|uint2|uint3|uint4|uint8|uintptr_t|ulong|ulong16|ulong2|ulong3|ulong4|ulong8|uniform|union|unsigned|ushort|ushort16|ushort2|ushort3|ushort4|ushort8|void|volatile|while|write_only)\b/, | ||
// Extracted from http://streamcomputing.eu/downloads/?opencl.lang (global-vars, opencl-dev) | ||
'function-opencl-kernel': { | ||
pattern: /\b(abs|abs_diff|acos|acosh|acospi|add_sat|aligned|all|and|any|asin|asinh|asinpi|async|async_work_group_copy|async_work_group_strided_copy|atan|atan2|atan2pi|atanh|atanpi|atom_add|atom_and|atom_cmpxchg|atom_dec|atom_inc|atom_max|atom_min|atom_or|atom_sub|atom_xchg|atom_xor|barrier|bitselect|cbrt|ceil|clamp|clz|copies|copysign|cos|cosh|cospi|cross|degrees|distance|dot|endian|erf|erfc|exp|exp10|exp2|expm1|fabs|fast_distance|fast_length|fast_normalize|fdim|floor|fma|fmax|fmin|fract|frexp|fro|from|get_global_id|get_global_offset|get_global_size|get_group_id|get_image_channel_data_type|get_image_channel_order|get_image_depth|get_image_dim|get_image_height|get_image_width|get_local_id|get_local_size|get_num_groups|get_work_dim|hadd|half_cos|half_divide|half_exp|half_exp10|half_exp2|half_log|half_log10|half_log2|half_powr|half_recip|half_rsqrt|half_sin|half_sqrt|half_tan|hypot|ilogb|isequal|isfinite|isgreater|isgreaterequal|isinf|isless|islessequal|islessgreater|isnan|isnormal|isnotequal|isordered|isunordered|ldexp|length|lgamma|lgamma_r|log|log10|log1p|log2|logb|mad|mad24|mad_hi|mad_sat|max|mem|mem_fence|min|mix|modf|mul24|mul_hi|nan|native_cos|native_divide|native_exp|native_exp10|native_exp2|native_log|native_log10|native_log2|native_powr|native_recip|native_rsqrt|native_sin|native_sqrt|native_tan|nextafter|normalize|pow|pown|powr|prefetch|radians|read_imagef|read_imageh|read_imagei|read_imageui|read_mem_fence|remainder|remquo|reqd_work_group_size|rhadd|rint|rootn|rotate|round|rsqrt|select|shuffle|shuffle2|sign|signbit|sin|sincos|sinh|sinpi|smoothstep|sqrt|step|sub_sat|tan|tanh|tanpi|tgamma|to|trunc|upsample|vec_step|vec_type_hint|vload16|vload2|vload3|vload4|vload8|vload_half|vload_half16|vload_half2|vload_half3|vload_half4|vload_half8|vloada_half16|vloada_half16_rte|vloada_half16_rtp|vloada_half16_rtz|vloada_half2|vloada_half2_rte|vloada_half2_rtp|vloada_half2_rtz|vloada_half3|vloada_half3_rte|vloada_half3_rtp|vloada_half3_rtz|vloada_half4|vloada_half4_rte|vloada_half4_rtp|vloada_half4_rtz|vloada_half8|vloada_half8_rte|vloada_half8_rtp|vloada_half8_rtz|vstore16|vstore2|vstore3|vstore4|vstore8|vstore_half|vstore_half16|vstore_half16_rte|vstore_half16_rtn|vstore_half16_rtp|vstore_half16_rtz|vstore_half2|vstore_half2_rte|vstore_half2_rtn|vstore_half2_rtp|vstore_half2_rtz|vstore_half3|vstore_half3_rte|vstore_half3_rtn|vstore_half3_rtp|vstore_half3_rtz|vstore_half4|vstore_half4_rte|vstore_half4_rtn|vstore_half4_rtp|vstore_half4_rtz|vstore_half8|vstore_half8_rte|vstore_half8_rtn|vstore_half8_rtp|vstore_half8_rtz|vstore_half_rte|vstore_half_rtn|vstore_half_rtp|vstore_half_rtz|vstore_rte|vstore_rtn|vstore_rtp|vstore_rtz|vstorea_half16|vstorea_half16_rte|vstorea_half16_rtn|vstorea_half16_rtp|vstorea_half16_rtz|vstorea_half2|vstorea_half2_rte|vstorea_half2_rtn|vstorea_half2_rtp|vstorea_half2_rtz|vstorea_half3|vstorea_half3_rte|vstorea_half3_rtn|vstorea_half3_rtp|vstorea_half3_rtz|vstorea_half4|vstorea_half4_rte|vstorea_half4_rtn|vstorea_half4_rtp|vstorea_half4_rtz|vstorea_half8|vstorea_half8_rte|vstorea_half8_rtn|vstorea_half8_rtp|vstorea_half8_rtz|vstorea_half_rte|vstorea_half_rtn|vstorea_half_rtp|vstorea_half_rtz|wait_group_events|work_group_size_hint|write_imagef|write_imageh|write_imagei|write_imageui|write_mem_fence)\b/, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment here. I can see a lot of common prefixes that could help combining those alternatives into a shorter regexp. (native_
, read_
, vstore_
, etc.)
components/prism-opencl.js
Outdated
}, | ||
// Extracted from http://streamcomputing.eu/downloads/?opencl.lang (opencl-const) | ||
'constant-opencl-kernel': { | ||
pattern: /\b(CHAR_BIT|CHAR_MAX|CHAR_MIN|CLK_ADDRESS_CLAMP|CLK_ADDRESS_CLAMP_TO_EDGE|CLK_ADDRESS_NONE|CLK_ADDRESS_REPEAT|CLK_FILTER_LINEAR|CLK_FILTER_NEAREST|CLK_GLOBAL_MEM_FENCE|CLK_LOCAL_MEM_FENCE|CLK_NORMALIZED_COORDS_FALSE|CLK_NORMALIZED_COORDS_TRUE|CL_A|CL_ARGB|CL_BGRA|CL_FLOAT|CL_HALF_FLOAT|CL_INTENSITY|CL_LUMINANCE|CL_R|CL_RA|CL_RG|CL_RGB|CL_RGBA|CL_RGBx|CL_RGx|CL_Rx|CL_SIGNED_INT16|CL_SIGNED_INT32|CL_SIGNED_INT8|CL_SNORM_INT16|CL_SNORM_INT8|CL_UNORM_INT16|CL_UNORM_INT8|CL_UNORM_INT_101010|CL_UNORM_SHORT_555|CL_UNORM_SHORT_565|CL_UNSIGNED_INT16|CL_UNSIGNED_INT32|CL_UNSIGNED_INT8|DBL_DIG|DBL_EPSILON|DBL_MANT_DIG|DBL_MAX|DBL_MAX_10_EXP|DBL_MIN|DBL_MIN_10_EXP|DBL_MIN_EXP|FLT_DIG|FLT_EPSILON|FLT_MANT_DIG|FLT_MAX|FLT_MAX_10_EXP|FLT_MAX_EXP|FLT_MIN|FLT_MIN_10_EXP|FLT_MIN_EXP|FLT_RADIX|HUGE_VALF|INFINITY|INT_MAX|INT_MIN|LONG_MAX|LONG_MIN|MAXFLOAT|M_1_PI|M_2_PI|M_2_SQRTPI|M_E|M_LN10|M_LN2|M_LOG10E|M_LOG2E|M_PI|M_PI2|M_PI4|M_SQRT1_2|M_SQRT2|NAN|SCHAR_MAX|SCHAR_MIN|SHRT_MAX|SHRT_MIN|UCHAR_MAX|UCHAR_MIN|UINT_MAX|ULONG_MAX)\b/, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment here.
components/prism-opencl.js
Outdated
var attributes = { | ||
// Extracted from http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-types and opencl-host) | ||
'type-opencl-host': { | ||
pattern: /\b(cl_GLenum|cl_GLint|cl_GLuin|cl_addressing_mode|cl_bitfield|cl_bool|cl_buffer_create_type|cl_build_status|cl_channel_order|cl_channel_type|cl_char|cl_char16|cl_char2|cl_char3|cl_char4|cl_char8|cl_command_queue|cl_command_queue_info|cl_command_queue_properties|cl_command_type|cl_context|cl_context_info|cl_context_properties|cl_device_exec_capabilities|cl_device_fp_config|cl_device_id|cl_device_info|cl_device_local_mem_type|cl_device_mem_cache_type|cl_device_type|cl_double|cl_double16|cl_double2|cl_double3|cl_double4|cl_double8|cl_event|cl_event_info|cl_filter_mode|cl_float|cl_float16|cl_float2|cl_float3|cl_float4|cl_float8|cl_half|cl_image_info|cl_int|cl_int16|cl_int2|cl_int3|cl_int4|cl_int8|cl_kernel|cl_kernel_info|cl_kernel_work_group_info|cl_long|cl_long16|cl_long2|cl_long3|cl_long4|cl_long8|cl_map_flags|cl_mem|cl_mem_flags|cl_mem_info|cl_mem_object_type|cl_platform_id|cl_platform_info|cl_profiling_info|cl_program|cl_program_build_info|cl_program_info|cl_sampler|cl_sampler_info|cl_short|cl_short16|cl_short2|cl_short3|cl_short4|cl_short8|cl_uchar|cl_uchar16|cl_uchar2|cl_uchar3|cl_uchar4|cl_uchar8|cl_uint|cl_uint16|cl_uint2|cl_uint3|cl_uint4|cl_uint8|cl_ulong|cl_ulong16|cl_ulong2|cl_ulong3|cl_ulong4|cl_ulong8|cl_ushort|cl_ushort16|cl_ushort2|cl_ushort3|cl_ushort4|cl_ushort8)\b/, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment here. All of those share the cl_
prefix!
components/prism-opencl.js
Outdated
}, | ||
// Extracted from cl.h (2.0) and http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-const) | ||
'constant-opencl-host': { | ||
pattern: /\b(CL_A|CL_ABGR|CL_ADDRESS_CLAMP|CL_ADDRESS_CLAMP_TO_EDGE|CL_ADDRESS_MIRRORED_REPEAT|CL_ADDRESS_NONE|CL_ADDRESS_REPEAT|CL_ARGB|CL_BGRA|CL_BLOCKING|CL_BUFFER_CREATE_TYPE_REGION|CL_BUILD_ERROR|CL_BUILD_IN_PROGRESS|CL_BUILD_NONE|CL_BUILD_PROGRAM_FAILURE|CL_BUILD_SUCCESS|CL_COMMAND_ACQUIRE_GL_OBJECTS|CL_COMMAND_BARRIER|CL_COMMAND_COPY_BUFFER|CL_COMMAND_COPY_BUFFER_RECT|CL_COMMAND_COPY_BUFFER_TO_IMAGE|CL_COMMAND_COPY_IMAGE|CL_COMMAND_COPY_IMAGE_TO_BUFFER|CL_COMMAND_FILL_BUFFER|CL_COMMAND_FILL_IMAGE|CL_COMMAND_MAP_BUFFER|CL_COMMAND_MAP_IMAGE|CL_COMMAND_MARKER|CL_COMMAND_MIGRATE_MEM_OBJECTS|CL_COMMAND_MIGRATE_SVM_MEM_OBJECTS|CL_COMMAND_NATIVE_KERNEL|CL_COMMAND_NDRANGE_KERNEL|CL_COMMAND_READ_BUFFER|CL_COMMAND_READ_BUFFER_RECT|CL_COMMAND_READ_IMAGE|CL_COMMAND_RELEASE_GL_OBJECTS|CL_COMMAND_SVM_FREE|CL_COMMAND_SVM_MAP|CL_COMMAND_SVM_MEMCPY|CL_COMMAND_SVM_MEMFILL|CL_COMMAND_SVM_UNMAP|CL_COMMAND_TASK|CL_COMMAND_UNMAP_MEM_OBJECT|CL_COMMAND_USER|CL_COMMAND_WRITE_BUFFER|CL_COMMAND_WRITE_BUFFER_RECT|CL_COMMAND_WRITE_IMAGE|CL_COMPILER_NOT_AVAILABLE|CL_COMPILE_PROGRAM_FAILURE|CL_COMPLETE|CL_CONTEXT_DEVICES|CL_CONTEXT_INTEROP_USER_SYNC|CL_CONTEXT_NUM_DEVICES|CL_CONTEXT_PLATFORM|CL_CONTEXT_PROPERTIES|CL_CONTEXT_REFERENCE_COUNT|CL_DEPTH|CL_DEPTH_STENCIL|CL_DEVICE_ADDRESS_BITS|CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE|CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE|CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE|CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE|CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE|CL_DEVICE_AFFINITY_DOMAIN_NUMA|CL_DEVICE_AVAILABLE|CL_DEVICE_BUILT_IN_KERNELS|CL_DEVICE_COMPILER_AVAILABLE|CL_DEVICE_DOUBLE_FP_CONFIG|CL_DEVICE_ENDIAN_LITTLE|CL_DEVICE_ERROR_CORRECTION_SUPPORT|CL_DEVICE_EXECUTION_CAPABILITIES|CL_DEVICE_EXTENSIONS|CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE|CL_DEVICE_GLOBAL_MEM_CACHE_SIZE|CL_DEVICE_GLOBAL_MEM_CACHE_TYPE|CL_DEVICE_GLOBAL_MEM_SIZE|CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE|CL_DEVICE_HOST_UNIFIED_MEMORY|CL_DEVICE_IL_VERSION|CL_DEVICE_IMAGE2D_MAX_HEIGHT|CL_DEVICE_IMAGE2D_MAX_WIDTH|CL_DEVICE_IMAGE3D_MAX_DEPTH|CL_DEVICE_IMAGE3D_MAX_HEIGHT|CL_DEVICE_IMAGE3D_MAX_WIDTH|CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT|CL_DEVICE_IMAGE_MAX_ARRAY_SIZE|CL_DEVICE_IMAGE_MAX_BUFFER_SIZE|CL_DEVICE_IMAGE_PITCH_ALIGNMENT|CL_DEVICE_IMAGE_SUPPORT|CL_DEVICE_LINKER_AVAILABLE|CL_DEVICE_LOCAL_MEM_SIZE|CL_DEVICE_LOCAL_MEM_TYPE|CL_DEVICE_MAX_CLOCK_FREQUENCY|CL_DEVICE_MAX_COMPUTE_UNITS|CL_DEVICE_MAX_CONSTANT_ARGS|CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE|CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE|CL_DEVICE_MAX_MEM_ALLOC_SIZE|CL_DEVICE_MAX_NUM_SUB_GROUPS|CL_DEVICE_MAX_ON_DEVICE_EVENTS|CL_DEVICE_MAX_ON_DEVICE_QUEUES|CL_DEVICE_MAX_PARAMETER_SIZE|CL_DEVICE_MAX_PIPE_ARGS|CL_DEVICE_MAX_READ_IMAGE_ARGS|CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS|CL_DEVICE_MAX_SAMPLERS|CL_DEVICE_MAX_WORK_GROUP_SIZE|CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS|CL_DEVICE_MAX_WORK_ITEM_SIZES|CL_DEVICE_MAX_WRITE_IMAGE_ARGS|CL_DEVICE_MEM_BASE_ADDR_ALIGN|CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE|CL_DEVICE_NAME|CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR|CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE|CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT|CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF|CL_DEVICE_NATIVE_VECTOR_WIDTH_INT|CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG|CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT|CL_DEVICE_NOT_AVAILABLE|CL_DEVICE_NOT_FOUND|CL_DEVICE_OPENCL_C_VERSION|CL_DEVICE_PARENT_DEVICE|CL_DEVICE_PARTITION_AFFINITY_DOMAIN|CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN|CL_DEVICE_PARTITION_BY_COUNTS|CL_DEVICE_PARTITION_BY_COUNTS_LIST_END|CL_DEVICE_PARTITION_EQUALLY|CL_DEVICE_PARTITION_FAILED|CL_DEVICE_PARTITION_MAX_SUB_DEVICES|CL_DEVICE_PARTITION_PROPERTIES|CL_DEVICE_PARTITION_TYPE|CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS|CL_DEVICE_PIPE_MAX_PACKET_SIZE|CL_DEVICE_PLATFORM|CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT|CL_DEVICE_PREFERRED_INTEROP_USER_SYNC|CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT|CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT|CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR|CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE|CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT|CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF|CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT|CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG|CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT|CL_DEVICE_PRINTF_BUFFER_SIZE|CL_DEVICE_PROFILE|CL_DEVICE_PROFILING_TIMER_RESOLUTION|CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE|CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE|CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES|CL_DEVICE_QUEUE_ON_HOST_PROPERTIES|CL_DEVICE_QUEUE_PROPERTIES|CL_DEVICE_REFERENCE_COUNT|CL_DEVICE_SINGLE_FP_CONFIG|CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS|CL_DEVICE_SVM_ATOMICS|CL_DEVICE_SVM_CAPABILITIES|CL_DEVICE_SVM_COARSE_GRAIN_BUFFER|CL_DEVICE_SVM_FINE_GRAIN_BUFFER|CL_DEVICE_SVM_FINE_GRAIN_SYSTEM|CL_DEVICE_TYPE|CL_DEVICE_TYPE_ACCELERATOR|CL_DEVICE_TYPE_ALL|CL_DEVICE_TYPE_CPU|CL_DEVICE_TYPE_CUSTOM|CL_DEVICE_TYPE_DEFAULT|CL_DEVICE_TYPE_GPU|CL_DEVICE_VENDOR|CL_DEVICE_VENDOR_ID|CL_DEVICE_VERSION|CL_DRIVER_VERSION|CL_EVENT_COMMAND_EXECUTION_STATUS|CL_EVENT_COMMAND_QUEUE|CL_EVENT_COMMAND_TYPE|CL_EVENT_CONTEXT|CL_EVENT_REFERENCE_COUNT|CL_EXEC_KERNEL|CL_EXEC_NATIVE_KERNEL|CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST|CL_FILTER_LINEAR|CL_FILTER_NEAREST|CL_FLOAT|CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT|CL_FP_DENORM|CL_FP_FMA|CL_FP_INF_NAN|CL_FP_ROUND_TO_INF|CL_FP_ROUND_TO_NEAREST|CL_FP_ROUND_TO_ZERO|CL_FP_SOFT_FLOAT|CL_GLOBAL|CL_HALF_FLOAT|CL_IMAGE_ARRAY_SIZE|CL_IMAGE_BUFFER|CL_IMAGE_DEPTH|CL_IMAGE_ELEMENT_SIZE|CL_IMAGE_FORMAT|CL_IMAGE_FORMAT_MISMATCH|CL_IMAGE_FORMAT_NOT_SUPPORTED|CL_IMAGE_HEIGHT|CL_IMAGE_NUM_MIP_LEVELS|CL_IMAGE_NUM_SAMPLES|CL_IMAGE_ROW_PITCH|CL_IMAGE_SLICE_PITCH|CL_IMAGE_WIDTH|CL_INTENSITY|CL_INVALID_ARG_INDEX|CL_INVALID_ARG_SIZE|CL_INVALID_ARG_VALUE|CL_INVALID_BINARY|CL_INVALID_BUFFER_SIZE|CL_INVALID_BUILD_OPTIONS|CL_INVALID_COMMAND_QUEUE|CL_INVALID_COMPILER_OPTIONS|CL_INVALID_CONTEXT|CL_INVALID_DEVICE|CL_INVALID_DEVICE_PARTITION_COUNT|CL_INVALID_DEVICE_QUEUE|CL_INVALID_DEVICE_TYPE|CL_INVALID_EVENT|CL_INVALID_EVENT_WAIT_LIST|CL_INVALID_GLOBAL_OFFSET|CL_INVALID_GLOBAL_WORK_SIZE|CL_INVALID_GL_OBJECT|CL_INVALID_HOST_PTR|CL_INVALID_IMAGE_DESCRIPTOR|CL_INVALID_IMAGE_FORMAT_DESCRIPTOR|CL_INVALID_IMAGE_SIZE|CL_INVALID_KERNEL|CL_INVALID_KERNEL_ARGS|CL_INVALID_KERNEL_DEFINITION|CL_INVALID_KERNEL_NAME|CL_INVALID_LINKER_OPTIONS|CL_INVALID_MEM_OBJECT|CL_INVALID_MIP_LEVEL|CL_INVALID_OPERATION|CL_INVALID_PIPE_SIZE|CL_INVALID_PLATFORM|CL_INVALID_PROGRAM|CL_INVALID_PROGRAM_EXECUTABLE|CL_INVALID_PROPERTY|CL_INVALID_QUEUE_PROPERTIES|CL_INVALID_SAMPLER|CL_INVALID_VALUE|CL_INVALID_WORK_DIMENSION|CL_INVALID_WORK_GROUP_SIZE|CL_INVALID_WORK_ITEM_SIZE|CL_KERNEL_ARG_ACCESS_NONE|CL_KERNEL_ARG_ACCESS_QUALIFIER|CL_KERNEL_ARG_ACCESS_READ_ONLY|CL_KERNEL_ARG_ACCESS_READ_WRITE|CL_KERNEL_ARG_ACCESS_WRITE_ONLY|CL_KERNEL_ARG_ADDRESS_CONSTANT|CL_KERNEL_ARG_ADDRESS_GLOBAL|CL_KERNEL_ARG_ADDRESS_LOCAL|CL_KERNEL_ARG_ADDRESS_PRIVATE|CL_KERNEL_ARG_ADDRESS_QUALIFIER|CL_KERNEL_ARG_INFO_NOT_AVAILABLE|CL_KERNEL_ARG_NAME|CL_KERNEL_ARG_TYPE_CONST|CL_KERNEL_ARG_TYPE_NAME|CL_KERNEL_ARG_TYPE_NONE|CL_KERNEL_ARG_TYPE_PIPE|CL_KERNEL_ARG_TYPE_QUALIFIER|CL_KERNEL_ARG_TYPE_RESTRICT|CL_KERNEL_ARG_TYPE_VOLATILE|CL_KERNEL_ATTRIBUTES|CL_KERNEL_COMPILE_NUM_SUB_GROUPS|CL_KERNEL_COMPILE_WORK_GROUP_SIZE|CL_KERNEL_CONTEXT|CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM|CL_KERNEL_EXEC_INFO_SVM_PTRS|CL_KERNEL_FUNCTION_NAME|CL_KERNEL_GLOBAL_WORK_SIZE|CL_KERNEL_LOCAL_MEM_SIZE|CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT|CL_KERNEL_MAX_NUM_SUB_GROUPS|CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE|CL_KERNEL_NUM_ARGS|CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE|CL_KERNEL_PRIVATE_MEM_SIZE|CL_KERNEL_PROGRAM|CL_KERNEL_REFERENCE_COUNT|CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE|CL_KERNEL_WORK_GROUP_SIZE|CL_LINKER_NOT_AVAILABLE|CL_LINK_PROGRAM_FAILURE|CL_LOCAL|CL_LUMINANCE|CL_MAP_FAILURE|CL_MAP_READ|CL_MAP_WRITE|CL_MAP_WRITE_INVALIDATE_REGION|CL_MEM_ALLOC_HOST_PTR|CL_MEM_ASSOCIATED_MEMOBJECT|CL_MEM_CONTEXT|CL_MEM_COPY_HOST_PTR|CL_MEM_COPY_OVERLAP|CL_MEM_FLAGS|CL_MEM_HOST_NO_ACCESS|CL_MEM_HOST_PTR|CL_MEM_HOST_READ_ONLY|CL_MEM_HOST_WRITE_ONLY|CL_MEM_KERNEL_READ_AND_WRITE|CL_MEM_MAP_COUNT|CL_MEM_OBJECT_ALLOCATION_FAILURE|CL_MEM_OBJECT_BUFFER|CL_MEM_OBJECT_IMAGE1D|CL_MEM_OBJECT_IMAGE1D_ARRAY|CL_MEM_OBJECT_IMAGE1D_BUFFER|CL_MEM_OBJECT_IMAGE2D|CL_MEM_OBJECT_IMAGE2D_ARRAY|CL_MEM_OBJECT_IMAGE3D|CL_MEM_OBJECT_PIPE|CL_MEM_OFFSET|CL_MEM_READ_ONLY|CL_MEM_READ_WRITE|CL_MEM_REFERENCE_COUNT|CL_MEM_SIZE|CL_MEM_SVM_ATOMICS|CL_MEM_SVM_FINE_GRAIN_BUFFER|CL_MEM_TYPE|CL_MEM_USES_SVM_POINTER|CL_MEM_USE_HOST_PTR|CL_MEM_WRITE_ONLY|CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED|CL_MIGRATE_MEM_OBJECT_HOST|CL_MISALIGNED_SUB_BUFFER_OFFSET|CL_NONE|CL_NON_BLOCKING|CL_OUT_OF_HOST_MEMORY|CL_OUT_OF_RESOURCES|CL_PIPE_MAX_PACKETS|CL_PIPE_PACKET_SIZE|CL_PLATFORM_EXTENSIONS|CL_PLATFORM_HOST_TIMER_RESOLUTION|CL_PLATFORM_NAME|CL_PLATFORM_PROFILE|CL_PLATFORM_VENDOR|CL_PLATFORM_VERSION|CL_PROFILING_COMMAND_COMPLETE|CL_PROFILING_COMMAND_END|CL_PROFILING_COMMAND_QUEUED|CL_PROFILING_COMMAND_START|CL_PROFILING_COMMAND_SUBMIT|CL_PROFILING_INFO_NOT_AVAILABLE|CL_PROGRAM_BINARIES|CL_PROGRAM_BINARY_SIZES|CL_PROGRAM_BINARY_TYPE|CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT|CL_PROGRAM_BINARY_TYPE_EXECUTABLE|CL_PROGRAM_BINARY_TYPE_LIBRARY|CL_PROGRAM_BINARY_TYPE_NONE|CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE|CL_PROGRAM_BUILD_LOG|CL_PROGRAM_BUILD_OPTIONS|CL_PROGRAM_BUILD_STATUS|CL_PROGRAM_CONTEXT|CL_PROGRAM_DEVICES|CL_PROGRAM_IL|CL_PROGRAM_KERNEL_NAMES|CL_PROGRAM_NUM_DEVICES|CL_PROGRAM_NUM_KERNELS|CL_PROGRAM_REFERENCE_COUNT|CL_PROGRAM_SOURCE|CL_QUEUED|CL_QUEUE_CONTEXT|CL_QUEUE_DEVICE|CL_QUEUE_DEVICE_DEFAULT|CL_QUEUE_ON_DEVICE|CL_QUEUE_ON_DEVICE_DEFAULT|CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE|CL_QUEUE_PROFILING_ENABLE|CL_QUEUE_PROPERTIES|CL_QUEUE_REFERENCE_COUNT|CL_QUEUE_SIZE|CL_R|CL_RA|CL_READ_ONLY_CACHE|CL_READ_WRITE_CACHE|CL_RG|CL_RGB|CL_RGBA|CL_RGBx|CL_RGx|CL_RUNNING|CL_Rx|CL_SAMPLER_ADDRESSING_MODE|CL_SAMPLER_CONTEXT|CL_SAMPLER_FILTER_MODE|CL_SAMPLER_LOD_MAX|CL_SAMPLER_LOD_MIN|CL_SAMPLER_MIP_FILTER_MODE|CL_SAMPLER_NORMALIZED_COORDS|CL_SAMPLER_REFERENCE_COUNT|CL_SIGNED_INT16|CL_SIGNED_INT32|CL_SIGNED_INT8|CL_SNORM_INT16|CL_SNORM_INT8|CL_SUBMITTED|CL_SUCCESS|CL_UNORM_INT16|CL_UNORM_INT24|CL_UNORM_INT8|CL_UNORM_INT_101010|CL_UNORM_INT_101010_2|CL_UNORM_SHORT_555|CL_UNORM_SHORT_565|CL_UNSIGNED_INT16|CL_UNSIGNED_INT32|CL_UNSIGNED_INT8|CL_VERSION_1_0|CL_VERSION_1_1|CL_VERSION_1_2|CL_VERSION_2_0|CL_VERSION_2_1|CL_sBGRA|CL_sRGB|CL_sRGBA|CL_sRGBx)\b/, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment here. They seem to all share the CL_
prefix, plus other parts are ofter repeated.
components/prism-opencl.js
Outdated
}, | ||
// Extracted from cl.h (2.0) and http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-host) | ||
'function-opencl-host': { | ||
pattern: /\b(clBuildProgram|clCloneKernel|clCompileProgram|clCreateBuffer|clCreateCommandQueue|clCreateCommandQueueWithProperties|clCreateContext|clCreateContextFromType|clCreateImage|clCreateImage2D|clCreateImage3D|clCreateKernel|clCreateKernelsInProgram|clCreatePipe|clCreateProgramWithBinary|clCreateProgramWithBuiltInKernels|clCreateProgramWithIL|clCreateProgramWithSource|clCreateSampler|clCreateSamplerWithProperties|clCreateSubBuffer|clCreateSubDevices|clCreateUserEvent|clEnqueueBarrier|clEnqueueBarrierWithWaitList|clEnqueueCopyBuffer|clEnqueueCopyBufferRect|clEnqueueCopyBufferToImage|clEnqueueCopyImage|clEnqueueCopyImageToBuffer|clEnqueueFillBuffer|clEnqueueFillImage|clEnqueueMapBuffer|clEnqueueMapImage|clEnqueueMarker|clEnqueueMarkerWithWaitList|clEnqueueMigrateMemObjects|clEnqueueNDRangeKernel|clEnqueueNativeKernel|clEnqueueReadBuffer|clEnqueueReadBufferRect|clEnqueueReadImage|clEnqueueSVMFree|clEnqueueSVMMap|clEnqueueSVMMemFill|clEnqueueSVMMemcpy|clEnqueueSVMMigrateMem|clEnqueueSVMUnmap|clEnqueueTask|clEnqueueUnmapMemObject|clEnqueueWaitForEvents|clEnqueueWriteBuffer|clEnqueueWriteBufferRect|clEnqueueWriteImage|clFinish|clFlush|clGetCommandQueueInfo|clGetContextInfo|clGetDeviceAndHostTimer|clGetDeviceIDs|clGetDeviceInfo|clGetEventInfo|clGetEventProfilingInfo|clGetExtensionFunctionAddress|clGetExtensionFunctionAddressForPlatform|clGetHostTimer|clGetImageInfo|clGetKernelArgInfo|clGetKernelInfo|clGetKernelSubGroupInfo|clGetKernelWorkGroupInfo|clGetMemObjectInfo|clGetPipeInfo|clGetPlatformIDs|clGetPlatformInfo|clGetProgramBuildInfo|clGetProgramInfo|clGetSamplerInfo|clGetSupportedImageFormats|clLinkProgram|clReleaseCommandQueue|clReleaseContext|clReleaseDevice|clReleaseEvent|clReleaseKernel|clReleaseMemObject|clReleaseProgram|clReleaseSampler|clRetainCommandQueue|clRetainContext|clRetainDevice|clRetainEvent|clRetainKernel|clRetainMemObject|clRetainProgram|clRetainSampler|clSVMAlloc|clSVMFree|clSetCommandQueueProperty|clSetDefaultDeviceCommandQueue|clSetEventCallback|clSetKernelArg|clSetKernelArgSVMPointer|clSetKernelExecInfo|clSetMemObjectDestructorCallback|clSetUserEventStatus|clUnloadCompiler|clUnloadPlatformCompiler|clWaitForEvents)\b/, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment here. cl
prefix plus other common parts.
Thanks for the review! I updated the regexes so that they are (a bit) shorter. |
Merged! Thank you for contributing! |
This PR adds support for the OpenCL language. It adds the new
language-opencl
class to support OpenCL kernel code and additionally extends the existing c and cpp languages to highlight some of the OpenCL host code.I already use it on my own site, e.g. in this article.