/* ** 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