Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/compiler/spirv/OpenCL.std.h
4545 views
1
/*
2
** Copyright (c) 2015-2019 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
#ifndef OPENCLstd_H
28
#define OPENCLstd_H
29
30
#ifdef __cplusplus
31
namespace OpenCLLIB {
32
33
enum Entrypoints {
34
35
// Section 2.1: Math extended instructions
36
Acos = 0,
37
Acosh = 1,
38
Acospi = 2,
39
Asin = 3,
40
Asinh = 4,
41
Asinpi = 5,
42
Atan = 6,
43
Atan2 = 7,
44
Atanh = 8,
45
Atanpi = 9,
46
Atan2pi = 10,
47
Cbrt = 11,
48
Ceil = 12,
49
Copysign = 13,
50
Cos = 14,
51
Cosh = 15,
52
Cospi = 16,
53
Erfc = 17,
54
Erf = 18,
55
Exp = 19,
56
Exp2 = 20,
57
Exp10 = 21,
58
Expm1 = 22,
59
Fabs = 23,
60
Fdim = 24,
61
Floor = 25,
62
Fma = 26,
63
Fmax = 27,
64
Fmin = 28,
65
Fmod = 29,
66
Fract = 30,
67
Frexp = 31,
68
Hypot = 32,
69
Ilogb = 33,
70
Ldexp = 34,
71
Lgamma = 35,
72
Lgamma_r = 36,
73
Log = 37,
74
Log2 = 38,
75
Log10 = 39,
76
Log1p = 40,
77
Logb = 41,
78
Mad = 42,
79
Maxmag = 43,
80
Minmag = 44,
81
Modf = 45,
82
Nan = 46,
83
Nextafter = 47,
84
Pow = 48,
85
Pown = 49,
86
Powr = 50,
87
Remainder = 51,
88
Remquo = 52,
89
Rint = 53,
90
Rootn = 54,
91
Round = 55,
92
Rsqrt = 56,
93
Sin = 57,
94
Sincos = 58,
95
Sinh = 59,
96
Sinpi = 60,
97
Sqrt = 61,
98
Tan = 62,
99
Tanh = 63,
100
Tanpi = 64,
101
Tgamma = 65,
102
Trunc = 66,
103
Half_cos = 67,
104
Half_divide = 68,
105
Half_exp = 69,
106
Half_exp2 = 70,
107
Half_exp10 = 71,
108
Half_log = 72,
109
Half_log2 = 73,
110
Half_log10 = 74,
111
Half_powr = 75,
112
Half_recip = 76,
113
Half_rsqrt = 77,
114
Half_sin = 78,
115
Half_sqrt = 79,
116
Half_tan = 80,
117
Native_cos = 81,
118
Native_divide = 82,
119
Native_exp = 83,
120
Native_exp2 = 84,
121
Native_exp10 = 85,
122
Native_log = 86,
123
Native_log2 = 87,
124
Native_log10 = 88,
125
Native_powr = 89,
126
Native_recip = 90,
127
Native_rsqrt = 91,
128
Native_sin = 92,
129
Native_sqrt = 93,
130
Native_tan = 94,
131
132
// Section 2.2: Integer instructions
133
SAbs = 141,
134
SAbs_diff = 142,
135
SAdd_sat = 143,
136
UAdd_sat = 144,
137
SHadd = 145,
138
UHadd = 146,
139
SRhadd = 147,
140
URhadd = 148,
141
SClamp = 149,
142
UClamp = 150,
143
Clz = 151,
144
Ctz = 152,
145
SMad_hi = 153,
146
UMad_sat = 154,
147
SMad_sat = 155,
148
SMax = 156,
149
UMax = 157,
150
SMin = 158,
151
UMin = 159,
152
SMul_hi = 160,
153
Rotate = 161,
154
SSub_sat = 162,
155
USub_sat = 163,
156
U_Upsample = 164,
157
S_Upsample = 165,
158
Popcount = 166,
159
SMad24 = 167,
160
UMad24 = 168,
161
SMul24 = 169,
162
UMul24 = 170,
163
UAbs = 201,
164
UAbs_diff = 202,
165
UMul_hi = 203,
166
UMad_hi = 204,
167
168
// Section 2.3: Common instructions
169
FClamp = 95,
170
Degrees = 96,
171
FMax_common = 97,
172
FMin_common = 98,
173
Mix = 99,
174
Radians = 100,
175
Step = 101,
176
Smoothstep = 102,
177
Sign = 103,
178
179
// Section 2.4: Geometric instructions
180
Cross = 104,
181
Distance = 105,
182
Length = 106,
183
Normalize = 107,
184
Fast_distance = 108,
185
Fast_length = 109,
186
Fast_normalize = 110,
187
188
// Section 2.5: Relational instructions
189
Bitselect = 186,
190
Select = 187,
191
192
// Section 2.6: Vector Data Load and Store instructions
193
Vloadn = 171,
194
Vstoren = 172,
195
Vload_half = 173,
196
Vload_halfn = 174,
197
Vstore_half = 175,
198
Vstore_half_r = 176,
199
Vstore_halfn = 177,
200
Vstore_halfn_r = 178,
201
Vloada_halfn = 179,
202
Vstorea_halfn = 180,
203
Vstorea_halfn_r = 181,
204
205
// Section 2.7: Miscellaneous Vector instructions
206
Shuffle = 182,
207
Shuffle2 = 183,
208
209
// Section 2.8: Misc instructions
210
Printf = 184,
211
Prefetch = 185,
212
};
213
214
} // end namespace OpenCLLIB
215
216
#else
217
218
enum OpenCLstd_Entrypoints {
219
220
// Section 2.1: Math extended instructions
221
OpenCLstd_Acos = 0,
222
OpenCLstd_Acosh = 1,
223
OpenCLstd_Acospi = 2,
224
OpenCLstd_Asin = 3,
225
OpenCLstd_Asinh = 4,
226
OpenCLstd_Asinpi = 5,
227
OpenCLstd_Atan = 6,
228
OpenCLstd_Atan2 = 7,
229
OpenCLstd_Atanh = 8,
230
OpenCLstd_Atanpi = 9,
231
OpenCLstd_Atan2pi = 10,
232
OpenCLstd_Cbrt = 11,
233
OpenCLstd_Ceil = 12,
234
OpenCLstd_Copysign = 13,
235
OpenCLstd_Cos = 14,
236
OpenCLstd_Cosh = 15,
237
OpenCLstd_Cospi = 16,
238
OpenCLstd_Erfc = 17,
239
OpenCLstd_Erf = 18,
240
OpenCLstd_Exp = 19,
241
OpenCLstd_Exp2 = 20,
242
OpenCLstd_Exp10 = 21,
243
OpenCLstd_Expm1 = 22,
244
OpenCLstd_Fabs = 23,
245
OpenCLstd_Fdim = 24,
246
OpenCLstd_Floor = 25,
247
OpenCLstd_Fma = 26,
248
OpenCLstd_Fmax = 27,
249
OpenCLstd_Fmin = 28,
250
OpenCLstd_Fmod = 29,
251
OpenCLstd_Fract = 30,
252
OpenCLstd_Frexp = 31,
253
OpenCLstd_Hypot = 32,
254
OpenCLstd_Ilogb = 33,
255
OpenCLstd_Ldexp = 34,
256
OpenCLstd_Lgamma = 35,
257
OpenCLstd_Lgamma_r = 36,
258
OpenCLstd_Log = 37,
259
OpenCLstd_Log2 = 38,
260
OpenCLstd_Log10 = 39,
261
OpenCLstd_Log1p = 40,
262
OpenCLstd_Logb = 41,
263
OpenCLstd_Mad = 42,
264
OpenCLstd_Maxmag = 43,
265
OpenCLstd_Minmag = 44,
266
OpenCLstd_Modf = 45,
267
OpenCLstd_Nan = 46,
268
OpenCLstd_Nextafter = 47,
269
OpenCLstd_Pow = 48,
270
OpenCLstd_Pown = 49,
271
OpenCLstd_Powr = 50,
272
OpenCLstd_Remainder = 51,
273
OpenCLstd_Remquo = 52,
274
OpenCLstd_Rint = 53,
275
OpenCLstd_Rootn = 54,
276
OpenCLstd_Round = 55,
277
OpenCLstd_Rsqrt = 56,
278
OpenCLstd_Sin = 57,
279
OpenCLstd_Sincos = 58,
280
OpenCLstd_Sinh = 59,
281
OpenCLstd_Sinpi = 60,
282
OpenCLstd_Sqrt = 61,
283
OpenCLstd_Tan = 62,
284
OpenCLstd_Tanh = 63,
285
OpenCLstd_Tanpi = 64,
286
OpenCLstd_Tgamma = 65,
287
OpenCLstd_Trunc = 66,
288
OpenCLstd_Half_cos = 67,
289
OpenCLstd_Half_divide = 68,
290
OpenCLstd_Half_exp = 69,
291
OpenCLstd_Half_exp2 = 70,
292
OpenCLstd_Half_exp10 = 71,
293
OpenCLstd_Half_log = 72,
294
OpenCLstd_Half_log2 = 73,
295
OpenCLstd_Half_log10 = 74,
296
OpenCLstd_Half_powr = 75,
297
OpenCLstd_Half_recip = 76,
298
OpenCLstd_Half_rsqrt = 77,
299
OpenCLstd_Half_sin = 78,
300
OpenCLstd_Half_sqrt = 79,
301
OpenCLstd_Half_tan = 80,
302
OpenCLstd_Native_cos = 81,
303
OpenCLstd_Native_divide = 82,
304
OpenCLstd_Native_exp = 83,
305
OpenCLstd_Native_exp2 = 84,
306
OpenCLstd_Native_exp10 = 85,
307
OpenCLstd_Native_log = 86,
308
OpenCLstd_Native_log2 = 87,
309
OpenCLstd_Native_log10 = 88,
310
OpenCLstd_Native_powr = 89,
311
OpenCLstd_Native_recip = 90,
312
OpenCLstd_Native_rsqrt = 91,
313
OpenCLstd_Native_sin = 92,
314
OpenCLstd_Native_sqrt = 93,
315
OpenCLstd_Native_tan = 94,
316
317
// Section 2.2: Integer instructions
318
OpenCLstd_SAbs = 141,
319
OpenCLstd_SAbs_diff = 142,
320
OpenCLstd_SAdd_sat = 143,
321
OpenCLstd_UAdd_sat = 144,
322
OpenCLstd_SHadd = 145,
323
OpenCLstd_UHadd = 146,
324
OpenCLstd_SRhadd = 147,
325
OpenCLstd_URhadd = 148,
326
OpenCLstd_SClamp = 149,
327
OpenCLstd_UClamp = 150,
328
OpenCLstd_Clz = 151,
329
OpenCLstd_Ctz = 152,
330
OpenCLstd_SMad_hi = 153,
331
OpenCLstd_UMad_sat = 154,
332
OpenCLstd_SMad_sat = 155,
333
OpenCLstd_SMax = 156,
334
OpenCLstd_UMax = 157,
335
OpenCLstd_SMin = 158,
336
OpenCLstd_UMin = 159,
337
OpenCLstd_SMul_hi = 160,
338
OpenCLstd_Rotate = 161,
339
OpenCLstd_SSub_sat = 162,
340
OpenCLstd_USub_sat = 163,
341
OpenCLstd_U_Upsample = 164,
342
OpenCLstd_S_Upsample = 165,
343
OpenCLstd_Popcount = 166,
344
OpenCLstd_SMad24 = 167,
345
OpenCLstd_UMad24 = 168,
346
OpenCLstd_SMul24 = 169,
347
OpenCLstd_UMul24 = 170,
348
OpenCLstd_UAbs = 201,
349
OpenCLstd_UAbs_diff = 202,
350
OpenCLstd_UMul_hi = 203,
351
OpenCLstd_UMad_hi = 204,
352
353
// Section 2.3: Common instructions
354
OpenCLstd_FClamp = 95,
355
OpenCLstd_Degrees = 96,
356
OpenCLstd_FMax_common = 97,
357
OpenCLstd_FMin_common = 98,
358
OpenCLstd_Mix = 99,
359
OpenCLstd_Radians = 100,
360
OpenCLstd_Step = 101,
361
OpenCLstd_Smoothstep = 102,
362
OpenCLstd_Sign = 103,
363
364
// Section 2.4: Geometric instructions
365
OpenCLstd_Cross = 104,
366
OpenCLstd_Distance = 105,
367
OpenCLstd_Length = 106,
368
OpenCLstd_Normalize = 107,
369
OpenCLstd_Fast_distance = 108,
370
OpenCLstd_Fast_length = 109,
371
OpenCLstd_Fast_normalize = 110,
372
373
// Section 2.5: Relational instructions
374
OpenCLstd_Bitselect = 186,
375
OpenCLstd_Select = 187,
376
377
// Section 2.6: Vector Data Load and Store instructions
378
OpenCLstd_Vloadn = 171,
379
OpenCLstd_Vstoren = 172,
380
OpenCLstd_Vload_half = 173,
381
OpenCLstd_Vload_halfn = 174,
382
OpenCLstd_Vstore_half = 175,
383
OpenCLstd_Vstore_half_r = 176,
384
OpenCLstd_Vstore_halfn = 177,
385
OpenCLstd_Vstore_halfn_r = 178,
386
OpenCLstd_Vloada_halfn = 179,
387
OpenCLstd_Vstorea_halfn = 180,
388
OpenCLstd_Vstorea_halfn_r = 181,
389
390
// Section 2.7: Miscellaneous Vector instructions
391
OpenCLstd_Shuffle = 182,
392
OpenCLstd_Shuffle2 = 183,
393
394
// Section 2.8: Misc instructions
395
OpenCLstd_Printf = 184,
396
OpenCLstd_Prefetch = 185,
397
};
398
399
#endif
400
401
#endif // #ifndef OPENCLstd_H
402
403