Index: clang/lib/Headers/opencl-c-base.h =================================================================== --- clang/lib/Headers/opencl-c-base.h +++ clang/lib/Headers/opencl-c-base.h @@ -460,6 +460,101 @@ #endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) +/** + * OpenCL v1.1/1.2/2.0 s6.2.4.2 - as_type operators + * Reinterprets a data type as another data type of the same size + */ +#define as_char(x) __builtin_astype((x), char) +#define as_char2(x) __builtin_astype((x), char2) +#define as_char3(x) __builtin_astype((x), char3) +#define as_char4(x) __builtin_astype((x), char4) +#define as_char8(x) __builtin_astype((x), char8) +#define as_char16(x) __builtin_astype((x), char16) + +#define as_uchar(x) __builtin_astype((x), uchar) +#define as_uchar2(x) __builtin_astype((x), uchar2) +#define as_uchar3(x) __builtin_astype((x), uchar3) +#define as_uchar4(x) __builtin_astype((x), uchar4) +#define as_uchar8(x) __builtin_astype((x), uchar8) +#define as_uchar16(x) __builtin_astype((x), uchar16) + +#define as_short(x) __builtin_astype((x), short) +#define as_short2(x) __builtin_astype((x), short2) +#define as_short3(x) __builtin_astype((x), short3) +#define as_short4(x) __builtin_astype((x), short4) +#define as_short8(x) __builtin_astype((x), short8) +#define as_short16(x) __builtin_astype((x), short16) + +#define as_ushort(x) __builtin_astype((x), ushort) +#define as_ushort2(x) __builtin_astype((x), ushort2) +#define as_ushort3(x) __builtin_astype((x), ushort3) +#define as_ushort4(x) __builtin_astype((x), ushort4) +#define as_ushort8(x) __builtin_astype((x), ushort8) +#define as_ushort16(x) __builtin_astype((x), ushort16) + +#define as_int(x) __builtin_astype((x), int) +#define as_int2(x) __builtin_astype((x), int2) +#define as_int3(x) __builtin_astype((x), int3) +#define as_int4(x) __builtin_astype((x), int4) +#define as_int8(x) __builtin_astype((x), int8) +#define as_int16(x) __builtin_astype((x), int16) + +#define as_uint(x) __builtin_astype((x), uint) +#define as_uint2(x) __builtin_astype((x), uint2) +#define as_uint3(x) __builtin_astype((x), uint3) +#define as_uint4(x) __builtin_astype((x), uint4) +#define as_uint8(x) __builtin_astype((x), uint8) +#define as_uint16(x) __builtin_astype((x), uint16) + +#define as_long(x) __builtin_astype((x), long) +#define as_long2(x) __builtin_astype((x), long2) +#define as_long3(x) __builtin_astype((x), long3) +#define as_long4(x) __builtin_astype((x), long4) +#define as_long8(x) __builtin_astype((x), long8) +#define as_long16(x) __builtin_astype((x), long16) + +#define as_ulong(x) __builtin_astype((x), ulong) +#define as_ulong2(x) __builtin_astype((x), ulong2) +#define as_ulong3(x) __builtin_astype((x), ulong3) +#define as_ulong4(x) __builtin_astype((x), ulong4) +#define as_ulong8(x) __builtin_astype((x), ulong8) +#define as_ulong16(x) __builtin_astype((x), ulong16) + +#define as_float(x) __builtin_astype((x), float) +#define as_float2(x) __builtin_astype((x), float2) +#define as_float3(x) __builtin_astype((x), float3) +#define as_float4(x) __builtin_astype((x), float4) +#define as_float8(x) __builtin_astype((x), float8) +#define as_float16(x) __builtin_astype((x), float16) + +#ifdef cl_khr_fp64 +#define as_double(x) __builtin_astype((x), double) +#define as_double2(x) __builtin_astype((x), double2) +#define as_double3(x) __builtin_astype((x), double3) +#define as_double4(x) __builtin_astype((x), double4) +#define as_double8(x) __builtin_astype((x), double8) +#define as_double16(x) __builtin_astype((x), double16) +#endif //cl_khr_fp64 + +#ifdef cl_khr_fp16 +#define as_half(x) __builtin_astype((x), half) +#define as_half2(x) __builtin_astype((x), half2) +#define as_half3(x) __builtin_astype((x), half3) +#define as_half4(x) __builtin_astype((x), half4) +#define as_half8(x) __builtin_astype((x), half8) +#define as_half16(x) __builtin_astype((x), half16) +#endif //cl_khr_fp16 + +// OpenCL v1.1 s6.9, v1.2/2.0 s6.10 - Function qualifiers + +#define __kernel_exec(X, typen) __kernel \ + __attribute__((work_group_size_hint(X, 1, 1))) \ + __attribute__((vec_type_hint(typen))) + +#define kernel_exec(X, typen) __kernel \ + __attribute__((work_group_size_hint(X, 1, 1))) \ + __attribute__((vec_type_hint(typen))) + #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2) // OpenCL v1.2 s6.12.13, v2.0 s6.13.13 - printf Index: clang/lib/Headers/opencl-c.h =================================================================== --- clang/lib/Headers/opencl-c.h +++ clang/lib/Headers/opencl-c.h @@ -6339,101 +6339,6 @@ #endif // cl_khr_fp16 -/** - * OpenCL v1.1/1.2/2.0 s6.2.4.2 - as_type operators - * Reinterprets a data type as another data type of the same size - */ -#define as_char(x) __builtin_astype((x), char) -#define as_char2(x) __builtin_astype((x), char2) -#define as_char3(x) __builtin_astype((x), char3) -#define as_char4(x) __builtin_astype((x), char4) -#define as_char8(x) __builtin_astype((x), char8) -#define as_char16(x) __builtin_astype((x), char16) - -#define as_uchar(x) __builtin_astype((x), uchar) -#define as_uchar2(x) __builtin_astype((x), uchar2) -#define as_uchar3(x) __builtin_astype((x), uchar3) -#define as_uchar4(x) __builtin_astype((x), uchar4) -#define as_uchar8(x) __builtin_astype((x), uchar8) -#define as_uchar16(x) __builtin_astype((x), uchar16) - -#define as_short(x) __builtin_astype((x), short) -#define as_short2(x) __builtin_astype((x), short2) -#define as_short3(x) __builtin_astype((x), short3) -#define as_short4(x) __builtin_astype((x), short4) -#define as_short8(x) __builtin_astype((x), short8) -#define as_short16(x) __builtin_astype((x), short16) - -#define as_ushort(x) __builtin_astype((x), ushort) -#define as_ushort2(x) __builtin_astype((x), ushort2) -#define as_ushort3(x) __builtin_astype((x), ushort3) -#define as_ushort4(x) __builtin_astype((x), ushort4) -#define as_ushort8(x) __builtin_astype((x), ushort8) -#define as_ushort16(x) __builtin_astype((x), ushort16) - -#define as_int(x) __builtin_astype((x), int) -#define as_int2(x) __builtin_astype((x), int2) -#define as_int3(x) __builtin_astype((x), int3) -#define as_int4(x) __builtin_astype((x), int4) -#define as_int8(x) __builtin_astype((x), int8) -#define as_int16(x) __builtin_astype((x), int16) - -#define as_uint(x) __builtin_astype((x), uint) -#define as_uint2(x) __builtin_astype((x), uint2) -#define as_uint3(x) __builtin_astype((x), uint3) -#define as_uint4(x) __builtin_astype((x), uint4) -#define as_uint8(x) __builtin_astype((x), uint8) -#define as_uint16(x) __builtin_astype((x), uint16) - -#define as_long(x) __builtin_astype((x), long) -#define as_long2(x) __builtin_astype((x), long2) -#define as_long3(x) __builtin_astype((x), long3) -#define as_long4(x) __builtin_astype((x), long4) -#define as_long8(x) __builtin_astype((x), long8) -#define as_long16(x) __builtin_astype((x), long16) - -#define as_ulong(x) __builtin_astype((x), ulong) -#define as_ulong2(x) __builtin_astype((x), ulong2) -#define as_ulong3(x) __builtin_astype((x), ulong3) -#define as_ulong4(x) __builtin_astype((x), ulong4) -#define as_ulong8(x) __builtin_astype((x), ulong8) -#define as_ulong16(x) __builtin_astype((x), ulong16) - -#define as_float(x) __builtin_astype((x), float) -#define as_float2(x) __builtin_astype((x), float2) -#define as_float3(x) __builtin_astype((x), float3) -#define as_float4(x) __builtin_astype((x), float4) -#define as_float8(x) __builtin_astype((x), float8) -#define as_float16(x) __builtin_astype((x), float16) - -#ifdef cl_khr_fp64 -#define as_double(x) __builtin_astype((x), double) -#define as_double2(x) __builtin_astype((x), double2) -#define as_double3(x) __builtin_astype((x), double3) -#define as_double4(x) __builtin_astype((x), double4) -#define as_double8(x) __builtin_astype((x), double8) -#define as_double16(x) __builtin_astype((x), double16) -#endif //cl_khr_fp64 - -#ifdef cl_khr_fp16 -#define as_half(x) __builtin_astype((x), half) -#define as_half2(x) __builtin_astype((x), half2) -#define as_half3(x) __builtin_astype((x), half3) -#define as_half4(x) __builtin_astype((x), half4) -#define as_half8(x) __builtin_astype((x), half8) -#define as_half16(x) __builtin_astype((x), half16) -#endif //cl_khr_fp16 - -// OpenCL v1.1 s6.9, v1.2/2.0 s6.10 - Function qualifiers - -#define __kernel_exec(X, typen) __kernel \ - __attribute__((work_group_size_hint(X, 1, 1))) \ - __attribute__((vec_type_hint(typen))) - -#define kernel_exec(X, typen) __kernel \ - __attribute__((work_group_size_hint(X, 1, 1))) \ - __attribute__((vec_type_hint(typen))) - // OpenCL v1.1 s6.11.1, v1.2 s6.12.1, v2.0 s6.13.1 - Work-item Functions /**