" Vim syntax file " Language: OpenCL (Open Computing Language) " Maintainer: Terence Ou (rivan_@msn.com) " Last Change: 19-July-2010 if version < 600 syntax clear elseif exists("b:current_syntax") finish endif " Read the C syntax to start with if version < 600 source :p:h/c.vim else runtime! syntax/c.vim endif " address space qualifiers syn keyword clStorageClass global __global local __local constant __constant private __private " function qualifiers syn keyword clStorageClass kernel __kernel __attribute__ syn keyword clStorageClass read_only __read_only write_only __write_only syn keyword clStorageClass complex imaginary " scalar types syn keyword clType bool uchar ushort uint ulong half quad " vector types syn keyword clType char2 char3 char4 char8 char16 syn keyword clType uchar2 uchar3 uchar4 uchar8 uchar16 syn keyword clType short2 short3 short4 short8 short16 syn keyword clType ushort2 ushort3 ushort4 ushort8 ushort16 syn keyword clType int2 int3 int4 int8 int16 syn keyword clType uint2 uint3 uint4 uint8 uint16 syn keyword clType long2 long3 long4 long8 long16 syn keyword clType ulong2 ulong3 ulong4 ulong8 ulong16 syn keyword clType float2 float3 float4 float8 float16 syn keyword clType double2 double3 double4 double8 double16 syn keyword clType half2 half3 half4 half8 half16 " other types syn keyword clType ptrdiff_t intptr_t uintptr_t syn keyword clType image2d_t image3d_t sampler_t event_t " reserved types syn keyword clType bool2 bool3 bool4 bool8 bool16 syn keyword clType quad2 quad3 quad4 quad8 quad16 syn match clType "\(float\|double\)\(2\|3\|4\|8\|16\)x\(2\|3\|4\|8\|16\)" " abstract data types syn keyword clType _cl_platform_id _cl_device_id _cl_context _cl_command_queue _cl_mem _cl_program _cl_kernel _cl_event _cl_sampler " image format descriptor structure syn keyword clType cl_image_format syn keyword clCast vec_type_hint work_group_size_hint aligned packed endian syn match clCast "as_\(uchar\|char\|ushort\|short\|uint\|int\|ulong\|long\|float\|double\)" syn match clCast "as_\(uchar\|char\|ushort\|short\|uint\|int\|ulong\|long\|float\|double\)\(2\|3\|4\|8\|16\)" syn match clCast "convert_\(uchar\|char\|ushort\|short\|uint\|int\|ulong\|long\|float\|double\))\(2\|3\|4\|8\|16\)" syn match clCast "convert_\(uchar\|char\|ushort\|short\|uint\|int\|ulong\|long\|float\|double\))\(2\|3\|4\|8\|16\)_sat" syn match clCast "convert_\(uchar\|char\|ushort\|short\|uint\|int\|ulong\|long\|float\|double\))\(2\|3\|4\|8\|16\)_sat_\(rte\|rtz\|rtp\|rtn\)" " work item functions syn keyword clFunction get_work_dim get_global_size get_global_id get_local_size get_local_id get_num_groups get_group_id get_global_offset " math functions syn keyword clFunction cos cosh cospi acos acosh acospi syn keyword clFunction sin sincos sinh sinpi asin asinh asinpi syn keyword clFunction tan tanh tanpi atan atan2 atanh atanpi atan2pi syn keyword clFunction cbrt ceil copysign syn keyword clFunction erfc erf syn keyword clFunction exp exp2 exp10 expm1 syn keyword clFunction fabs fdim floor fma fmax fmin syn keyword clFunction fract frexp hypot ilogb syn keyword clFunction ldexp ldexp lgamma lgamma_r syn keyword clFunction log log2 log10 log1p logb syn keyword clFunction mad modf syn keyword clFunction nan nextafter syn keyword clFunction pow pown powr syn keyword clFunction remainder remquo rint rootn round rsqrt sqrt syn keyword clFunction tgamma trunc syn keyword clFunction half_cos half_divide half_exp half_exp2 half_exp10 half_log half_log2 half_log10 half_powr half_recip half_rsqrt half_sin half_sqrt half_tan syn keyword clFunction native_cos native_divide native_exp native_exp2 native_exp10 native_log native_log2 native_log10 native_powr native_recip native_rsqrt native_sin native_sqrt native_tan " integer functions syn keyword clFunction abs abs_diff add_sat hadd rhadd clz mad_hi mad_sat max min mul_hi rotate sub_sat upsample mad24 mul24 " common functions syn keyword clFunction clamp degrees max min mix radians step smoothstep sign " geometric functions syn keyword clFunction cross dot distance length normalize fast_distance fast_length fast_normalize " miscellaneous vector functions syn keyword clFunction vec_step shuffle shuffle2 " relational functions syn keyword clFunction isequal isnotequal isgreater isgreaterequal isless islessequal islessgreater isfinite isinf isnan isnormal isordered isunordered signbit any all bitselect select " vector data load and store functions syn keyword clFunction vload_half vstore_half syn match clFunction "vload\(2\|3\|4\|8\|16\)" syn match clFunction "vload_half\(2\|3\|4\|8\|16\)" syn match clFunction "vloada_half\(2\|3\|4\|8\|16\)" syn match clFunction "vloada_half\(2\|3\|4\|8\|16\)_\(rte\|rtz\|rtp\)" syn match clFunction "vstore\(2\|3\|4\|8\|16\)" syn match clFunction "vstore\(rte\|rtz\|rtp\|rtn\)" syn match clFunction "vstore_half\(2\|3\|4\|8\|16\)" syn match clFunction "vstore_half_\(rte\|rtz\|rtp\|rtn\)" syn match clFunction "vstore_half\(2\|3\|4\|8\|16\)_\(rte\|rtz\|rtp\|rtn\)" syn match clFunction "vstorea_half\(2\|3\|4\|8\|16\)" syn match clFunction "vstorea_half\(2\|3\|4\|8\|16\)_\(rte\|rtz\|rtp\|rtn\)" " image read and write functions syn match clFunction "read_image\(f\|i\|ui\|h\)" syn match clFunction "write_image\(f\|i\|ui\|h\)" syn keyword clFunction get_image_width get_image_height get_image_depth get_image_channel_data_type get_image_channel_order get_image_dim " explicit memory fence functions syn keyword clFunction barrier mem_fence read_mem_fence write_mem_fence " async copies from global to local mem to and fro and prefetch syn keyword clFunction async_work_group_copy async_work_group__strided_copy wait_group_events prefetch " atomic functions syn match clFunction "atom_\(add\|sub\|xchg\|inc\|dec\|cmpxchg\|min\|max\|and\|or\|xor\)" syn keyword clConstant MAXFLOAT HUGE_VALF INFINITY NAN syn keyword clConstant FLT_DIG FLT_MANT_DIG FLT_MAX_10_EXP FLT_MAX_EXP FLT_MIN_10_EXP FLT_MIN_EXP FLT_RADIX FLT_MAX FLT_MIN FLT_EPSILON syn keyword clConstant CHAR_BIT CHAR_MAX CHAR_MIN INT_MIN INT_MAX LONG_MAX LONG_MIN SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN UCHAR_MAX UCHAR_MIN UINT_MAX ULONG_MAX syn keyword clConstant DBL_DIG DBL_MANT_DIG DBL_MAX_10_EXP DBL_MIN_10_EXP DBL_MIN_EXP DBL_MAX DBL_MIN DBL_EPSILON syn keyword clConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI2 M_PI4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 syn keyword clConstant CLK_NORMALIZED_COORDS_TRUE CLK_NORMALIZED_COORDS_FALSE syn keyword clConstant CLK_ADDRESS_REPEAT CLK_ADDRESS_CLAMP_TO_EDGE CLK_ADDRESS_CLAMP syn keyword clConstant CL_INTENSITY CL_RA CL_ARGB CL_BGRA CL_RGBA CL_R CL_RG CL_RGB CL_RGx CL_RGBx CL_Rx CL_A CL_LUMINANCE syn keyword clConstant CL_SNORM_INT8 CL_SNORM_INT16 CL_UNORM_INT8 CL_UNORM_INT16 CL_UNORM_SHORT_565 CL_UNORM_SHORT_555 CL_UNORM_INT_101010 CL_SIGNED_INT8 CL_SIGNED_INT16 CL_SIGNED_INT32 CL_UNSIGNED_INT8 CL_UNSIGNED_INT16 CL_UNSIGNED_INT32 CL_HALF_FLOAT CL_FLOAT syn keyword clConstant CLK_ADDRESS_NONE CLK_FILTER_NEAREST CLK_FILTER_LINEAR syn keyword clConstant CLK_GLOBAL_MEM_FENCE CLK_LOCAL_MEM_FENCE hi def link clStorageClass StorageClass hi def link clStructure Structure hi def link clType Type hi def link clVariable Identifier hi def link clConstant Constant hi def link clCast Operator hi def link clFunction Function hi def link clStatement Statement let b:current_syntax = "opencl" " vim: ts=8