1 /*
2 ** Copyright (c) 2015-2017 The Khronos Group Inc.
3 **
4 ** Permission is hereby granted, free of charge, to any person obtaining a copy
5 ** of this software and/or associated documentation files (the "Materials"),
6 ** to deal in the Materials without restriction, including without limitation
7 ** the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 ** and/or sell copies of the Materials, and to permit persons to whom the
9 ** Materials are furnished to do so, subject to the following conditions:
10 **
11 ** The above copyright notice and this permission notice shall be included in
12 ** all copies or substantial portions of the Materials.
13 **
14 ** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
15 ** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
16 ** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
17 **
18 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 ** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 ** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 ** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
24 ** IN THE MATERIALS.
25 */
26 
27 namespace OpenCLLIB {
28 
29 enum Entrypoints {
30 
31     // Section 2.1: Math extended instructions
32     Acos = 0,
33     Acosh = 1,
34     Acospi = 2,
35     Asin = 3,
36     Asinh = 4,
37     Asinpi = 5,
38     Atan = 6,
39     Atan2 = 7,
40     Atanh = 8,
41     Atanpi = 9,
42     Atan2pi = 10,
43     Cbrt = 11,
44     Ceil = 12,
45     Copysign = 13,
46     Cos = 14,
47     Cosh = 15,
48     Cospi = 16,
49     Erfc = 17,
50     Erf = 18,
51     Exp = 19,
52     Exp2 = 20,
53     Exp10 = 21,
54     Expm1 = 22,
55     Fabs = 23,
56     Fdim = 24,
57     Floor = 25,
58     Fma = 26,
59     Fmax = 27,
60     Fmin = 28,
61     Fmod = 29,
62     Fract = 30,
63     Frexp = 31,
64     Hypot = 32,
65     Ilogb = 33,
66     Ldexp = 34,
67     Lgamma = 35,
68     Lgamma_r = 36,
69     Log = 37,
70     Log2 = 38,
71     Log10 = 39,
72     Log1p = 40,
73     Logb = 41,
74     Mad = 42,
75     Maxmag = 43,
76     Minmag = 44,
77     Modf = 45,
78     Nan = 46,
79     Nextafter = 47,
80     Pow = 48,
81     Pown = 49,
82     Powr = 50,
83     Remainder = 51,
84     Remquo = 52,
85     Rint = 53,
86     Rootn = 54,
87     Round = 55,
88     Rsqrt = 56,
89     Sin = 57,
90     Sincos = 58,
91     Sinh = 59,
92     Sinpi = 60,
93     Sqrt = 61,
94     Tan = 62,
95     Tanh = 63,
96     Tanpi = 64,
97     Tgamma = 65,
98     Trunc = 66,
99     Half_cos = 67,
100     Half_divide = 68,
101     Half_exp = 69,
102     Half_exp2 = 70,
103     Half_exp10 = 71,
104     Half_log = 72,
105     Half_log2 = 73,
106     Half_log10 = 74,
107     Half_powr = 75,
108     Half_recip = 76,
109     Half_rsqrt = 77,
110     Half_sin = 78,
111     Half_sqrt = 79,
112     Half_tan = 80,
113     Native_cos = 81,
114     Native_divide = 82,
115     Native_exp = 83,
116     Native_exp2 = 84,
117     Native_exp10 = 85,
118     Native_log = 86,
119     Native_log2 = 87,
120     Native_log10 = 88,
121     Native_powr = 89,
122     Native_recip = 90,
123     Native_rsqrt = 91,
124     Native_sin = 92,
125     Native_sqrt = 93,
126     Native_tan = 94,
127 
128     // Section 2.2: Integer instructions
129     SAbs = 141,
130     SAbs_diff = 142,
131     SAdd_sat = 143,
132     UAdd_sat = 144,
133     SHadd = 145,
134     UHadd = 146,
135     SRhadd = 147,
136     URhadd = 148,
137     SClamp = 149,
138     UClamp = 150,
139     Clz = 151,
140     Ctz = 152,
141     SMad_hi = 153,
142     UMad_sat = 154,
143     SMad_sat = 155,
144     SMax = 156,
145     UMax = 157,
146     SMin = 158,
147     UMin = 159,
148     SMul_hi = 160,
149     Rotate = 161,
150     SSub_sat = 162,
151     USub_sat = 163,
152     U_Upsample = 164,
153     S_Upsample = 165,
154     Popcount = 166,
155     SMad24 = 167,
156     UMad24 = 168,
157     SMul24 = 169,
158     UMul24 = 170,
159     UAbs = 201,
160     UAbs_diff = 202,
161     UMul_hi = 203,
162     UMad_hi = 204,
163 
164     // Section 2.3: Common instructions
165     FClamp = 95,
166     Degrees = 96,
167     FMax_common = 97,
168     FMin_common = 98,
169     Mix = 99,
170     Radians = 100,
171     Step = 101,
172     Smoothstep = 102,
173     Sign = 103,
174 
175     // Section 2.4: Geometric instructions
176     Cross = 104,
177     Distance = 105,
178     Length = 106,
179     Normalize = 107,
180     Fast_distance = 108,
181     Fast_length = 109,
182     Fast_normalize = 110,
183 
184     // Section 2.5: Relational instructions
185     Bitselect = 186,
186     Select = 187,
187 
188     // Section 2.6: Vector Data Load and Store instructions
189     Vloadn = 171,
190     Vstoren = 172,
191     Vload_half = 173,
192     Vload_halfn = 174,
193     Vstore_half = 175,
194     Vstore_half_r = 176,
195     Vstore_halfn = 177,
196     Vstore_halfn_r = 178,
197     Vloada_halfn = 179,
198     Vstorea_halfn = 180,
199     Vstorea_halfn_r = 181,
200 
201     // Section 2.7: Miscellaneous Vector instructions
202     Shuffle = 182,
203     Shuffle2 = 183,
204 
205     // Section 2.8: Misc instructions
206     Printf = 184,
207     Prefetch = 185,
208 };
209 
210 } // end namespace OpenCLLIB
211