1*61046927SAndroid Build Coastguard Worker /******************************************************************************* 2*61046927SAndroid Build Coastguard Worker * Copyright (c) 2008-2020 The Khronos Group Inc. 3*61046927SAndroid Build Coastguard Worker * 4*61046927SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*61046927SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*61046927SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*61046927SAndroid Build Coastguard Worker * 8*61046927SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*61046927SAndroid Build Coastguard Worker * 10*61046927SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*61046927SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*61046927SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*61046927SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*61046927SAndroid Build Coastguard Worker * limitations under the License. 15*61046927SAndroid Build Coastguard Worker ******************************************************************************/ 16*61046927SAndroid Build Coastguard Worker 17*61046927SAndroid Build Coastguard Worker #ifndef __CL_PLATFORM_H 18*61046927SAndroid Build Coastguard Worker #define __CL_PLATFORM_H 19*61046927SAndroid Build Coastguard Worker 20*61046927SAndroid Build Coastguard Worker #include <CL/cl_version.h> 21*61046927SAndroid Build Coastguard Worker 22*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 23*61046927SAndroid Build Coastguard Worker extern "C" { 24*61046927SAndroid Build Coastguard Worker #endif 25*61046927SAndroid Build Coastguard Worker 26*61046927SAndroid Build Coastguard Worker #if defined(_WIN32) 27*61046927SAndroid Build Coastguard Worker #if !defined(CL_API_ENTRY) 28*61046927SAndroid Build Coastguard Worker #define CL_API_ENTRY 29*61046927SAndroid Build Coastguard Worker #endif 30*61046927SAndroid Build Coastguard Worker #if !defined(CL_API_CALL) 31*61046927SAndroid Build Coastguard Worker #define CL_API_CALL __stdcall 32*61046927SAndroid Build Coastguard Worker #endif 33*61046927SAndroid Build Coastguard Worker #if !defined(CL_CALLBACK) 34*61046927SAndroid Build Coastguard Worker #define CL_CALLBACK __stdcall 35*61046927SAndroid Build Coastguard Worker #endif 36*61046927SAndroid Build Coastguard Worker #else 37*61046927SAndroid Build Coastguard Worker #if !defined(CL_API_ENTRY) 38*61046927SAndroid Build Coastguard Worker #define CL_API_ENTRY 39*61046927SAndroid Build Coastguard Worker #endif 40*61046927SAndroid Build Coastguard Worker #if !defined(CL_API_CALL) 41*61046927SAndroid Build Coastguard Worker #define CL_API_CALL 42*61046927SAndroid Build Coastguard Worker #endif 43*61046927SAndroid Build Coastguard Worker #if !defined(CL_CALLBACK) 44*61046927SAndroid Build Coastguard Worker #define CL_CALLBACK 45*61046927SAndroid Build Coastguard Worker #endif 46*61046927SAndroid Build Coastguard Worker #endif 47*61046927SAndroid Build Coastguard Worker 48*61046927SAndroid Build Coastguard Worker /* 49*61046927SAndroid Build Coastguard Worker * Deprecation flags refer to the last version of the header in which the 50*61046927SAndroid Build Coastguard Worker * feature was not deprecated. 51*61046927SAndroid Build Coastguard Worker * 52*61046927SAndroid Build Coastguard Worker * E.g. VERSION_1_1_DEPRECATED means the feature is present in 1.1 without 53*61046927SAndroid Build Coastguard Worker * deprecation but is deprecated in versions later than 1.1. 54*61046927SAndroid Build Coastguard Worker */ 55*61046927SAndroid Build Coastguard Worker 56*61046927SAndroid Build Coastguard Worker #ifndef CL_API_SUFFIX_USER 57*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX_USER 58*61046927SAndroid Build Coastguard Worker #endif 59*61046927SAndroid Build Coastguard Worker 60*61046927SAndroid Build Coastguard Worker #ifndef CL_API_PREFIX_USER 61*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX_USER 62*61046927SAndroid Build Coastguard Worker #endif 63*61046927SAndroid Build Coastguard Worker 64*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX_COMMON CL_API_SUFFIX_USER 65*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX_COMMON CL_API_PREFIX_USER 66*61046927SAndroid Build Coastguard Worker 67*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_1_0 CL_API_SUFFIX_COMMON 68*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_1_1 CL_API_SUFFIX_COMMON 69*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_1_2 CL_API_SUFFIX_COMMON 70*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_2_0 CL_API_SUFFIX_COMMON 71*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_2_1 CL_API_SUFFIX_COMMON 72*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_2_2 CL_API_SUFFIX_COMMON 73*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_3_0 CL_API_SUFFIX_COMMON 74*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__EXPERIMENTAL CL_API_SUFFIX_COMMON 75*61046927SAndroid Build Coastguard Worker 76*61046927SAndroid Build Coastguard Worker 77*61046927SAndroid Build Coastguard Worker #ifdef __GNUC__ 78*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX_DEPRECATED __attribute__((deprecated)) 79*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX_DEPRECATED 80*61046927SAndroid Build Coastguard Worker #elif defined(_WIN32) 81*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX_DEPRECATED 82*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX_DEPRECATED __declspec(deprecated) 83*61046927SAndroid Build Coastguard Worker #else 84*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX_DEPRECATED 85*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX_DEPRECATED 86*61046927SAndroid Build Coastguard Worker #endif 87*61046927SAndroid Build Coastguard Worker 88*61046927SAndroid Build Coastguard Worker #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS 89*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_1_0_DEPRECATED CL_API_SUFFIX_COMMON 90*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_1_0_DEPRECATED CL_API_PREFIX_COMMON 91*61046927SAndroid Build Coastguard Worker #else 92*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_1_0_DEPRECATED CL_API_SUFFIX_COMMON CL_API_SUFFIX_DEPRECATED 93*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_1_0_DEPRECATED CL_API_PREFIX_COMMON CL_API_PREFIX_DEPRECATED 94*61046927SAndroid Build Coastguard Worker #endif 95*61046927SAndroid Build Coastguard Worker 96*61046927SAndroid Build Coastguard Worker #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS 97*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_1_1_DEPRECATED CL_API_SUFFIX_COMMON 98*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_1_1_DEPRECATED CL_API_PREFIX_COMMON 99*61046927SAndroid Build Coastguard Worker #else 100*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_1_1_DEPRECATED CL_API_SUFFIX_COMMON CL_API_SUFFIX_DEPRECATED 101*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_1_1_DEPRECATED CL_API_PREFIX_COMMON CL_API_PREFIX_DEPRECATED 102*61046927SAndroid Build Coastguard Worker #endif 103*61046927SAndroid Build Coastguard Worker 104*61046927SAndroid Build Coastguard Worker #ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS 105*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_1_2_DEPRECATED CL_API_SUFFIX_COMMON 106*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_1_2_DEPRECATED CL_API_PREFIX_COMMON 107*61046927SAndroid Build Coastguard Worker #else 108*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_1_2_DEPRECATED CL_API_SUFFIX_COMMON CL_API_SUFFIX_DEPRECATED 109*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_1_2_DEPRECATED CL_API_PREFIX_COMMON CL_API_PREFIX_DEPRECATED 110*61046927SAndroid Build Coastguard Worker #endif 111*61046927SAndroid Build Coastguard Worker 112*61046927SAndroid Build Coastguard Worker #ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS 113*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_2_0_DEPRECATED CL_API_SUFFIX_COMMON 114*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_2_0_DEPRECATED CL_API_PREFIX_COMMON 115*61046927SAndroid Build Coastguard Worker #else 116*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_2_0_DEPRECATED CL_API_SUFFIX_COMMON CL_API_SUFFIX_DEPRECATED 117*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_2_0_DEPRECATED CL_API_PREFIX_COMMON CL_API_PREFIX_DEPRECATED 118*61046927SAndroid Build Coastguard Worker #endif 119*61046927SAndroid Build Coastguard Worker 120*61046927SAndroid Build Coastguard Worker #ifdef CL_USE_DEPRECATED_OPENCL_2_1_APIS 121*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_2_1_DEPRECATED CL_API_SUFFIX_COMMON 122*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_2_1_DEPRECATED CL_API_PREFIX_COMMON 123*61046927SAndroid Build Coastguard Worker #else 124*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_2_1_DEPRECATED CL_API_SUFFIX_COMMON CL_API_SUFFIX_DEPRECATED 125*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_2_1_DEPRECATED CL_API_PREFIX_COMMON CL_API_PREFIX_DEPRECATED 126*61046927SAndroid Build Coastguard Worker #endif 127*61046927SAndroid Build Coastguard Worker 128*61046927SAndroid Build Coastguard Worker #ifdef CL_USE_DEPRECATED_OPENCL_2_2_APIS 129*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_2_2_DEPRECATED CL_API_SUFFIX_COMMON 130*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_2_2_DEPRECATED CL_API_PREFIX_COMMON 131*61046927SAndroid Build Coastguard Worker #else 132*61046927SAndroid Build Coastguard Worker #define CL_API_SUFFIX__VERSION_2_2_DEPRECATED CL_API_SUFFIX_COMMON CL_API_SUFFIX_DEPRECATED 133*61046927SAndroid Build Coastguard Worker #define CL_API_PREFIX__VERSION_2_2_DEPRECATED CL_API_PREFIX_COMMON CL_API_PREFIX_DEPRECATED 134*61046927SAndroid Build Coastguard Worker #endif 135*61046927SAndroid Build Coastguard Worker 136*61046927SAndroid Build Coastguard Worker #if (defined (_WIN32) && defined(_MSC_VER)) 137*61046927SAndroid Build Coastguard Worker 138*61046927SAndroid Build Coastguard Worker #if defined(__clang__) 139*61046927SAndroid Build Coastguard Worker #pragma clang diagnostic push 140*61046927SAndroid Build Coastguard Worker #pragma clang diagnostic ignored "-Wlanguage-extension-token" 141*61046927SAndroid Build Coastguard Worker #endif 142*61046927SAndroid Build Coastguard Worker 143*61046927SAndroid Build Coastguard Worker /* intptr_t is used in cl.h and provided by stddef.h in Visual C++, but not in clang */ 144*61046927SAndroid Build Coastguard Worker /* stdint.h was missing before Visual Studio 2010, include it for later versions and for clang */ 145*61046927SAndroid Build Coastguard Worker #if defined(__clang__) || _MSC_VER >= 1600 146*61046927SAndroid Build Coastguard Worker #include <stdint.h> 147*61046927SAndroid Build Coastguard Worker #endif 148*61046927SAndroid Build Coastguard Worker 149*61046927SAndroid Build Coastguard Worker /* scalar types */ 150*61046927SAndroid Build Coastguard Worker typedef signed __int8 cl_char; 151*61046927SAndroid Build Coastguard Worker typedef unsigned __int8 cl_uchar; 152*61046927SAndroid Build Coastguard Worker typedef signed __int16 cl_short; 153*61046927SAndroid Build Coastguard Worker typedef unsigned __int16 cl_ushort; 154*61046927SAndroid Build Coastguard Worker typedef signed __int32 cl_int; 155*61046927SAndroid Build Coastguard Worker typedef unsigned __int32 cl_uint; 156*61046927SAndroid Build Coastguard Worker typedef signed __int64 cl_long; 157*61046927SAndroid Build Coastguard Worker typedef unsigned __int64 cl_ulong; 158*61046927SAndroid Build Coastguard Worker 159*61046927SAndroid Build Coastguard Worker typedef unsigned __int16 cl_half; 160*61046927SAndroid Build Coastguard Worker typedef float cl_float; 161*61046927SAndroid Build Coastguard Worker typedef double cl_double; 162*61046927SAndroid Build Coastguard Worker 163*61046927SAndroid Build Coastguard Worker #if defined(__clang__) 164*61046927SAndroid Build Coastguard Worker #pragma clang diagnostic pop 165*61046927SAndroid Build Coastguard Worker #endif 166*61046927SAndroid Build Coastguard Worker 167*61046927SAndroid Build Coastguard Worker /* Macro names and corresponding values defined by OpenCL */ 168*61046927SAndroid Build Coastguard Worker #define CL_CHAR_BIT 8 169*61046927SAndroid Build Coastguard Worker #define CL_SCHAR_MAX 127 170*61046927SAndroid Build Coastguard Worker #define CL_SCHAR_MIN (-127-1) 171*61046927SAndroid Build Coastguard Worker #define CL_CHAR_MAX CL_SCHAR_MAX 172*61046927SAndroid Build Coastguard Worker #define CL_CHAR_MIN CL_SCHAR_MIN 173*61046927SAndroid Build Coastguard Worker #define CL_UCHAR_MAX 255 174*61046927SAndroid Build Coastguard Worker #define CL_SHRT_MAX 32767 175*61046927SAndroid Build Coastguard Worker #define CL_SHRT_MIN (-32767-1) 176*61046927SAndroid Build Coastguard Worker #define CL_USHRT_MAX 65535 177*61046927SAndroid Build Coastguard Worker #define CL_INT_MAX 2147483647 178*61046927SAndroid Build Coastguard Worker #define CL_INT_MIN (-2147483647-1) 179*61046927SAndroid Build Coastguard Worker #define CL_UINT_MAX 0xffffffffU 180*61046927SAndroid Build Coastguard Worker #define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) 181*61046927SAndroid Build Coastguard Worker #define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) 182*61046927SAndroid Build Coastguard Worker #define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) 183*61046927SAndroid Build Coastguard Worker 184*61046927SAndroid Build Coastguard Worker #define CL_FLT_DIG 6 185*61046927SAndroid Build Coastguard Worker #define CL_FLT_MANT_DIG 24 186*61046927SAndroid Build Coastguard Worker #define CL_FLT_MAX_10_EXP +38 187*61046927SAndroid Build Coastguard Worker #define CL_FLT_MAX_EXP +128 188*61046927SAndroid Build Coastguard Worker #define CL_FLT_MIN_10_EXP -37 189*61046927SAndroid Build Coastguard Worker #define CL_FLT_MIN_EXP -125 190*61046927SAndroid Build Coastguard Worker #define CL_FLT_RADIX 2 191*61046927SAndroid Build Coastguard Worker #define CL_FLT_MAX 340282346638528859811704183484516925440.0f 192*61046927SAndroid Build Coastguard Worker #define CL_FLT_MIN 1.175494350822287507969e-38f 193*61046927SAndroid Build Coastguard Worker #define CL_FLT_EPSILON 1.1920928955078125e-7f 194*61046927SAndroid Build Coastguard Worker 195*61046927SAndroid Build Coastguard Worker #define CL_HALF_DIG 3 196*61046927SAndroid Build Coastguard Worker #define CL_HALF_MANT_DIG 11 197*61046927SAndroid Build Coastguard Worker #define CL_HALF_MAX_10_EXP +4 198*61046927SAndroid Build Coastguard Worker #define CL_HALF_MAX_EXP +16 199*61046927SAndroid Build Coastguard Worker #define CL_HALF_MIN_10_EXP -4 200*61046927SAndroid Build Coastguard Worker #define CL_HALF_MIN_EXP -13 201*61046927SAndroid Build Coastguard Worker #define CL_HALF_RADIX 2 202*61046927SAndroid Build Coastguard Worker #define CL_HALF_MAX 65504.0f 203*61046927SAndroid Build Coastguard Worker #define CL_HALF_MIN 6.103515625e-05f 204*61046927SAndroid Build Coastguard Worker #define CL_HALF_EPSILON 9.765625e-04f 205*61046927SAndroid Build Coastguard Worker 206*61046927SAndroid Build Coastguard Worker #define CL_DBL_DIG 15 207*61046927SAndroid Build Coastguard Worker #define CL_DBL_MANT_DIG 53 208*61046927SAndroid Build Coastguard Worker #define CL_DBL_MAX_10_EXP +308 209*61046927SAndroid Build Coastguard Worker #define CL_DBL_MAX_EXP +1024 210*61046927SAndroid Build Coastguard Worker #define CL_DBL_MIN_10_EXP -307 211*61046927SAndroid Build Coastguard Worker #define CL_DBL_MIN_EXP -1021 212*61046927SAndroid Build Coastguard Worker #define CL_DBL_RADIX 2 213*61046927SAndroid Build Coastguard Worker #define CL_DBL_MAX 1.7976931348623158e+308 214*61046927SAndroid Build Coastguard Worker #define CL_DBL_MIN 2.225073858507201383090e-308 215*61046927SAndroid Build Coastguard Worker #define CL_DBL_EPSILON 2.220446049250313080847e-16 216*61046927SAndroid Build Coastguard Worker 217*61046927SAndroid Build Coastguard Worker #define CL_M_E 2.7182818284590452354 218*61046927SAndroid Build Coastguard Worker #define CL_M_LOG2E 1.4426950408889634074 219*61046927SAndroid Build Coastguard Worker #define CL_M_LOG10E 0.43429448190325182765 220*61046927SAndroid Build Coastguard Worker #define CL_M_LN2 0.69314718055994530942 221*61046927SAndroid Build Coastguard Worker #define CL_M_LN10 2.30258509299404568402 222*61046927SAndroid Build Coastguard Worker #define CL_M_PI 3.14159265358979323846 223*61046927SAndroid Build Coastguard Worker #define CL_M_PI_2 1.57079632679489661923 224*61046927SAndroid Build Coastguard Worker #define CL_M_PI_4 0.78539816339744830962 225*61046927SAndroid Build Coastguard Worker #define CL_M_1_PI 0.31830988618379067154 226*61046927SAndroid Build Coastguard Worker #define CL_M_2_PI 0.63661977236758134308 227*61046927SAndroid Build Coastguard Worker #define CL_M_2_SQRTPI 1.12837916709551257390 228*61046927SAndroid Build Coastguard Worker #define CL_M_SQRT2 1.41421356237309504880 229*61046927SAndroid Build Coastguard Worker #define CL_M_SQRT1_2 0.70710678118654752440 230*61046927SAndroid Build Coastguard Worker 231*61046927SAndroid Build Coastguard Worker #define CL_M_E_F 2.718281828f 232*61046927SAndroid Build Coastguard Worker #define CL_M_LOG2E_F 1.442695041f 233*61046927SAndroid Build Coastguard Worker #define CL_M_LOG10E_F 0.434294482f 234*61046927SAndroid Build Coastguard Worker #define CL_M_LN2_F 0.693147181f 235*61046927SAndroid Build Coastguard Worker #define CL_M_LN10_F 2.302585093f 236*61046927SAndroid Build Coastguard Worker #define CL_M_PI_F 3.141592654f 237*61046927SAndroid Build Coastguard Worker #define CL_M_PI_2_F 1.570796327f 238*61046927SAndroid Build Coastguard Worker #define CL_M_PI_4_F 0.785398163f 239*61046927SAndroid Build Coastguard Worker #define CL_M_1_PI_F 0.318309886f 240*61046927SAndroid Build Coastguard Worker #define CL_M_2_PI_F 0.636619772f 241*61046927SAndroid Build Coastguard Worker #define CL_M_2_SQRTPI_F 1.128379167f 242*61046927SAndroid Build Coastguard Worker #define CL_M_SQRT2_F 1.414213562f 243*61046927SAndroid Build Coastguard Worker #define CL_M_SQRT1_2_F 0.707106781f 244*61046927SAndroid Build Coastguard Worker 245*61046927SAndroid Build Coastguard Worker #define CL_NAN (CL_INFINITY - CL_INFINITY) 246*61046927SAndroid Build Coastguard Worker #define CL_HUGE_VALF ((cl_float) 1e50) 247*61046927SAndroid Build Coastguard Worker #define CL_HUGE_VAL ((cl_double) 1e500) 248*61046927SAndroid Build Coastguard Worker #define CL_MAXFLOAT CL_FLT_MAX 249*61046927SAndroid Build Coastguard Worker #define CL_INFINITY CL_HUGE_VALF 250*61046927SAndroid Build Coastguard Worker 251*61046927SAndroid Build Coastguard Worker #else 252*61046927SAndroid Build Coastguard Worker 253*61046927SAndroid Build Coastguard Worker #include <stdint.h> 254*61046927SAndroid Build Coastguard Worker 255*61046927SAndroid Build Coastguard Worker /* scalar types */ 256*61046927SAndroid Build Coastguard Worker typedef int8_t cl_char; 257*61046927SAndroid Build Coastguard Worker typedef uint8_t cl_uchar; 258*61046927SAndroid Build Coastguard Worker typedef int16_t cl_short; 259*61046927SAndroid Build Coastguard Worker typedef uint16_t cl_ushort; 260*61046927SAndroid Build Coastguard Worker typedef int32_t cl_int; 261*61046927SAndroid Build Coastguard Worker typedef uint32_t cl_uint; 262*61046927SAndroid Build Coastguard Worker typedef int64_t cl_long; 263*61046927SAndroid Build Coastguard Worker typedef uint64_t cl_ulong; 264*61046927SAndroid Build Coastguard Worker 265*61046927SAndroid Build Coastguard Worker typedef uint16_t cl_half; 266*61046927SAndroid Build Coastguard Worker typedef float cl_float; 267*61046927SAndroid Build Coastguard Worker typedef double cl_double; 268*61046927SAndroid Build Coastguard Worker 269*61046927SAndroid Build Coastguard Worker /* Macro names and corresponding values defined by OpenCL */ 270*61046927SAndroid Build Coastguard Worker #define CL_CHAR_BIT 8 271*61046927SAndroid Build Coastguard Worker #define CL_SCHAR_MAX 127 272*61046927SAndroid Build Coastguard Worker #define CL_SCHAR_MIN (-127-1) 273*61046927SAndroid Build Coastguard Worker #define CL_CHAR_MAX CL_SCHAR_MAX 274*61046927SAndroid Build Coastguard Worker #define CL_CHAR_MIN CL_SCHAR_MIN 275*61046927SAndroid Build Coastguard Worker #define CL_UCHAR_MAX 255 276*61046927SAndroid Build Coastguard Worker #define CL_SHRT_MAX 32767 277*61046927SAndroid Build Coastguard Worker #define CL_SHRT_MIN (-32767-1) 278*61046927SAndroid Build Coastguard Worker #define CL_USHRT_MAX 65535 279*61046927SAndroid Build Coastguard Worker #define CL_INT_MAX 2147483647 280*61046927SAndroid Build Coastguard Worker #define CL_INT_MIN (-2147483647-1) 281*61046927SAndroid Build Coastguard Worker #define CL_UINT_MAX 0xffffffffU 282*61046927SAndroid Build Coastguard Worker #define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) 283*61046927SAndroid Build Coastguard Worker #define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) 284*61046927SAndroid Build Coastguard Worker #define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) 285*61046927SAndroid Build Coastguard Worker 286*61046927SAndroid Build Coastguard Worker #define CL_FLT_DIG 6 287*61046927SAndroid Build Coastguard Worker #define CL_FLT_MANT_DIG 24 288*61046927SAndroid Build Coastguard Worker #define CL_FLT_MAX_10_EXP +38 289*61046927SAndroid Build Coastguard Worker #define CL_FLT_MAX_EXP +128 290*61046927SAndroid Build Coastguard Worker #define CL_FLT_MIN_10_EXP -37 291*61046927SAndroid Build Coastguard Worker #define CL_FLT_MIN_EXP -125 292*61046927SAndroid Build Coastguard Worker #define CL_FLT_RADIX 2 293*61046927SAndroid Build Coastguard Worker #define CL_FLT_MAX 340282346638528859811704183484516925440.0f 294*61046927SAndroid Build Coastguard Worker #define CL_FLT_MIN 1.175494350822287507969e-38f 295*61046927SAndroid Build Coastguard Worker #define CL_FLT_EPSILON 1.1920928955078125e-7f 296*61046927SAndroid Build Coastguard Worker 297*61046927SAndroid Build Coastguard Worker #define CL_HALF_DIG 3 298*61046927SAndroid Build Coastguard Worker #define CL_HALF_MANT_DIG 11 299*61046927SAndroid Build Coastguard Worker #define CL_HALF_MAX_10_EXP +4 300*61046927SAndroid Build Coastguard Worker #define CL_HALF_MAX_EXP +16 301*61046927SAndroid Build Coastguard Worker #define CL_HALF_MIN_10_EXP -4 302*61046927SAndroid Build Coastguard Worker #define CL_HALF_MIN_EXP -13 303*61046927SAndroid Build Coastguard Worker #define CL_HALF_RADIX 2 304*61046927SAndroid Build Coastguard Worker #define CL_HALF_MAX 65504.0f 305*61046927SAndroid Build Coastguard Worker #define CL_HALF_MIN 6.103515625e-05f 306*61046927SAndroid Build Coastguard Worker #define CL_HALF_EPSILON 9.765625e-04f 307*61046927SAndroid Build Coastguard Worker 308*61046927SAndroid Build Coastguard Worker #define CL_DBL_DIG 15 309*61046927SAndroid Build Coastguard Worker #define CL_DBL_MANT_DIG 53 310*61046927SAndroid Build Coastguard Worker #define CL_DBL_MAX_10_EXP +308 311*61046927SAndroid Build Coastguard Worker #define CL_DBL_MAX_EXP +1024 312*61046927SAndroid Build Coastguard Worker #define CL_DBL_MIN_10_EXP -307 313*61046927SAndroid Build Coastguard Worker #define CL_DBL_MIN_EXP -1021 314*61046927SAndroid Build Coastguard Worker #define CL_DBL_RADIX 2 315*61046927SAndroid Build Coastguard Worker #define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 316*61046927SAndroid Build Coastguard Worker #define CL_DBL_MIN 2.225073858507201383090e-308 317*61046927SAndroid Build Coastguard Worker #define CL_DBL_EPSILON 2.220446049250313080847e-16 318*61046927SAndroid Build Coastguard Worker 319*61046927SAndroid Build Coastguard Worker #define CL_M_E 2.7182818284590452354 320*61046927SAndroid Build Coastguard Worker #define CL_M_LOG2E 1.4426950408889634074 321*61046927SAndroid Build Coastguard Worker #define CL_M_LOG10E 0.43429448190325182765 322*61046927SAndroid Build Coastguard Worker #define CL_M_LN2 0.69314718055994530942 323*61046927SAndroid Build Coastguard Worker #define CL_M_LN10 2.30258509299404568402 324*61046927SAndroid Build Coastguard Worker #define CL_M_PI 3.14159265358979323846 325*61046927SAndroid Build Coastguard Worker #define CL_M_PI_2 1.57079632679489661923 326*61046927SAndroid Build Coastguard Worker #define CL_M_PI_4 0.78539816339744830962 327*61046927SAndroid Build Coastguard Worker #define CL_M_1_PI 0.31830988618379067154 328*61046927SAndroid Build Coastguard Worker #define CL_M_2_PI 0.63661977236758134308 329*61046927SAndroid Build Coastguard Worker #define CL_M_2_SQRTPI 1.12837916709551257390 330*61046927SAndroid Build Coastguard Worker #define CL_M_SQRT2 1.41421356237309504880 331*61046927SAndroid Build Coastguard Worker #define CL_M_SQRT1_2 0.70710678118654752440 332*61046927SAndroid Build Coastguard Worker 333*61046927SAndroid Build Coastguard Worker #define CL_M_E_F 2.718281828f 334*61046927SAndroid Build Coastguard Worker #define CL_M_LOG2E_F 1.442695041f 335*61046927SAndroid Build Coastguard Worker #define CL_M_LOG10E_F 0.434294482f 336*61046927SAndroid Build Coastguard Worker #define CL_M_LN2_F 0.693147181f 337*61046927SAndroid Build Coastguard Worker #define CL_M_LN10_F 2.302585093f 338*61046927SAndroid Build Coastguard Worker #define CL_M_PI_F 3.141592654f 339*61046927SAndroid Build Coastguard Worker #define CL_M_PI_2_F 1.570796327f 340*61046927SAndroid Build Coastguard Worker #define CL_M_PI_4_F 0.785398163f 341*61046927SAndroid Build Coastguard Worker #define CL_M_1_PI_F 0.318309886f 342*61046927SAndroid Build Coastguard Worker #define CL_M_2_PI_F 0.636619772f 343*61046927SAndroid Build Coastguard Worker #define CL_M_2_SQRTPI_F 1.128379167f 344*61046927SAndroid Build Coastguard Worker #define CL_M_SQRT2_F 1.414213562f 345*61046927SAndroid Build Coastguard Worker #define CL_M_SQRT1_2_F 0.707106781f 346*61046927SAndroid Build Coastguard Worker 347*61046927SAndroid Build Coastguard Worker #if defined( __GNUC__ ) 348*61046927SAndroid Build Coastguard Worker #define CL_HUGE_VALF __builtin_huge_valf() 349*61046927SAndroid Build Coastguard Worker #define CL_HUGE_VAL __builtin_huge_val() 350*61046927SAndroid Build Coastguard Worker #define CL_NAN __builtin_nanf( "" ) 351*61046927SAndroid Build Coastguard Worker #else 352*61046927SAndroid Build Coastguard Worker #define CL_HUGE_VALF ((cl_float) 1e50) 353*61046927SAndroid Build Coastguard Worker #define CL_HUGE_VAL ((cl_double) 1e500) 354*61046927SAndroid Build Coastguard Worker float nanf( const char * ); 355*61046927SAndroid Build Coastguard Worker #define CL_NAN nanf( "" ) 356*61046927SAndroid Build Coastguard Worker #endif 357*61046927SAndroid Build Coastguard Worker #define CL_MAXFLOAT CL_FLT_MAX 358*61046927SAndroid Build Coastguard Worker #define CL_INFINITY CL_HUGE_VALF 359*61046927SAndroid Build Coastguard Worker 360*61046927SAndroid Build Coastguard Worker #endif 361*61046927SAndroid Build Coastguard Worker 362*61046927SAndroid Build Coastguard Worker #include <stddef.h> 363*61046927SAndroid Build Coastguard Worker 364*61046927SAndroid Build Coastguard Worker /* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on whether we are using GL or GLES here. */ 365*61046927SAndroid Build Coastguard Worker typedef unsigned int cl_GLuint; 366*61046927SAndroid Build Coastguard Worker typedef int cl_GLint; 367*61046927SAndroid Build Coastguard Worker typedef unsigned int cl_GLenum; 368*61046927SAndroid Build Coastguard Worker 369*61046927SAndroid Build Coastguard Worker /* 370*61046927SAndroid Build Coastguard Worker * Vector types 371*61046927SAndroid Build Coastguard Worker * 372*61046927SAndroid Build Coastguard Worker * Note: OpenCL requires that all types be naturally aligned. 373*61046927SAndroid Build Coastguard Worker * This means that vector types must be naturally aligned. 374*61046927SAndroid Build Coastguard Worker * For example, a vector of four floats must be aligned to 375*61046927SAndroid Build Coastguard Worker * a 16 byte boundary (calculated as 4 * the natural 4-byte 376*61046927SAndroid Build Coastguard Worker * alignment of the float). The alignment qualifiers here 377*61046927SAndroid Build Coastguard Worker * will only function properly if your compiler supports them 378*61046927SAndroid Build Coastguard Worker * and if you don't actively work to defeat them. For example, 379*61046927SAndroid Build Coastguard Worker * in order for a cl_float4 to be 16 byte aligned in a struct, 380*61046927SAndroid Build Coastguard Worker * the start of the struct must itself be 16-byte aligned. 381*61046927SAndroid Build Coastguard Worker * 382*61046927SAndroid Build Coastguard Worker * Maintaining proper alignment is the user's responsibility. 383*61046927SAndroid Build Coastguard Worker */ 384*61046927SAndroid Build Coastguard Worker 385*61046927SAndroid Build Coastguard Worker /* Define basic vector types */ 386*61046927SAndroid Build Coastguard Worker #if defined( __VEC__ ) 387*61046927SAndroid Build Coastguard Worker #if !defined(__clang__) 388*61046927SAndroid Build Coastguard Worker #include <altivec.h> /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ 389*61046927SAndroid Build Coastguard Worker #endif 390*61046927SAndroid Build Coastguard Worker typedef __vector unsigned char __cl_uchar16; 391*61046927SAndroid Build Coastguard Worker typedef __vector signed char __cl_char16; 392*61046927SAndroid Build Coastguard Worker typedef __vector unsigned short __cl_ushort8; 393*61046927SAndroid Build Coastguard Worker typedef __vector signed short __cl_short8; 394*61046927SAndroid Build Coastguard Worker typedef __vector unsigned int __cl_uint4; 395*61046927SAndroid Build Coastguard Worker typedef __vector signed int __cl_int4; 396*61046927SAndroid Build Coastguard Worker typedef __vector float __cl_float4; 397*61046927SAndroid Build Coastguard Worker #define __CL_UCHAR16__ 1 398*61046927SAndroid Build Coastguard Worker #define __CL_CHAR16__ 1 399*61046927SAndroid Build Coastguard Worker #define __CL_USHORT8__ 1 400*61046927SAndroid Build Coastguard Worker #define __CL_SHORT8__ 1 401*61046927SAndroid Build Coastguard Worker #define __CL_UINT4__ 1 402*61046927SAndroid Build Coastguard Worker #define __CL_INT4__ 1 403*61046927SAndroid Build Coastguard Worker #define __CL_FLOAT4__ 1 404*61046927SAndroid Build Coastguard Worker #endif 405*61046927SAndroid Build Coastguard Worker 406*61046927SAndroid Build Coastguard Worker #if defined( __SSE__ ) 407*61046927SAndroid Build Coastguard Worker #if defined( __MINGW64__ ) 408*61046927SAndroid Build Coastguard Worker #include <intrin.h> 409*61046927SAndroid Build Coastguard Worker #else 410*61046927SAndroid Build Coastguard Worker #include <xmmintrin.h> 411*61046927SAndroid Build Coastguard Worker #endif 412*61046927SAndroid Build Coastguard Worker #if defined( __GNUC__ ) 413*61046927SAndroid Build Coastguard Worker typedef float __cl_float4 __attribute__((vector_size(16))); 414*61046927SAndroid Build Coastguard Worker #else 415*61046927SAndroid Build Coastguard Worker typedef __m128 __cl_float4; 416*61046927SAndroid Build Coastguard Worker #endif 417*61046927SAndroid Build Coastguard Worker #define __CL_FLOAT4__ 1 418*61046927SAndroid Build Coastguard Worker #endif 419*61046927SAndroid Build Coastguard Worker 420*61046927SAndroid Build Coastguard Worker #if defined( __SSE2__ ) 421*61046927SAndroid Build Coastguard Worker #if defined( __MINGW64__ ) 422*61046927SAndroid Build Coastguard Worker #include <intrin.h> 423*61046927SAndroid Build Coastguard Worker #else 424*61046927SAndroid Build Coastguard Worker #include <emmintrin.h> 425*61046927SAndroid Build Coastguard Worker #endif 426*61046927SAndroid Build Coastguard Worker #if defined( __GNUC__ ) 427*61046927SAndroid Build Coastguard Worker typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); 428*61046927SAndroid Build Coastguard Worker typedef cl_char __cl_char16 __attribute__((vector_size(16))); 429*61046927SAndroid Build Coastguard Worker typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); 430*61046927SAndroid Build Coastguard Worker typedef cl_short __cl_short8 __attribute__((vector_size(16))); 431*61046927SAndroid Build Coastguard Worker typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); 432*61046927SAndroid Build Coastguard Worker typedef cl_int __cl_int4 __attribute__((vector_size(16))); 433*61046927SAndroid Build Coastguard Worker typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); 434*61046927SAndroid Build Coastguard Worker typedef cl_long __cl_long2 __attribute__((vector_size(16))); 435*61046927SAndroid Build Coastguard Worker typedef cl_double __cl_double2 __attribute__((vector_size(16))); 436*61046927SAndroid Build Coastguard Worker #else 437*61046927SAndroid Build Coastguard Worker typedef __m128i __cl_uchar16; 438*61046927SAndroid Build Coastguard Worker typedef __m128i __cl_char16; 439*61046927SAndroid Build Coastguard Worker typedef __m128i __cl_ushort8; 440*61046927SAndroid Build Coastguard Worker typedef __m128i __cl_short8; 441*61046927SAndroid Build Coastguard Worker typedef __m128i __cl_uint4; 442*61046927SAndroid Build Coastguard Worker typedef __m128i __cl_int4; 443*61046927SAndroid Build Coastguard Worker typedef __m128i __cl_ulong2; 444*61046927SAndroid Build Coastguard Worker typedef __m128i __cl_long2; 445*61046927SAndroid Build Coastguard Worker typedef __m128d __cl_double2; 446*61046927SAndroid Build Coastguard Worker #endif 447*61046927SAndroid Build Coastguard Worker #define __CL_UCHAR16__ 1 448*61046927SAndroid Build Coastguard Worker #define __CL_CHAR16__ 1 449*61046927SAndroid Build Coastguard Worker #define __CL_USHORT8__ 1 450*61046927SAndroid Build Coastguard Worker #define __CL_SHORT8__ 1 451*61046927SAndroid Build Coastguard Worker #define __CL_INT4__ 1 452*61046927SAndroid Build Coastguard Worker #define __CL_UINT4__ 1 453*61046927SAndroid Build Coastguard Worker #define __CL_ULONG2__ 1 454*61046927SAndroid Build Coastguard Worker #define __CL_LONG2__ 1 455*61046927SAndroid Build Coastguard Worker #define __CL_DOUBLE2__ 1 456*61046927SAndroid Build Coastguard Worker #endif 457*61046927SAndroid Build Coastguard Worker 458*61046927SAndroid Build Coastguard Worker #if defined( __MMX__ ) 459*61046927SAndroid Build Coastguard Worker #include <mmintrin.h> 460*61046927SAndroid Build Coastguard Worker #if defined( __GNUC__ ) 461*61046927SAndroid Build Coastguard Worker typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); 462*61046927SAndroid Build Coastguard Worker typedef cl_char __cl_char8 __attribute__((vector_size(8))); 463*61046927SAndroid Build Coastguard Worker typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); 464*61046927SAndroid Build Coastguard Worker typedef cl_short __cl_short4 __attribute__((vector_size(8))); 465*61046927SAndroid Build Coastguard Worker typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); 466*61046927SAndroid Build Coastguard Worker typedef cl_int __cl_int2 __attribute__((vector_size(8))); 467*61046927SAndroid Build Coastguard Worker typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); 468*61046927SAndroid Build Coastguard Worker typedef cl_long __cl_long1 __attribute__((vector_size(8))); 469*61046927SAndroid Build Coastguard Worker typedef cl_float __cl_float2 __attribute__((vector_size(8))); 470*61046927SAndroid Build Coastguard Worker #else 471*61046927SAndroid Build Coastguard Worker typedef __m64 __cl_uchar8; 472*61046927SAndroid Build Coastguard Worker typedef __m64 __cl_char8; 473*61046927SAndroid Build Coastguard Worker typedef __m64 __cl_ushort4; 474*61046927SAndroid Build Coastguard Worker typedef __m64 __cl_short4; 475*61046927SAndroid Build Coastguard Worker typedef __m64 __cl_uint2; 476*61046927SAndroid Build Coastguard Worker typedef __m64 __cl_int2; 477*61046927SAndroid Build Coastguard Worker typedef __m64 __cl_ulong1; 478*61046927SAndroid Build Coastguard Worker typedef __m64 __cl_long1; 479*61046927SAndroid Build Coastguard Worker typedef __m64 __cl_float2; 480*61046927SAndroid Build Coastguard Worker #endif 481*61046927SAndroid Build Coastguard Worker #define __CL_UCHAR8__ 1 482*61046927SAndroid Build Coastguard Worker #define __CL_CHAR8__ 1 483*61046927SAndroid Build Coastguard Worker #define __CL_USHORT4__ 1 484*61046927SAndroid Build Coastguard Worker #define __CL_SHORT4__ 1 485*61046927SAndroid Build Coastguard Worker #define __CL_INT2__ 1 486*61046927SAndroid Build Coastguard Worker #define __CL_UINT2__ 1 487*61046927SAndroid Build Coastguard Worker #define __CL_ULONG1__ 1 488*61046927SAndroid Build Coastguard Worker #define __CL_LONG1__ 1 489*61046927SAndroid Build Coastguard Worker #define __CL_FLOAT2__ 1 490*61046927SAndroid Build Coastguard Worker #endif 491*61046927SAndroid Build Coastguard Worker 492*61046927SAndroid Build Coastguard Worker #if defined( __AVX__ ) 493*61046927SAndroid Build Coastguard Worker #if defined( __MINGW64__ ) 494*61046927SAndroid Build Coastguard Worker #include <intrin.h> 495*61046927SAndroid Build Coastguard Worker #else 496*61046927SAndroid Build Coastguard Worker #include <immintrin.h> 497*61046927SAndroid Build Coastguard Worker #endif 498*61046927SAndroid Build Coastguard Worker #if defined( __GNUC__ ) 499*61046927SAndroid Build Coastguard Worker typedef cl_float __cl_float8 __attribute__((vector_size(32))); 500*61046927SAndroid Build Coastguard Worker typedef cl_double __cl_double4 __attribute__((vector_size(32))); 501*61046927SAndroid Build Coastguard Worker #else 502*61046927SAndroid Build Coastguard Worker typedef __m256 __cl_float8; 503*61046927SAndroid Build Coastguard Worker typedef __m256d __cl_double4; 504*61046927SAndroid Build Coastguard Worker #endif 505*61046927SAndroid Build Coastguard Worker #define __CL_FLOAT8__ 1 506*61046927SAndroid Build Coastguard Worker #define __CL_DOUBLE4__ 1 507*61046927SAndroid Build Coastguard Worker #endif 508*61046927SAndroid Build Coastguard Worker 509*61046927SAndroid Build Coastguard Worker /* Define capabilities for anonymous struct members. */ 510*61046927SAndroid Build Coastguard Worker #if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L 511*61046927SAndroid Build Coastguard Worker #define __CL_HAS_ANON_STRUCT__ 1 512*61046927SAndroid Build Coastguard Worker #define __CL_ANON_STRUCT__ 513*61046927SAndroid Build Coastguard Worker #elif defined(_WIN32) && defined(_MSC_VER) && !defined(__STDC__) 514*61046927SAndroid Build Coastguard Worker #define __CL_HAS_ANON_STRUCT__ 1 515*61046927SAndroid Build Coastguard Worker #define __CL_ANON_STRUCT__ 516*61046927SAndroid Build Coastguard Worker #elif defined(__GNUC__) && ! defined(__STRICT_ANSI__) 517*61046927SAndroid Build Coastguard Worker #define __CL_HAS_ANON_STRUCT__ 1 518*61046927SAndroid Build Coastguard Worker #define __CL_ANON_STRUCT__ __extension__ 519*61046927SAndroid Build Coastguard Worker #elif defined(__clang__) 520*61046927SAndroid Build Coastguard Worker #define __CL_HAS_ANON_STRUCT__ 1 521*61046927SAndroid Build Coastguard Worker #define __CL_ANON_STRUCT__ __extension__ 522*61046927SAndroid Build Coastguard Worker #else 523*61046927SAndroid Build Coastguard Worker #define __CL_HAS_ANON_STRUCT__ 0 524*61046927SAndroid Build Coastguard Worker #define __CL_ANON_STRUCT__ 525*61046927SAndroid Build Coastguard Worker #endif 526*61046927SAndroid Build Coastguard Worker 527*61046927SAndroid Build Coastguard Worker #if defined(_WIN32) && defined(_MSC_VER) && __CL_HAS_ANON_STRUCT__ 528*61046927SAndroid Build Coastguard Worker /* Disable warning C4201: nonstandard extension used : nameless struct/union */ 529*61046927SAndroid Build Coastguard Worker #pragma warning( push ) 530*61046927SAndroid Build Coastguard Worker #pragma warning( disable : 4201 ) 531*61046927SAndroid Build Coastguard Worker #endif 532*61046927SAndroid Build Coastguard Worker 533*61046927SAndroid Build Coastguard Worker /* Define alignment keys */ 534*61046927SAndroid Build Coastguard Worker #if defined( __GNUC__ ) || defined(__INTEGRITY) 535*61046927SAndroid Build Coastguard Worker #define CL_ALIGNED(_x) __attribute__ ((aligned(_x))) 536*61046927SAndroid Build Coastguard Worker #elif defined( _WIN32) && (_MSC_VER) 537*61046927SAndroid Build Coastguard Worker /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */ 538*61046927SAndroid Build Coastguard Worker /* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ 539*61046927SAndroid Build Coastguard Worker /* #include <crtdefs.h> */ 540*61046927SAndroid Build Coastguard Worker /* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ 541*61046927SAndroid Build Coastguard Worker #define CL_ALIGNED(_x) 542*61046927SAndroid Build Coastguard Worker #else 543*61046927SAndroid Build Coastguard Worker #warning Need to implement some method to align data here 544*61046927SAndroid Build Coastguard Worker #define CL_ALIGNED(_x) 545*61046927SAndroid Build Coastguard Worker #endif 546*61046927SAndroid Build Coastguard Worker 547*61046927SAndroid Build Coastguard Worker /* Indicate whether .xyzw, .s0123 and .hi.lo are supported */ 548*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 549*61046927SAndroid Build Coastguard Worker /* .xyzw and .s0123...{f|F} are supported */ 550*61046927SAndroid Build Coastguard Worker #define CL_HAS_NAMED_VECTOR_FIELDS 1 551*61046927SAndroid Build Coastguard Worker /* .hi and .lo are supported */ 552*61046927SAndroid Build Coastguard Worker #define CL_HAS_HI_LO_VECTOR_FIELDS 1 553*61046927SAndroid Build Coastguard Worker #endif 554*61046927SAndroid Build Coastguard Worker 555*61046927SAndroid Build Coastguard Worker /* Define cl_vector types */ 556*61046927SAndroid Build Coastguard Worker 557*61046927SAndroid Build Coastguard Worker /* ---- cl_charn ---- */ 558*61046927SAndroid Build Coastguard Worker typedef union 559*61046927SAndroid Build Coastguard Worker { 560*61046927SAndroid Build Coastguard Worker cl_char CL_ALIGNED(2) s[2]; 561*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 562*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char x, y; }; 563*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char s0, s1; }; 564*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char lo, hi; }; 565*61046927SAndroid Build Coastguard Worker #endif 566*61046927SAndroid Build Coastguard Worker #if defined( __CL_CHAR2__) 567*61046927SAndroid Build Coastguard Worker __cl_char2 v2; 568*61046927SAndroid Build Coastguard Worker #endif 569*61046927SAndroid Build Coastguard Worker }cl_char2; 570*61046927SAndroid Build Coastguard Worker 571*61046927SAndroid Build Coastguard Worker typedef union 572*61046927SAndroid Build Coastguard Worker { 573*61046927SAndroid Build Coastguard Worker cl_char CL_ALIGNED(4) s[4]; 574*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 575*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; 576*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3; }; 577*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char2 lo, hi; }; 578*61046927SAndroid Build Coastguard Worker #endif 579*61046927SAndroid Build Coastguard Worker #if defined( __CL_CHAR2__) 580*61046927SAndroid Build Coastguard Worker __cl_char2 v2[2]; 581*61046927SAndroid Build Coastguard Worker #endif 582*61046927SAndroid Build Coastguard Worker #if defined( __CL_CHAR4__) 583*61046927SAndroid Build Coastguard Worker __cl_char4 v4; 584*61046927SAndroid Build Coastguard Worker #endif 585*61046927SAndroid Build Coastguard Worker }cl_char4; 586*61046927SAndroid Build Coastguard Worker 587*61046927SAndroid Build Coastguard Worker /* cl_char3 is identical in size, alignment and behavior to cl_char4. See section 6.1.5. */ 588*61046927SAndroid Build Coastguard Worker typedef cl_char4 cl_char3; 589*61046927SAndroid Build Coastguard Worker 590*61046927SAndroid Build Coastguard Worker typedef union 591*61046927SAndroid Build Coastguard Worker { 592*61046927SAndroid Build Coastguard Worker cl_char CL_ALIGNED(8) s[8]; 593*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 594*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; 595*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7; }; 596*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char4 lo, hi; }; 597*61046927SAndroid Build Coastguard Worker #endif 598*61046927SAndroid Build Coastguard Worker #if defined( __CL_CHAR2__) 599*61046927SAndroid Build Coastguard Worker __cl_char2 v2[4]; 600*61046927SAndroid Build Coastguard Worker #endif 601*61046927SAndroid Build Coastguard Worker #if defined( __CL_CHAR4__) 602*61046927SAndroid Build Coastguard Worker __cl_char4 v4[2]; 603*61046927SAndroid Build Coastguard Worker #endif 604*61046927SAndroid Build Coastguard Worker #if defined( __CL_CHAR8__ ) 605*61046927SAndroid Build Coastguard Worker __cl_char8 v8; 606*61046927SAndroid Build Coastguard Worker #endif 607*61046927SAndroid Build Coastguard Worker }cl_char8; 608*61046927SAndroid Build Coastguard Worker 609*61046927SAndroid Build Coastguard Worker typedef union 610*61046927SAndroid Build Coastguard Worker { 611*61046927SAndroid Build Coastguard Worker cl_char CL_ALIGNED(16) s[16]; 612*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 613*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 614*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 615*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_char8 lo, hi; }; 616*61046927SAndroid Build Coastguard Worker #endif 617*61046927SAndroid Build Coastguard Worker #if defined( __CL_CHAR2__) 618*61046927SAndroid Build Coastguard Worker __cl_char2 v2[8]; 619*61046927SAndroid Build Coastguard Worker #endif 620*61046927SAndroid Build Coastguard Worker #if defined( __CL_CHAR4__) 621*61046927SAndroid Build Coastguard Worker __cl_char4 v4[4]; 622*61046927SAndroid Build Coastguard Worker #endif 623*61046927SAndroid Build Coastguard Worker #if defined( __CL_CHAR8__ ) 624*61046927SAndroid Build Coastguard Worker __cl_char8 v8[2]; 625*61046927SAndroid Build Coastguard Worker #endif 626*61046927SAndroid Build Coastguard Worker #if defined( __CL_CHAR16__ ) 627*61046927SAndroid Build Coastguard Worker __cl_char16 v16; 628*61046927SAndroid Build Coastguard Worker #endif 629*61046927SAndroid Build Coastguard Worker }cl_char16; 630*61046927SAndroid Build Coastguard Worker 631*61046927SAndroid Build Coastguard Worker 632*61046927SAndroid Build Coastguard Worker /* ---- cl_ucharn ---- */ 633*61046927SAndroid Build Coastguard Worker typedef union 634*61046927SAndroid Build Coastguard Worker { 635*61046927SAndroid Build Coastguard Worker cl_uchar CL_ALIGNED(2) s[2]; 636*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 637*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar x, y; }; 638*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1; }; 639*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar lo, hi; }; 640*61046927SAndroid Build Coastguard Worker #endif 641*61046927SAndroid Build Coastguard Worker #if defined( __cl_uchar2__) 642*61046927SAndroid Build Coastguard Worker __cl_uchar2 v2; 643*61046927SAndroid Build Coastguard Worker #endif 644*61046927SAndroid Build Coastguard Worker }cl_uchar2; 645*61046927SAndroid Build Coastguard Worker 646*61046927SAndroid Build Coastguard Worker typedef union 647*61046927SAndroid Build Coastguard Worker { 648*61046927SAndroid Build Coastguard Worker cl_uchar CL_ALIGNED(4) s[4]; 649*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 650*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; 651*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3; }; 652*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar2 lo, hi; }; 653*61046927SAndroid Build Coastguard Worker #endif 654*61046927SAndroid Build Coastguard Worker #if defined( __CL_UCHAR2__) 655*61046927SAndroid Build Coastguard Worker __cl_uchar2 v2[2]; 656*61046927SAndroid Build Coastguard Worker #endif 657*61046927SAndroid Build Coastguard Worker #if defined( __CL_UCHAR4__) 658*61046927SAndroid Build Coastguard Worker __cl_uchar4 v4; 659*61046927SAndroid Build Coastguard Worker #endif 660*61046927SAndroid Build Coastguard Worker }cl_uchar4; 661*61046927SAndroid Build Coastguard Worker 662*61046927SAndroid Build Coastguard Worker /* cl_uchar3 is identical in size, alignment and behavior to cl_uchar4. See section 6.1.5. */ 663*61046927SAndroid Build Coastguard Worker typedef cl_uchar4 cl_uchar3; 664*61046927SAndroid Build Coastguard Worker 665*61046927SAndroid Build Coastguard Worker typedef union 666*61046927SAndroid Build Coastguard Worker { 667*61046927SAndroid Build Coastguard Worker cl_uchar CL_ALIGNED(8) s[8]; 668*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 669*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; 670*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; }; 671*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar4 lo, hi; }; 672*61046927SAndroid Build Coastguard Worker #endif 673*61046927SAndroid Build Coastguard Worker #if defined( __CL_UCHAR2__) 674*61046927SAndroid Build Coastguard Worker __cl_uchar2 v2[4]; 675*61046927SAndroid Build Coastguard Worker #endif 676*61046927SAndroid Build Coastguard Worker #if defined( __CL_UCHAR4__) 677*61046927SAndroid Build Coastguard Worker __cl_uchar4 v4[2]; 678*61046927SAndroid Build Coastguard Worker #endif 679*61046927SAndroid Build Coastguard Worker #if defined( __CL_UCHAR8__ ) 680*61046927SAndroid Build Coastguard Worker __cl_uchar8 v8; 681*61046927SAndroid Build Coastguard Worker #endif 682*61046927SAndroid Build Coastguard Worker }cl_uchar8; 683*61046927SAndroid Build Coastguard Worker 684*61046927SAndroid Build Coastguard Worker typedef union 685*61046927SAndroid Build Coastguard Worker { 686*61046927SAndroid Build Coastguard Worker cl_uchar CL_ALIGNED(16) s[16]; 687*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 688*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 689*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 690*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uchar8 lo, hi; }; 691*61046927SAndroid Build Coastguard Worker #endif 692*61046927SAndroid Build Coastguard Worker #if defined( __CL_UCHAR2__) 693*61046927SAndroid Build Coastguard Worker __cl_uchar2 v2[8]; 694*61046927SAndroid Build Coastguard Worker #endif 695*61046927SAndroid Build Coastguard Worker #if defined( __CL_UCHAR4__) 696*61046927SAndroid Build Coastguard Worker __cl_uchar4 v4[4]; 697*61046927SAndroid Build Coastguard Worker #endif 698*61046927SAndroid Build Coastguard Worker #if defined( __CL_UCHAR8__ ) 699*61046927SAndroid Build Coastguard Worker __cl_uchar8 v8[2]; 700*61046927SAndroid Build Coastguard Worker #endif 701*61046927SAndroid Build Coastguard Worker #if defined( __CL_UCHAR16__ ) 702*61046927SAndroid Build Coastguard Worker __cl_uchar16 v16; 703*61046927SAndroid Build Coastguard Worker #endif 704*61046927SAndroid Build Coastguard Worker }cl_uchar16; 705*61046927SAndroid Build Coastguard Worker 706*61046927SAndroid Build Coastguard Worker 707*61046927SAndroid Build Coastguard Worker /* ---- cl_shortn ---- */ 708*61046927SAndroid Build Coastguard Worker typedef union 709*61046927SAndroid Build Coastguard Worker { 710*61046927SAndroid Build Coastguard Worker cl_short CL_ALIGNED(4) s[2]; 711*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 712*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short x, y; }; 713*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short s0, s1; }; 714*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short lo, hi; }; 715*61046927SAndroid Build Coastguard Worker #endif 716*61046927SAndroid Build Coastguard Worker #if defined( __CL_SHORT2__) 717*61046927SAndroid Build Coastguard Worker __cl_short2 v2; 718*61046927SAndroid Build Coastguard Worker #endif 719*61046927SAndroid Build Coastguard Worker }cl_short2; 720*61046927SAndroid Build Coastguard Worker 721*61046927SAndroid Build Coastguard Worker typedef union 722*61046927SAndroid Build Coastguard Worker { 723*61046927SAndroid Build Coastguard Worker cl_short CL_ALIGNED(8) s[4]; 724*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 725*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; 726*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3; }; 727*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short2 lo, hi; }; 728*61046927SAndroid Build Coastguard Worker #endif 729*61046927SAndroid Build Coastguard Worker #if defined( __CL_SHORT2__) 730*61046927SAndroid Build Coastguard Worker __cl_short2 v2[2]; 731*61046927SAndroid Build Coastguard Worker #endif 732*61046927SAndroid Build Coastguard Worker #if defined( __CL_SHORT4__) 733*61046927SAndroid Build Coastguard Worker __cl_short4 v4; 734*61046927SAndroid Build Coastguard Worker #endif 735*61046927SAndroid Build Coastguard Worker }cl_short4; 736*61046927SAndroid Build Coastguard Worker 737*61046927SAndroid Build Coastguard Worker /* cl_short3 is identical in size, alignment and behavior to cl_short4. See section 6.1.5. */ 738*61046927SAndroid Build Coastguard Worker typedef cl_short4 cl_short3; 739*61046927SAndroid Build Coastguard Worker 740*61046927SAndroid Build Coastguard Worker typedef union 741*61046927SAndroid Build Coastguard Worker { 742*61046927SAndroid Build Coastguard Worker cl_short CL_ALIGNED(16) s[8]; 743*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 744*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; 745*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7; }; 746*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short4 lo, hi; }; 747*61046927SAndroid Build Coastguard Worker #endif 748*61046927SAndroid Build Coastguard Worker #if defined( __CL_SHORT2__) 749*61046927SAndroid Build Coastguard Worker __cl_short2 v2[4]; 750*61046927SAndroid Build Coastguard Worker #endif 751*61046927SAndroid Build Coastguard Worker #if defined( __CL_SHORT4__) 752*61046927SAndroid Build Coastguard Worker __cl_short4 v4[2]; 753*61046927SAndroid Build Coastguard Worker #endif 754*61046927SAndroid Build Coastguard Worker #if defined( __CL_SHORT8__ ) 755*61046927SAndroid Build Coastguard Worker __cl_short8 v8; 756*61046927SAndroid Build Coastguard Worker #endif 757*61046927SAndroid Build Coastguard Worker }cl_short8; 758*61046927SAndroid Build Coastguard Worker 759*61046927SAndroid Build Coastguard Worker typedef union 760*61046927SAndroid Build Coastguard Worker { 761*61046927SAndroid Build Coastguard Worker cl_short CL_ALIGNED(32) s[16]; 762*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 763*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 764*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 765*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_short8 lo, hi; }; 766*61046927SAndroid Build Coastguard Worker #endif 767*61046927SAndroid Build Coastguard Worker #if defined( __CL_SHORT2__) 768*61046927SAndroid Build Coastguard Worker __cl_short2 v2[8]; 769*61046927SAndroid Build Coastguard Worker #endif 770*61046927SAndroid Build Coastguard Worker #if defined( __CL_SHORT4__) 771*61046927SAndroid Build Coastguard Worker __cl_short4 v4[4]; 772*61046927SAndroid Build Coastguard Worker #endif 773*61046927SAndroid Build Coastguard Worker #if defined( __CL_SHORT8__ ) 774*61046927SAndroid Build Coastguard Worker __cl_short8 v8[2]; 775*61046927SAndroid Build Coastguard Worker #endif 776*61046927SAndroid Build Coastguard Worker #if defined( __CL_SHORT16__ ) 777*61046927SAndroid Build Coastguard Worker __cl_short16 v16; 778*61046927SAndroid Build Coastguard Worker #endif 779*61046927SAndroid Build Coastguard Worker }cl_short16; 780*61046927SAndroid Build Coastguard Worker 781*61046927SAndroid Build Coastguard Worker 782*61046927SAndroid Build Coastguard Worker /* ---- cl_ushortn ---- */ 783*61046927SAndroid Build Coastguard Worker typedef union 784*61046927SAndroid Build Coastguard Worker { 785*61046927SAndroid Build Coastguard Worker cl_ushort CL_ALIGNED(4) s[2]; 786*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 787*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort x, y; }; 788*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1; }; 789*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort lo, hi; }; 790*61046927SAndroid Build Coastguard Worker #endif 791*61046927SAndroid Build Coastguard Worker #if defined( __CL_USHORT2__) 792*61046927SAndroid Build Coastguard Worker __cl_ushort2 v2; 793*61046927SAndroid Build Coastguard Worker #endif 794*61046927SAndroid Build Coastguard Worker }cl_ushort2; 795*61046927SAndroid Build Coastguard Worker 796*61046927SAndroid Build Coastguard Worker typedef union 797*61046927SAndroid Build Coastguard Worker { 798*61046927SAndroid Build Coastguard Worker cl_ushort CL_ALIGNED(8) s[4]; 799*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 800*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; 801*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3; }; 802*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort2 lo, hi; }; 803*61046927SAndroid Build Coastguard Worker #endif 804*61046927SAndroid Build Coastguard Worker #if defined( __CL_USHORT2__) 805*61046927SAndroid Build Coastguard Worker __cl_ushort2 v2[2]; 806*61046927SAndroid Build Coastguard Worker #endif 807*61046927SAndroid Build Coastguard Worker #if defined( __CL_USHORT4__) 808*61046927SAndroid Build Coastguard Worker __cl_ushort4 v4; 809*61046927SAndroid Build Coastguard Worker #endif 810*61046927SAndroid Build Coastguard Worker }cl_ushort4; 811*61046927SAndroid Build Coastguard Worker 812*61046927SAndroid Build Coastguard Worker /* cl_ushort3 is identical in size, alignment and behavior to cl_ushort4. See section 6.1.5. */ 813*61046927SAndroid Build Coastguard Worker typedef cl_ushort4 cl_ushort3; 814*61046927SAndroid Build Coastguard Worker 815*61046927SAndroid Build Coastguard Worker typedef union 816*61046927SAndroid Build Coastguard Worker { 817*61046927SAndroid Build Coastguard Worker cl_ushort CL_ALIGNED(16) s[8]; 818*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 819*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; 820*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; }; 821*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort4 lo, hi; }; 822*61046927SAndroid Build Coastguard Worker #endif 823*61046927SAndroid Build Coastguard Worker #if defined( __CL_USHORT2__) 824*61046927SAndroid Build Coastguard Worker __cl_ushort2 v2[4]; 825*61046927SAndroid Build Coastguard Worker #endif 826*61046927SAndroid Build Coastguard Worker #if defined( __CL_USHORT4__) 827*61046927SAndroid Build Coastguard Worker __cl_ushort4 v4[2]; 828*61046927SAndroid Build Coastguard Worker #endif 829*61046927SAndroid Build Coastguard Worker #if defined( __CL_USHORT8__ ) 830*61046927SAndroid Build Coastguard Worker __cl_ushort8 v8; 831*61046927SAndroid Build Coastguard Worker #endif 832*61046927SAndroid Build Coastguard Worker }cl_ushort8; 833*61046927SAndroid Build Coastguard Worker 834*61046927SAndroid Build Coastguard Worker typedef union 835*61046927SAndroid Build Coastguard Worker { 836*61046927SAndroid Build Coastguard Worker cl_ushort CL_ALIGNED(32) s[16]; 837*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 838*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 839*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 840*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ushort8 lo, hi; }; 841*61046927SAndroid Build Coastguard Worker #endif 842*61046927SAndroid Build Coastguard Worker #if defined( __CL_USHORT2__) 843*61046927SAndroid Build Coastguard Worker __cl_ushort2 v2[8]; 844*61046927SAndroid Build Coastguard Worker #endif 845*61046927SAndroid Build Coastguard Worker #if defined( __CL_USHORT4__) 846*61046927SAndroid Build Coastguard Worker __cl_ushort4 v4[4]; 847*61046927SAndroid Build Coastguard Worker #endif 848*61046927SAndroid Build Coastguard Worker #if defined( __CL_USHORT8__ ) 849*61046927SAndroid Build Coastguard Worker __cl_ushort8 v8[2]; 850*61046927SAndroid Build Coastguard Worker #endif 851*61046927SAndroid Build Coastguard Worker #if defined( __CL_USHORT16__ ) 852*61046927SAndroid Build Coastguard Worker __cl_ushort16 v16; 853*61046927SAndroid Build Coastguard Worker #endif 854*61046927SAndroid Build Coastguard Worker }cl_ushort16; 855*61046927SAndroid Build Coastguard Worker 856*61046927SAndroid Build Coastguard Worker 857*61046927SAndroid Build Coastguard Worker /* ---- cl_halfn ---- */ 858*61046927SAndroid Build Coastguard Worker typedef union 859*61046927SAndroid Build Coastguard Worker { 860*61046927SAndroid Build Coastguard Worker cl_half CL_ALIGNED(4) s[2]; 861*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 862*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half x, y; }; 863*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half s0, s1; }; 864*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half lo, hi; }; 865*61046927SAndroid Build Coastguard Worker #endif 866*61046927SAndroid Build Coastguard Worker #if defined( __CL_HALF2__) 867*61046927SAndroid Build Coastguard Worker __cl_half2 v2; 868*61046927SAndroid Build Coastguard Worker #endif 869*61046927SAndroid Build Coastguard Worker }cl_half2; 870*61046927SAndroid Build Coastguard Worker 871*61046927SAndroid Build Coastguard Worker typedef union 872*61046927SAndroid Build Coastguard Worker { 873*61046927SAndroid Build Coastguard Worker cl_half CL_ALIGNED(8) s[4]; 874*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 875*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; 876*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3; }; 877*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half2 lo, hi; }; 878*61046927SAndroid Build Coastguard Worker #endif 879*61046927SAndroid Build Coastguard Worker #if defined( __CL_HALF2__) 880*61046927SAndroid Build Coastguard Worker __cl_half2 v2[2]; 881*61046927SAndroid Build Coastguard Worker #endif 882*61046927SAndroid Build Coastguard Worker #if defined( __CL_HALF4__) 883*61046927SAndroid Build Coastguard Worker __cl_half4 v4; 884*61046927SAndroid Build Coastguard Worker #endif 885*61046927SAndroid Build Coastguard Worker }cl_half4; 886*61046927SAndroid Build Coastguard Worker 887*61046927SAndroid Build Coastguard Worker /* cl_half3 is identical in size, alignment and behavior to cl_half4. See section 6.1.5. */ 888*61046927SAndroid Build Coastguard Worker typedef cl_half4 cl_half3; 889*61046927SAndroid Build Coastguard Worker 890*61046927SAndroid Build Coastguard Worker typedef union 891*61046927SAndroid Build Coastguard Worker { 892*61046927SAndroid Build Coastguard Worker cl_half CL_ALIGNED(16) s[8]; 893*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 894*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; 895*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7; }; 896*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half4 lo, hi; }; 897*61046927SAndroid Build Coastguard Worker #endif 898*61046927SAndroid Build Coastguard Worker #if defined( __CL_HALF2__) 899*61046927SAndroid Build Coastguard Worker __cl_half2 v2[4]; 900*61046927SAndroid Build Coastguard Worker #endif 901*61046927SAndroid Build Coastguard Worker #if defined( __CL_HALF4__) 902*61046927SAndroid Build Coastguard Worker __cl_half4 v4[2]; 903*61046927SAndroid Build Coastguard Worker #endif 904*61046927SAndroid Build Coastguard Worker #if defined( __CL_HALF8__ ) 905*61046927SAndroid Build Coastguard Worker __cl_half8 v8; 906*61046927SAndroid Build Coastguard Worker #endif 907*61046927SAndroid Build Coastguard Worker }cl_half8; 908*61046927SAndroid Build Coastguard Worker 909*61046927SAndroid Build Coastguard Worker typedef union 910*61046927SAndroid Build Coastguard Worker { 911*61046927SAndroid Build Coastguard Worker cl_half CL_ALIGNED(32) s[16]; 912*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 913*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 914*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 915*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_half8 lo, hi; }; 916*61046927SAndroid Build Coastguard Worker #endif 917*61046927SAndroid Build Coastguard Worker #if defined( __CL_HALF2__) 918*61046927SAndroid Build Coastguard Worker __cl_half2 v2[8]; 919*61046927SAndroid Build Coastguard Worker #endif 920*61046927SAndroid Build Coastguard Worker #if defined( __CL_HALF4__) 921*61046927SAndroid Build Coastguard Worker __cl_half4 v4[4]; 922*61046927SAndroid Build Coastguard Worker #endif 923*61046927SAndroid Build Coastguard Worker #if defined( __CL_HALF8__ ) 924*61046927SAndroid Build Coastguard Worker __cl_half8 v8[2]; 925*61046927SAndroid Build Coastguard Worker #endif 926*61046927SAndroid Build Coastguard Worker #if defined( __CL_HALF16__ ) 927*61046927SAndroid Build Coastguard Worker __cl_half16 v16; 928*61046927SAndroid Build Coastguard Worker #endif 929*61046927SAndroid Build Coastguard Worker }cl_half16; 930*61046927SAndroid Build Coastguard Worker 931*61046927SAndroid Build Coastguard Worker /* ---- cl_intn ---- */ 932*61046927SAndroid Build Coastguard Worker typedef union 933*61046927SAndroid Build Coastguard Worker { 934*61046927SAndroid Build Coastguard Worker cl_int CL_ALIGNED(8) s[2]; 935*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 936*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int x, y; }; 937*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int s0, s1; }; 938*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int lo, hi; }; 939*61046927SAndroid Build Coastguard Worker #endif 940*61046927SAndroid Build Coastguard Worker #if defined( __CL_INT2__) 941*61046927SAndroid Build Coastguard Worker __cl_int2 v2; 942*61046927SAndroid Build Coastguard Worker #endif 943*61046927SAndroid Build Coastguard Worker }cl_int2; 944*61046927SAndroid Build Coastguard Worker 945*61046927SAndroid Build Coastguard Worker typedef union 946*61046927SAndroid Build Coastguard Worker { 947*61046927SAndroid Build Coastguard Worker cl_int CL_ALIGNED(16) s[4]; 948*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 949*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; 950*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3; }; 951*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int2 lo, hi; }; 952*61046927SAndroid Build Coastguard Worker #endif 953*61046927SAndroid Build Coastguard Worker #if defined( __CL_INT2__) 954*61046927SAndroid Build Coastguard Worker __cl_int2 v2[2]; 955*61046927SAndroid Build Coastguard Worker #endif 956*61046927SAndroid Build Coastguard Worker #if defined( __CL_INT4__) 957*61046927SAndroid Build Coastguard Worker __cl_int4 v4; 958*61046927SAndroid Build Coastguard Worker #endif 959*61046927SAndroid Build Coastguard Worker }cl_int4; 960*61046927SAndroid Build Coastguard Worker 961*61046927SAndroid Build Coastguard Worker /* cl_int3 is identical in size, alignment and behavior to cl_int4. See section 6.1.5. */ 962*61046927SAndroid Build Coastguard Worker typedef cl_int4 cl_int3; 963*61046927SAndroid Build Coastguard Worker 964*61046927SAndroid Build Coastguard Worker typedef union 965*61046927SAndroid Build Coastguard Worker { 966*61046927SAndroid Build Coastguard Worker cl_int CL_ALIGNED(32) s[8]; 967*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 968*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; 969*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7; }; 970*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int4 lo, hi; }; 971*61046927SAndroid Build Coastguard Worker #endif 972*61046927SAndroid Build Coastguard Worker #if defined( __CL_INT2__) 973*61046927SAndroid Build Coastguard Worker __cl_int2 v2[4]; 974*61046927SAndroid Build Coastguard Worker #endif 975*61046927SAndroid Build Coastguard Worker #if defined( __CL_INT4__) 976*61046927SAndroid Build Coastguard Worker __cl_int4 v4[2]; 977*61046927SAndroid Build Coastguard Worker #endif 978*61046927SAndroid Build Coastguard Worker #if defined( __CL_INT8__ ) 979*61046927SAndroid Build Coastguard Worker __cl_int8 v8; 980*61046927SAndroid Build Coastguard Worker #endif 981*61046927SAndroid Build Coastguard Worker }cl_int8; 982*61046927SAndroid Build Coastguard Worker 983*61046927SAndroid Build Coastguard Worker typedef union 984*61046927SAndroid Build Coastguard Worker { 985*61046927SAndroid Build Coastguard Worker cl_int CL_ALIGNED(64) s[16]; 986*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 987*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 988*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 989*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_int8 lo, hi; }; 990*61046927SAndroid Build Coastguard Worker #endif 991*61046927SAndroid Build Coastguard Worker #if defined( __CL_INT2__) 992*61046927SAndroid Build Coastguard Worker __cl_int2 v2[8]; 993*61046927SAndroid Build Coastguard Worker #endif 994*61046927SAndroid Build Coastguard Worker #if defined( __CL_INT4__) 995*61046927SAndroid Build Coastguard Worker __cl_int4 v4[4]; 996*61046927SAndroid Build Coastguard Worker #endif 997*61046927SAndroid Build Coastguard Worker #if defined( __CL_INT8__ ) 998*61046927SAndroid Build Coastguard Worker __cl_int8 v8[2]; 999*61046927SAndroid Build Coastguard Worker #endif 1000*61046927SAndroid Build Coastguard Worker #if defined( __CL_INT16__ ) 1001*61046927SAndroid Build Coastguard Worker __cl_int16 v16; 1002*61046927SAndroid Build Coastguard Worker #endif 1003*61046927SAndroid Build Coastguard Worker }cl_int16; 1004*61046927SAndroid Build Coastguard Worker 1005*61046927SAndroid Build Coastguard Worker 1006*61046927SAndroid Build Coastguard Worker /* ---- cl_uintn ---- */ 1007*61046927SAndroid Build Coastguard Worker typedef union 1008*61046927SAndroid Build Coastguard Worker { 1009*61046927SAndroid Build Coastguard Worker cl_uint CL_ALIGNED(8) s[2]; 1010*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1011*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint x, y; }; 1012*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint s0, s1; }; 1013*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint lo, hi; }; 1014*61046927SAndroid Build Coastguard Worker #endif 1015*61046927SAndroid Build Coastguard Worker #if defined( __CL_UINT2__) 1016*61046927SAndroid Build Coastguard Worker __cl_uint2 v2; 1017*61046927SAndroid Build Coastguard Worker #endif 1018*61046927SAndroid Build Coastguard Worker }cl_uint2; 1019*61046927SAndroid Build Coastguard Worker 1020*61046927SAndroid Build Coastguard Worker typedef union 1021*61046927SAndroid Build Coastguard Worker { 1022*61046927SAndroid Build Coastguard Worker cl_uint CL_ALIGNED(16) s[4]; 1023*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1024*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; 1025*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3; }; 1026*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint2 lo, hi; }; 1027*61046927SAndroid Build Coastguard Worker #endif 1028*61046927SAndroid Build Coastguard Worker #if defined( __CL_UINT2__) 1029*61046927SAndroid Build Coastguard Worker __cl_uint2 v2[2]; 1030*61046927SAndroid Build Coastguard Worker #endif 1031*61046927SAndroid Build Coastguard Worker #if defined( __CL_UINT4__) 1032*61046927SAndroid Build Coastguard Worker __cl_uint4 v4; 1033*61046927SAndroid Build Coastguard Worker #endif 1034*61046927SAndroid Build Coastguard Worker }cl_uint4; 1035*61046927SAndroid Build Coastguard Worker 1036*61046927SAndroid Build Coastguard Worker /* cl_uint3 is identical in size, alignment and behavior to cl_uint4. See section 6.1.5. */ 1037*61046927SAndroid Build Coastguard Worker typedef cl_uint4 cl_uint3; 1038*61046927SAndroid Build Coastguard Worker 1039*61046927SAndroid Build Coastguard Worker typedef union 1040*61046927SAndroid Build Coastguard Worker { 1041*61046927SAndroid Build Coastguard Worker cl_uint CL_ALIGNED(32) s[8]; 1042*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1043*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; 1044*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7; }; 1045*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint4 lo, hi; }; 1046*61046927SAndroid Build Coastguard Worker #endif 1047*61046927SAndroid Build Coastguard Worker #if defined( __CL_UINT2__) 1048*61046927SAndroid Build Coastguard Worker __cl_uint2 v2[4]; 1049*61046927SAndroid Build Coastguard Worker #endif 1050*61046927SAndroid Build Coastguard Worker #if defined( __CL_UINT4__) 1051*61046927SAndroid Build Coastguard Worker __cl_uint4 v4[2]; 1052*61046927SAndroid Build Coastguard Worker #endif 1053*61046927SAndroid Build Coastguard Worker #if defined( __CL_UINT8__ ) 1054*61046927SAndroid Build Coastguard Worker __cl_uint8 v8; 1055*61046927SAndroid Build Coastguard Worker #endif 1056*61046927SAndroid Build Coastguard Worker }cl_uint8; 1057*61046927SAndroid Build Coastguard Worker 1058*61046927SAndroid Build Coastguard Worker typedef union 1059*61046927SAndroid Build Coastguard Worker { 1060*61046927SAndroid Build Coastguard Worker cl_uint CL_ALIGNED(64) s[16]; 1061*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1062*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 1063*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 1064*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_uint8 lo, hi; }; 1065*61046927SAndroid Build Coastguard Worker #endif 1066*61046927SAndroid Build Coastguard Worker #if defined( __CL_UINT2__) 1067*61046927SAndroid Build Coastguard Worker __cl_uint2 v2[8]; 1068*61046927SAndroid Build Coastguard Worker #endif 1069*61046927SAndroid Build Coastguard Worker #if defined( __CL_UINT4__) 1070*61046927SAndroid Build Coastguard Worker __cl_uint4 v4[4]; 1071*61046927SAndroid Build Coastguard Worker #endif 1072*61046927SAndroid Build Coastguard Worker #if defined( __CL_UINT8__ ) 1073*61046927SAndroid Build Coastguard Worker __cl_uint8 v8[2]; 1074*61046927SAndroid Build Coastguard Worker #endif 1075*61046927SAndroid Build Coastguard Worker #if defined( __CL_UINT16__ ) 1076*61046927SAndroid Build Coastguard Worker __cl_uint16 v16; 1077*61046927SAndroid Build Coastguard Worker #endif 1078*61046927SAndroid Build Coastguard Worker }cl_uint16; 1079*61046927SAndroid Build Coastguard Worker 1080*61046927SAndroid Build Coastguard Worker /* ---- cl_longn ---- */ 1081*61046927SAndroid Build Coastguard Worker typedef union 1082*61046927SAndroid Build Coastguard Worker { 1083*61046927SAndroid Build Coastguard Worker cl_long CL_ALIGNED(16) s[2]; 1084*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1085*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long x, y; }; 1086*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long s0, s1; }; 1087*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long lo, hi; }; 1088*61046927SAndroid Build Coastguard Worker #endif 1089*61046927SAndroid Build Coastguard Worker #if defined( __CL_LONG2__) 1090*61046927SAndroid Build Coastguard Worker __cl_long2 v2; 1091*61046927SAndroid Build Coastguard Worker #endif 1092*61046927SAndroid Build Coastguard Worker }cl_long2; 1093*61046927SAndroid Build Coastguard Worker 1094*61046927SAndroid Build Coastguard Worker typedef union 1095*61046927SAndroid Build Coastguard Worker { 1096*61046927SAndroid Build Coastguard Worker cl_long CL_ALIGNED(32) s[4]; 1097*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1098*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; 1099*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3; }; 1100*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long2 lo, hi; }; 1101*61046927SAndroid Build Coastguard Worker #endif 1102*61046927SAndroid Build Coastguard Worker #if defined( __CL_LONG2__) 1103*61046927SAndroid Build Coastguard Worker __cl_long2 v2[2]; 1104*61046927SAndroid Build Coastguard Worker #endif 1105*61046927SAndroid Build Coastguard Worker #if defined( __CL_LONG4__) 1106*61046927SAndroid Build Coastguard Worker __cl_long4 v4; 1107*61046927SAndroid Build Coastguard Worker #endif 1108*61046927SAndroid Build Coastguard Worker }cl_long4; 1109*61046927SAndroid Build Coastguard Worker 1110*61046927SAndroid Build Coastguard Worker /* cl_long3 is identical in size, alignment and behavior to cl_long4. See section 6.1.5. */ 1111*61046927SAndroid Build Coastguard Worker typedef cl_long4 cl_long3; 1112*61046927SAndroid Build Coastguard Worker 1113*61046927SAndroid Build Coastguard Worker typedef union 1114*61046927SAndroid Build Coastguard Worker { 1115*61046927SAndroid Build Coastguard Worker cl_long CL_ALIGNED(64) s[8]; 1116*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1117*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; 1118*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7; }; 1119*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long4 lo, hi; }; 1120*61046927SAndroid Build Coastguard Worker #endif 1121*61046927SAndroid Build Coastguard Worker #if defined( __CL_LONG2__) 1122*61046927SAndroid Build Coastguard Worker __cl_long2 v2[4]; 1123*61046927SAndroid Build Coastguard Worker #endif 1124*61046927SAndroid Build Coastguard Worker #if defined( __CL_LONG4__) 1125*61046927SAndroid Build Coastguard Worker __cl_long4 v4[2]; 1126*61046927SAndroid Build Coastguard Worker #endif 1127*61046927SAndroid Build Coastguard Worker #if defined( __CL_LONG8__ ) 1128*61046927SAndroid Build Coastguard Worker __cl_long8 v8; 1129*61046927SAndroid Build Coastguard Worker #endif 1130*61046927SAndroid Build Coastguard Worker }cl_long8; 1131*61046927SAndroid Build Coastguard Worker 1132*61046927SAndroid Build Coastguard Worker typedef union 1133*61046927SAndroid Build Coastguard Worker { 1134*61046927SAndroid Build Coastguard Worker cl_long CL_ALIGNED(128) s[16]; 1135*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1136*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 1137*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 1138*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_long8 lo, hi; }; 1139*61046927SAndroid Build Coastguard Worker #endif 1140*61046927SAndroid Build Coastguard Worker #if defined( __CL_LONG2__) 1141*61046927SAndroid Build Coastguard Worker __cl_long2 v2[8]; 1142*61046927SAndroid Build Coastguard Worker #endif 1143*61046927SAndroid Build Coastguard Worker #if defined( __CL_LONG4__) 1144*61046927SAndroid Build Coastguard Worker __cl_long4 v4[4]; 1145*61046927SAndroid Build Coastguard Worker #endif 1146*61046927SAndroid Build Coastguard Worker #if defined( __CL_LONG8__ ) 1147*61046927SAndroid Build Coastguard Worker __cl_long8 v8[2]; 1148*61046927SAndroid Build Coastguard Worker #endif 1149*61046927SAndroid Build Coastguard Worker #if defined( __CL_LONG16__ ) 1150*61046927SAndroid Build Coastguard Worker __cl_long16 v16; 1151*61046927SAndroid Build Coastguard Worker #endif 1152*61046927SAndroid Build Coastguard Worker }cl_long16; 1153*61046927SAndroid Build Coastguard Worker 1154*61046927SAndroid Build Coastguard Worker 1155*61046927SAndroid Build Coastguard Worker /* ---- cl_ulongn ---- */ 1156*61046927SAndroid Build Coastguard Worker typedef union 1157*61046927SAndroid Build Coastguard Worker { 1158*61046927SAndroid Build Coastguard Worker cl_ulong CL_ALIGNED(16) s[2]; 1159*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1160*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong x, y; }; 1161*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1; }; 1162*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong lo, hi; }; 1163*61046927SAndroid Build Coastguard Worker #endif 1164*61046927SAndroid Build Coastguard Worker #if defined( __CL_ULONG2__) 1165*61046927SAndroid Build Coastguard Worker __cl_ulong2 v2; 1166*61046927SAndroid Build Coastguard Worker #endif 1167*61046927SAndroid Build Coastguard Worker }cl_ulong2; 1168*61046927SAndroid Build Coastguard Worker 1169*61046927SAndroid Build Coastguard Worker typedef union 1170*61046927SAndroid Build Coastguard Worker { 1171*61046927SAndroid Build Coastguard Worker cl_ulong CL_ALIGNED(32) s[4]; 1172*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1173*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; 1174*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3; }; 1175*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong2 lo, hi; }; 1176*61046927SAndroid Build Coastguard Worker #endif 1177*61046927SAndroid Build Coastguard Worker #if defined( __CL_ULONG2__) 1178*61046927SAndroid Build Coastguard Worker __cl_ulong2 v2[2]; 1179*61046927SAndroid Build Coastguard Worker #endif 1180*61046927SAndroid Build Coastguard Worker #if defined( __CL_ULONG4__) 1181*61046927SAndroid Build Coastguard Worker __cl_ulong4 v4; 1182*61046927SAndroid Build Coastguard Worker #endif 1183*61046927SAndroid Build Coastguard Worker }cl_ulong4; 1184*61046927SAndroid Build Coastguard Worker 1185*61046927SAndroid Build Coastguard Worker /* cl_ulong3 is identical in size, alignment and behavior to cl_ulong4. See section 6.1.5. */ 1186*61046927SAndroid Build Coastguard Worker typedef cl_ulong4 cl_ulong3; 1187*61046927SAndroid Build Coastguard Worker 1188*61046927SAndroid Build Coastguard Worker typedef union 1189*61046927SAndroid Build Coastguard Worker { 1190*61046927SAndroid Build Coastguard Worker cl_ulong CL_ALIGNED(64) s[8]; 1191*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1192*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; 1193*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; }; 1194*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong4 lo, hi; }; 1195*61046927SAndroid Build Coastguard Worker #endif 1196*61046927SAndroid Build Coastguard Worker #if defined( __CL_ULONG2__) 1197*61046927SAndroid Build Coastguard Worker __cl_ulong2 v2[4]; 1198*61046927SAndroid Build Coastguard Worker #endif 1199*61046927SAndroid Build Coastguard Worker #if defined( __CL_ULONG4__) 1200*61046927SAndroid Build Coastguard Worker __cl_ulong4 v4[2]; 1201*61046927SAndroid Build Coastguard Worker #endif 1202*61046927SAndroid Build Coastguard Worker #if defined( __CL_ULONG8__ ) 1203*61046927SAndroid Build Coastguard Worker __cl_ulong8 v8; 1204*61046927SAndroid Build Coastguard Worker #endif 1205*61046927SAndroid Build Coastguard Worker }cl_ulong8; 1206*61046927SAndroid Build Coastguard Worker 1207*61046927SAndroid Build Coastguard Worker typedef union 1208*61046927SAndroid Build Coastguard Worker { 1209*61046927SAndroid Build Coastguard Worker cl_ulong CL_ALIGNED(128) s[16]; 1210*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1211*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 1212*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 1213*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_ulong8 lo, hi; }; 1214*61046927SAndroid Build Coastguard Worker #endif 1215*61046927SAndroid Build Coastguard Worker #if defined( __CL_ULONG2__) 1216*61046927SAndroid Build Coastguard Worker __cl_ulong2 v2[8]; 1217*61046927SAndroid Build Coastguard Worker #endif 1218*61046927SAndroid Build Coastguard Worker #if defined( __CL_ULONG4__) 1219*61046927SAndroid Build Coastguard Worker __cl_ulong4 v4[4]; 1220*61046927SAndroid Build Coastguard Worker #endif 1221*61046927SAndroid Build Coastguard Worker #if defined( __CL_ULONG8__ ) 1222*61046927SAndroid Build Coastguard Worker __cl_ulong8 v8[2]; 1223*61046927SAndroid Build Coastguard Worker #endif 1224*61046927SAndroid Build Coastguard Worker #if defined( __CL_ULONG16__ ) 1225*61046927SAndroid Build Coastguard Worker __cl_ulong16 v16; 1226*61046927SAndroid Build Coastguard Worker #endif 1227*61046927SAndroid Build Coastguard Worker }cl_ulong16; 1228*61046927SAndroid Build Coastguard Worker 1229*61046927SAndroid Build Coastguard Worker 1230*61046927SAndroid Build Coastguard Worker /* --- cl_floatn ---- */ 1231*61046927SAndroid Build Coastguard Worker 1232*61046927SAndroid Build Coastguard Worker typedef union 1233*61046927SAndroid Build Coastguard Worker { 1234*61046927SAndroid Build Coastguard Worker cl_float CL_ALIGNED(8) s[2]; 1235*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1236*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float x, y; }; 1237*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float s0, s1; }; 1238*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float lo, hi; }; 1239*61046927SAndroid Build Coastguard Worker #endif 1240*61046927SAndroid Build Coastguard Worker #if defined( __CL_FLOAT2__) 1241*61046927SAndroid Build Coastguard Worker __cl_float2 v2; 1242*61046927SAndroid Build Coastguard Worker #endif 1243*61046927SAndroid Build Coastguard Worker }cl_float2; 1244*61046927SAndroid Build Coastguard Worker 1245*61046927SAndroid Build Coastguard Worker typedef union 1246*61046927SAndroid Build Coastguard Worker { 1247*61046927SAndroid Build Coastguard Worker cl_float CL_ALIGNED(16) s[4]; 1248*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1249*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; 1250*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3; }; 1251*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float2 lo, hi; }; 1252*61046927SAndroid Build Coastguard Worker #endif 1253*61046927SAndroid Build Coastguard Worker #if defined( __CL_FLOAT2__) 1254*61046927SAndroid Build Coastguard Worker __cl_float2 v2[2]; 1255*61046927SAndroid Build Coastguard Worker #endif 1256*61046927SAndroid Build Coastguard Worker #if defined( __CL_FLOAT4__) 1257*61046927SAndroid Build Coastguard Worker __cl_float4 v4; 1258*61046927SAndroid Build Coastguard Worker #endif 1259*61046927SAndroid Build Coastguard Worker }cl_float4; 1260*61046927SAndroid Build Coastguard Worker 1261*61046927SAndroid Build Coastguard Worker /* cl_float3 is identical in size, alignment and behavior to cl_float4. See section 6.1.5. */ 1262*61046927SAndroid Build Coastguard Worker typedef cl_float4 cl_float3; 1263*61046927SAndroid Build Coastguard Worker 1264*61046927SAndroid Build Coastguard Worker typedef union 1265*61046927SAndroid Build Coastguard Worker { 1266*61046927SAndroid Build Coastguard Worker cl_float CL_ALIGNED(32) s[8]; 1267*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1268*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; 1269*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7; }; 1270*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float4 lo, hi; }; 1271*61046927SAndroid Build Coastguard Worker #endif 1272*61046927SAndroid Build Coastguard Worker #if defined( __CL_FLOAT2__) 1273*61046927SAndroid Build Coastguard Worker __cl_float2 v2[4]; 1274*61046927SAndroid Build Coastguard Worker #endif 1275*61046927SAndroid Build Coastguard Worker #if defined( __CL_FLOAT4__) 1276*61046927SAndroid Build Coastguard Worker __cl_float4 v4[2]; 1277*61046927SAndroid Build Coastguard Worker #endif 1278*61046927SAndroid Build Coastguard Worker #if defined( __CL_FLOAT8__ ) 1279*61046927SAndroid Build Coastguard Worker __cl_float8 v8; 1280*61046927SAndroid Build Coastguard Worker #endif 1281*61046927SAndroid Build Coastguard Worker }cl_float8; 1282*61046927SAndroid Build Coastguard Worker 1283*61046927SAndroid Build Coastguard Worker typedef union 1284*61046927SAndroid Build Coastguard Worker { 1285*61046927SAndroid Build Coastguard Worker cl_float CL_ALIGNED(64) s[16]; 1286*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1287*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 1288*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 1289*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_float8 lo, hi; }; 1290*61046927SAndroid Build Coastguard Worker #endif 1291*61046927SAndroid Build Coastguard Worker #if defined( __CL_FLOAT2__) 1292*61046927SAndroid Build Coastguard Worker __cl_float2 v2[8]; 1293*61046927SAndroid Build Coastguard Worker #endif 1294*61046927SAndroid Build Coastguard Worker #if defined( __CL_FLOAT4__) 1295*61046927SAndroid Build Coastguard Worker __cl_float4 v4[4]; 1296*61046927SAndroid Build Coastguard Worker #endif 1297*61046927SAndroid Build Coastguard Worker #if defined( __CL_FLOAT8__ ) 1298*61046927SAndroid Build Coastguard Worker __cl_float8 v8[2]; 1299*61046927SAndroid Build Coastguard Worker #endif 1300*61046927SAndroid Build Coastguard Worker #if defined( __CL_FLOAT16__ ) 1301*61046927SAndroid Build Coastguard Worker __cl_float16 v16; 1302*61046927SAndroid Build Coastguard Worker #endif 1303*61046927SAndroid Build Coastguard Worker }cl_float16; 1304*61046927SAndroid Build Coastguard Worker 1305*61046927SAndroid Build Coastguard Worker /* --- cl_doublen ---- */ 1306*61046927SAndroid Build Coastguard Worker 1307*61046927SAndroid Build Coastguard Worker typedef union 1308*61046927SAndroid Build Coastguard Worker { 1309*61046927SAndroid Build Coastguard Worker cl_double CL_ALIGNED(16) s[2]; 1310*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1311*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double x, y; }; 1312*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double s0, s1; }; 1313*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double lo, hi; }; 1314*61046927SAndroid Build Coastguard Worker #endif 1315*61046927SAndroid Build Coastguard Worker #if defined( __CL_DOUBLE2__) 1316*61046927SAndroid Build Coastguard Worker __cl_double2 v2; 1317*61046927SAndroid Build Coastguard Worker #endif 1318*61046927SAndroid Build Coastguard Worker }cl_double2; 1319*61046927SAndroid Build Coastguard Worker 1320*61046927SAndroid Build Coastguard Worker typedef union 1321*61046927SAndroid Build Coastguard Worker { 1322*61046927SAndroid Build Coastguard Worker cl_double CL_ALIGNED(32) s[4]; 1323*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1324*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; 1325*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3; }; 1326*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double2 lo, hi; }; 1327*61046927SAndroid Build Coastguard Worker #endif 1328*61046927SAndroid Build Coastguard Worker #if defined( __CL_DOUBLE2__) 1329*61046927SAndroid Build Coastguard Worker __cl_double2 v2[2]; 1330*61046927SAndroid Build Coastguard Worker #endif 1331*61046927SAndroid Build Coastguard Worker #if defined( __CL_DOUBLE4__) 1332*61046927SAndroid Build Coastguard Worker __cl_double4 v4; 1333*61046927SAndroid Build Coastguard Worker #endif 1334*61046927SAndroid Build Coastguard Worker }cl_double4; 1335*61046927SAndroid Build Coastguard Worker 1336*61046927SAndroid Build Coastguard Worker /* cl_double3 is identical in size, alignment and behavior to cl_double4. See section 6.1.5. */ 1337*61046927SAndroid Build Coastguard Worker typedef cl_double4 cl_double3; 1338*61046927SAndroid Build Coastguard Worker 1339*61046927SAndroid Build Coastguard Worker typedef union 1340*61046927SAndroid Build Coastguard Worker { 1341*61046927SAndroid Build Coastguard Worker cl_double CL_ALIGNED(64) s[8]; 1342*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1343*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; 1344*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7; }; 1345*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double4 lo, hi; }; 1346*61046927SAndroid Build Coastguard Worker #endif 1347*61046927SAndroid Build Coastguard Worker #if defined( __CL_DOUBLE2__) 1348*61046927SAndroid Build Coastguard Worker __cl_double2 v2[4]; 1349*61046927SAndroid Build Coastguard Worker #endif 1350*61046927SAndroid Build Coastguard Worker #if defined( __CL_DOUBLE4__) 1351*61046927SAndroid Build Coastguard Worker __cl_double4 v4[2]; 1352*61046927SAndroid Build Coastguard Worker #endif 1353*61046927SAndroid Build Coastguard Worker #if defined( __CL_DOUBLE8__ ) 1354*61046927SAndroid Build Coastguard Worker __cl_double8 v8; 1355*61046927SAndroid Build Coastguard Worker #endif 1356*61046927SAndroid Build Coastguard Worker }cl_double8; 1357*61046927SAndroid Build Coastguard Worker 1358*61046927SAndroid Build Coastguard Worker typedef union 1359*61046927SAndroid Build Coastguard Worker { 1360*61046927SAndroid Build Coastguard Worker cl_double CL_ALIGNED(128) s[16]; 1361*61046927SAndroid Build Coastguard Worker #if __CL_HAS_ANON_STRUCT__ 1362*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; 1363*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; 1364*61046927SAndroid Build Coastguard Worker __CL_ANON_STRUCT__ struct{ cl_double8 lo, hi; }; 1365*61046927SAndroid Build Coastguard Worker #endif 1366*61046927SAndroid Build Coastguard Worker #if defined( __CL_DOUBLE2__) 1367*61046927SAndroid Build Coastguard Worker __cl_double2 v2[8]; 1368*61046927SAndroid Build Coastguard Worker #endif 1369*61046927SAndroid Build Coastguard Worker #if defined( __CL_DOUBLE4__) 1370*61046927SAndroid Build Coastguard Worker __cl_double4 v4[4]; 1371*61046927SAndroid Build Coastguard Worker #endif 1372*61046927SAndroid Build Coastguard Worker #if defined( __CL_DOUBLE8__ ) 1373*61046927SAndroid Build Coastguard Worker __cl_double8 v8[2]; 1374*61046927SAndroid Build Coastguard Worker #endif 1375*61046927SAndroid Build Coastguard Worker #if defined( __CL_DOUBLE16__ ) 1376*61046927SAndroid Build Coastguard Worker __cl_double16 v16; 1377*61046927SAndroid Build Coastguard Worker #endif 1378*61046927SAndroid Build Coastguard Worker }cl_double16; 1379*61046927SAndroid Build Coastguard Worker 1380*61046927SAndroid Build Coastguard Worker /* Macro to facilitate debugging 1381*61046927SAndroid Build Coastguard Worker * Usage: 1382*61046927SAndroid Build Coastguard Worker * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source. 1383*61046927SAndroid Build Coastguard Worker * The first line ends with: CL_PROGRAM_STRING_DEBUG_INFO \" 1384*61046927SAndroid Build Coastguard Worker * Each line thereafter of OpenCL C source must end with: \n\ 1385*61046927SAndroid Build Coastguard Worker * The last line ends in "; 1386*61046927SAndroid Build Coastguard Worker * 1387*61046927SAndroid Build Coastguard Worker * Example: 1388*61046927SAndroid Build Coastguard Worker * 1389*61046927SAndroid Build Coastguard Worker * const char *my_program = CL_PROGRAM_STRING_DEBUG_INFO "\ 1390*61046927SAndroid Build Coastguard Worker * kernel void foo( int a, float * b ) \n\ 1391*61046927SAndroid Build Coastguard Worker * { \n\ 1392*61046927SAndroid Build Coastguard Worker * // my comment \n\ 1393*61046927SAndroid Build Coastguard Worker * *b[ get_global_id(0)] = a; \n\ 1394*61046927SAndroid Build Coastguard Worker * } \n\ 1395*61046927SAndroid Build Coastguard Worker * "; 1396*61046927SAndroid Build Coastguard Worker * 1397*61046927SAndroid Build Coastguard Worker * This should correctly set up the line, (column) and file information for your source 1398*61046927SAndroid Build Coastguard Worker * string so you can do source level debugging. 1399*61046927SAndroid Build Coastguard Worker */ 1400*61046927SAndroid Build Coastguard Worker #define __CL_STRINGIFY( _x ) # _x 1401*61046927SAndroid Build Coastguard Worker #define _CL_STRINGIFY( _x ) __CL_STRINGIFY( _x ) 1402*61046927SAndroid Build Coastguard Worker #define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" 1403*61046927SAndroid Build Coastguard Worker 1404*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 1405*61046927SAndroid Build Coastguard Worker } 1406*61046927SAndroid Build Coastguard Worker #endif 1407*61046927SAndroid Build Coastguard Worker 1408*61046927SAndroid Build Coastguard Worker #if defined(_WIN32) && defined(_MSC_VER) && __CL_HAS_ANON_STRUCT__ 1409*61046927SAndroid Build Coastguard Worker #pragma warning( pop ) 1410*61046927SAndroid Build Coastguard Worker #endif 1411*61046927SAndroid Build Coastguard Worker 1412*61046927SAndroid Build Coastguard Worker #endif /* __CL_PLATFORM_H */ 1413