402 lines
9.7 KiB
C++
402 lines
9.7 KiB
C++
/*
|
|
** 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
|