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