|  | /* | 
|  | ** Copyright (c) 2015-2019 The Khronos Group Inc. | 
|  | ** | 
|  | ** Permission is hereby granted, free of charge, to any person obtaining a copy | 
|  | ** of this software and/or associated documentation files (the "Materials"), | 
|  | ** to deal in the Materials without restriction, including without limitation | 
|  | ** the rights to use, copy, modify, merge, publish, distribute, sublicense, | 
|  | ** and/or sell copies of the Materials, and to permit persons to whom the | 
|  | ** Materials are furnished to do so, subject to the following conditions: | 
|  | ** | 
|  | ** The above copyright notice and this permission notice shall be included in | 
|  | ** all copies or substantial portions of the Materials. | 
|  | ** | 
|  | ** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS | 
|  | ** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND | 
|  | ** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ | 
|  | ** | 
|  | ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | 
|  | ** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
|  | ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | 
|  | ** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 
|  | ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | 
|  | ** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS | 
|  | ** IN THE MATERIALS. | 
|  | */ | 
|  |  | 
|  | #ifndef OPENCLstd_H | 
|  | #define OPENCLstd_H | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | namespace OpenCLLIB { | 
|  |  | 
|  | enum Entrypoints { | 
|  |  | 
|  | // Section 2.1: Math extended instructions | 
|  | Acos = 0, | 
|  | Acosh = 1, | 
|  | Acospi = 2, | 
|  | Asin = 3, | 
|  | Asinh = 4, | 
|  | Asinpi = 5, | 
|  | Atan = 6, | 
|  | Atan2 = 7, | 
|  | Atanh = 8, | 
|  | Atanpi = 9, | 
|  | Atan2pi = 10, | 
|  | Cbrt = 11, | 
|  | Ceil = 12, | 
|  | Copysign = 13, | 
|  | Cos = 14, | 
|  | Cosh = 15, | 
|  | Cospi = 16, | 
|  | Erfc = 17, | 
|  | Erf = 18, | 
|  | Exp = 19, | 
|  | Exp2 = 20, | 
|  | Exp10 = 21, | 
|  | Expm1 = 22, | 
|  | Fabs = 23, | 
|  | Fdim = 24, | 
|  | Floor = 25, | 
|  | Fma = 26, | 
|  | Fmax = 27, | 
|  | Fmin = 28, | 
|  | Fmod = 29, | 
|  | Fract = 30, | 
|  | Frexp = 31, | 
|  | Hypot = 32, | 
|  | Ilogb = 33, | 
|  | Ldexp = 34, | 
|  | Lgamma = 35, | 
|  | Lgamma_r = 36, | 
|  | Log = 37, | 
|  | Log2 = 38, | 
|  | Log10 = 39, | 
|  | Log1p = 40, | 
|  | Logb = 41, | 
|  | Mad = 42, | 
|  | Maxmag = 43, | 
|  | Minmag = 44, | 
|  | Modf = 45, | 
|  | Nan = 46, | 
|  | Nextafter = 47, | 
|  | Pow = 48, | 
|  | Pown = 49, | 
|  | Powr = 50, | 
|  | Remainder = 51, | 
|  | Remquo = 52, | 
|  | Rint = 53, | 
|  | Rootn = 54, | 
|  | Round = 55, | 
|  | Rsqrt = 56, | 
|  | Sin = 57, | 
|  | Sincos = 58, | 
|  | Sinh = 59, | 
|  | Sinpi = 60, | 
|  | Sqrt = 61, | 
|  | Tan = 62, | 
|  | Tanh = 63, | 
|  | Tanpi = 64, | 
|  | Tgamma = 65, | 
|  | Trunc = 66, | 
|  | Half_cos = 67, | 
|  | Half_divide = 68, | 
|  | Half_exp = 69, | 
|  | Half_exp2 = 70, | 
|  | Half_exp10 = 71, | 
|  | Half_log = 72, | 
|  | Half_log2 = 73, | 
|  | Half_log10 = 74, | 
|  | Half_powr = 75, | 
|  | Half_recip = 76, | 
|  | Half_rsqrt = 77, | 
|  | Half_sin = 78, | 
|  | Half_sqrt = 79, | 
|  | Half_tan = 80, | 
|  | Native_cos = 81, | 
|  | Native_divide = 82, | 
|  | Native_exp = 83, | 
|  | Native_exp2 = 84, | 
|  | Native_exp10 = 85, | 
|  | Native_log = 86, | 
|  | Native_log2 = 87, | 
|  | Native_log10 = 88, | 
|  | Native_powr = 89, | 
|  | Native_recip = 90, | 
|  | Native_rsqrt = 91, | 
|  | Native_sin = 92, | 
|  | Native_sqrt = 93, | 
|  | Native_tan = 94, | 
|  |  | 
|  | // Section 2.2: Integer instructions | 
|  | SAbs = 141, | 
|  | SAbs_diff = 142, | 
|  | SAdd_sat = 143, | 
|  | UAdd_sat = 144, | 
|  | SHadd = 145, | 
|  | UHadd = 146, | 
|  | SRhadd = 147, | 
|  | URhadd = 148, | 
|  | SClamp = 149, | 
|  | UClamp = 150, | 
|  | Clz = 151, | 
|  | Ctz = 152, | 
|  | SMad_hi = 153, | 
|  | UMad_sat = 154, | 
|  | SMad_sat = 155, | 
|  | SMax = 156, | 
|  | UMax = 157, | 
|  | SMin = 158, | 
|  | UMin = 159, | 
|  | SMul_hi = 160, | 
|  | Rotate = 161, | 
|  | SSub_sat = 162, | 
|  | USub_sat = 163, | 
|  | U_Upsample = 164, | 
|  | S_Upsample = 165, | 
|  | Popcount = 166, | 
|  | SMad24 = 167, | 
|  | UMad24 = 168, | 
|  | SMul24 = 169, | 
|  | UMul24 = 170, | 
|  | UAbs = 201, | 
|  | UAbs_diff = 202, | 
|  | UMul_hi = 203, | 
|  | UMad_hi = 204, | 
|  |  | 
|  | // Section 2.3: Common instructions | 
|  | FClamp = 95, | 
|  | Degrees = 96, | 
|  | FMax_common = 97, | 
|  | FMin_common = 98, | 
|  | Mix = 99, | 
|  | Radians = 100, | 
|  | Step = 101, | 
|  | Smoothstep = 102, | 
|  | Sign = 103, | 
|  |  | 
|  | // Section 2.4: Geometric instructions | 
|  | Cross = 104, | 
|  | Distance = 105, | 
|  | Length = 106, | 
|  | Normalize = 107, | 
|  | Fast_distance = 108, | 
|  | Fast_length = 109, | 
|  | Fast_normalize = 110, | 
|  |  | 
|  | // Section 2.5: Relational instructions | 
|  | Bitselect = 186, | 
|  | Select = 187, | 
|  |  | 
|  | // Section 2.6: Vector Data Load and Store instructions | 
|  | Vloadn = 171, | 
|  | Vstoren = 172, | 
|  | Vload_half = 173, | 
|  | Vload_halfn = 174, | 
|  | Vstore_half = 175, | 
|  | Vstore_half_r = 176, | 
|  | Vstore_halfn = 177, | 
|  | Vstore_halfn_r = 178, | 
|  | Vloada_halfn = 179, | 
|  | Vstorea_halfn = 180, | 
|  | Vstorea_halfn_r = 181, | 
|  |  | 
|  | // Section 2.7: Miscellaneous Vector instructions | 
|  | Shuffle = 182, | 
|  | Shuffle2 = 183, | 
|  |  | 
|  | // Section 2.8: Misc instructions | 
|  | Printf = 184, | 
|  | Prefetch = 185, | 
|  | }; | 
|  |  | 
|  | } // end namespace OpenCLLIB | 
|  |  | 
|  | #else | 
|  |  | 
|  | enum OpenCLstd_Entrypoints { | 
|  |  | 
|  | // Section 2.1: Math extended instructions | 
|  | OpenCLstd_Acos = 0, | 
|  | OpenCLstd_Acosh = 1, | 
|  | OpenCLstd_Acospi = 2, | 
|  | OpenCLstd_Asin = 3, | 
|  | OpenCLstd_Asinh = 4, | 
|  | OpenCLstd_Asinpi = 5, | 
|  | OpenCLstd_Atan = 6, | 
|  | OpenCLstd_Atan2 = 7, | 
|  | OpenCLstd_Atanh = 8, | 
|  | OpenCLstd_Atanpi = 9, | 
|  | OpenCLstd_Atan2pi = 10, | 
|  | OpenCLstd_Cbrt = 11, | 
|  | OpenCLstd_Ceil = 12, | 
|  | OpenCLstd_Copysign = 13, | 
|  | OpenCLstd_Cos = 14, | 
|  | OpenCLstd_Cosh = 15, | 
|  | OpenCLstd_Cospi = 16, | 
|  | OpenCLstd_Erfc = 17, | 
|  | OpenCLstd_Erf = 18, | 
|  | OpenCLstd_Exp = 19, | 
|  | OpenCLstd_Exp2 = 20, | 
|  | OpenCLstd_Exp10 = 21, | 
|  | OpenCLstd_Expm1 = 22, | 
|  | OpenCLstd_Fabs = 23, | 
|  | OpenCLstd_Fdim = 24, | 
|  | OpenCLstd_Floor = 25, | 
|  | OpenCLstd_Fma = 26, | 
|  | OpenCLstd_Fmax = 27, | 
|  | OpenCLstd_Fmin = 28, | 
|  | OpenCLstd_Fmod = 29, | 
|  | OpenCLstd_Fract = 30, | 
|  | OpenCLstd_Frexp = 31, | 
|  | OpenCLstd_Hypot = 32, | 
|  | OpenCLstd_Ilogb = 33, | 
|  | OpenCLstd_Ldexp = 34, | 
|  | OpenCLstd_Lgamma = 35, | 
|  | OpenCLstd_Lgamma_r = 36, | 
|  | OpenCLstd_Log = 37, | 
|  | OpenCLstd_Log2 = 38, | 
|  | OpenCLstd_Log10 = 39, | 
|  | OpenCLstd_Log1p = 40, | 
|  | OpenCLstd_Logb = 41, | 
|  | OpenCLstd_Mad = 42, | 
|  | OpenCLstd_Maxmag = 43, | 
|  | OpenCLstd_Minmag = 44, | 
|  | OpenCLstd_Modf = 45, | 
|  | OpenCLstd_Nan = 46, | 
|  | OpenCLstd_Nextafter = 47, | 
|  | OpenCLstd_Pow = 48, | 
|  | OpenCLstd_Pown = 49, | 
|  | OpenCLstd_Powr = 50, | 
|  | OpenCLstd_Remainder = 51, | 
|  | OpenCLstd_Remquo = 52, | 
|  | OpenCLstd_Rint = 53, | 
|  | OpenCLstd_Rootn = 54, | 
|  | OpenCLstd_Round = 55, | 
|  | OpenCLstd_Rsqrt = 56, | 
|  | OpenCLstd_Sin = 57, | 
|  | OpenCLstd_Sincos = 58, | 
|  | OpenCLstd_Sinh = 59, | 
|  | OpenCLstd_Sinpi = 60, | 
|  | OpenCLstd_Sqrt = 61, | 
|  | OpenCLstd_Tan = 62, | 
|  | OpenCLstd_Tanh = 63, | 
|  | OpenCLstd_Tanpi = 64, | 
|  | OpenCLstd_Tgamma = 65, | 
|  | OpenCLstd_Trunc = 66, | 
|  | OpenCLstd_Half_cos = 67, | 
|  | OpenCLstd_Half_divide = 68, | 
|  | OpenCLstd_Half_exp = 69, | 
|  | OpenCLstd_Half_exp2 = 70, | 
|  | OpenCLstd_Half_exp10 = 71, | 
|  | OpenCLstd_Half_log = 72, | 
|  | OpenCLstd_Half_log2 = 73, | 
|  | OpenCLstd_Half_log10 = 74, | 
|  | OpenCLstd_Half_powr = 75, | 
|  | OpenCLstd_Half_recip = 76, | 
|  | OpenCLstd_Half_rsqrt = 77, | 
|  | OpenCLstd_Half_sin = 78, | 
|  | OpenCLstd_Half_sqrt = 79, | 
|  | OpenCLstd_Half_tan = 80, | 
|  | OpenCLstd_Native_cos = 81, | 
|  | OpenCLstd_Native_divide = 82, | 
|  | OpenCLstd_Native_exp = 83, | 
|  | OpenCLstd_Native_exp2 = 84, | 
|  | OpenCLstd_Native_exp10 = 85, | 
|  | OpenCLstd_Native_log = 86, | 
|  | OpenCLstd_Native_log2 = 87, | 
|  | OpenCLstd_Native_log10 = 88, | 
|  | OpenCLstd_Native_powr = 89, | 
|  | OpenCLstd_Native_recip = 90, | 
|  | OpenCLstd_Native_rsqrt = 91, | 
|  | OpenCLstd_Native_sin = 92, | 
|  | OpenCLstd_Native_sqrt = 93, | 
|  | OpenCLstd_Native_tan = 94, | 
|  |  | 
|  | // Section 2.2: Integer instructions | 
|  | OpenCLstd_SAbs = 141, | 
|  | OpenCLstd_SAbs_diff = 142, | 
|  | OpenCLstd_SAdd_sat = 143, | 
|  | OpenCLstd_UAdd_sat = 144, | 
|  | OpenCLstd_SHadd = 145, | 
|  | OpenCLstd_UHadd = 146, | 
|  | OpenCLstd_SRhadd = 147, | 
|  | OpenCLstd_URhadd = 148, | 
|  | OpenCLstd_SClamp = 149, | 
|  | OpenCLstd_UClamp = 150, | 
|  | OpenCLstd_Clz = 151, | 
|  | OpenCLstd_Ctz = 152, | 
|  | OpenCLstd_SMad_hi = 153, | 
|  | OpenCLstd_UMad_sat = 154, | 
|  | OpenCLstd_SMad_sat = 155, | 
|  | OpenCLstd_SMax = 156, | 
|  | OpenCLstd_UMax = 157, | 
|  | OpenCLstd_SMin = 158, | 
|  | OpenCLstd_UMin = 159, | 
|  | OpenCLstd_SMul_hi = 160, | 
|  | OpenCLstd_Rotate = 161, | 
|  | OpenCLstd_SSub_sat = 162, | 
|  | OpenCLstd_USub_sat = 163, | 
|  | OpenCLstd_U_Upsample = 164, | 
|  | OpenCLstd_S_Upsample = 165, | 
|  | OpenCLstd_Popcount = 166, | 
|  | OpenCLstd_SMad24 = 167, | 
|  | OpenCLstd_UMad24 = 168, | 
|  | OpenCLstd_SMul24 = 169, | 
|  | OpenCLstd_UMul24 = 170, | 
|  | OpenCLstd_UAbs = 201, | 
|  | OpenCLstd_UAbs_diff = 202, | 
|  | OpenCLstd_UMul_hi = 203, | 
|  | OpenCLstd_UMad_hi = 204, | 
|  |  | 
|  | // Section 2.3: Common instructions | 
|  | OpenCLstd_FClamp = 95, | 
|  | OpenCLstd_Degrees = 96, | 
|  | OpenCLstd_FMax_common = 97, | 
|  | OpenCLstd_FMin_common = 98, | 
|  | OpenCLstd_Mix = 99, | 
|  | OpenCLstd_Radians = 100, | 
|  | OpenCLstd_Step = 101, | 
|  | OpenCLstd_Smoothstep = 102, | 
|  | OpenCLstd_Sign = 103, | 
|  |  | 
|  | // Section 2.4: Geometric instructions | 
|  | OpenCLstd_Cross = 104, | 
|  | OpenCLstd_Distance = 105, | 
|  | OpenCLstd_Length = 106, | 
|  | OpenCLstd_Normalize = 107, | 
|  | OpenCLstd_Fast_distance = 108, | 
|  | OpenCLstd_Fast_length = 109, | 
|  | OpenCLstd_Fast_normalize = 110, | 
|  |  | 
|  | // Section 2.5: Relational instructions | 
|  | OpenCLstd_Bitselect = 186, | 
|  | OpenCLstd_Select = 187, | 
|  |  | 
|  | // Section 2.6: Vector Data Load and Store instructions | 
|  | OpenCLstd_Vloadn = 171, | 
|  | OpenCLstd_Vstoren = 172, | 
|  | OpenCLstd_Vload_half = 173, | 
|  | OpenCLstd_Vload_halfn = 174, | 
|  | OpenCLstd_Vstore_half = 175, | 
|  | OpenCLstd_Vstore_half_r = 176, | 
|  | OpenCLstd_Vstore_halfn = 177, | 
|  | OpenCLstd_Vstore_halfn_r = 178, | 
|  | OpenCLstd_Vloada_halfn = 179, | 
|  | OpenCLstd_Vstorea_halfn = 180, | 
|  | OpenCLstd_Vstorea_halfn_r = 181, | 
|  |  | 
|  | // Section 2.7: Miscellaneous Vector instructions | 
|  | OpenCLstd_Shuffle = 182, | 
|  | OpenCLstd_Shuffle2 = 183, | 
|  |  | 
|  | // Section 2.8: Misc instructions | 
|  | OpenCLstd_Printf = 184, | 
|  | OpenCLstd_Prefetch = 185, | 
|  | }; | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #endif  // #ifndef OPENCLstd_H |