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