blob: 5da471cc56c9c222d37ee742478998b8f2781442 [file] [log] [blame]
SJW173c7e92020-03-16 08:44:47 -05001// Copyright 2019 The Clspv Authors. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef CLSPV_LIB_BUILTINSMAP_INC_
16#define CLSPV_LIB_BUILTINSMAP_INC_
17
Marco Antognini7e338402021-03-15 12:48:37 +000018#include <cstdint>
19
SJW173c7e92020-03-16 08:44:47 -050020////////////////////////////////////////////////////////////////////////////////
21// utilities for const char* map keys
22struct cstr_hash {
Marco Antognini7e338402021-03-15 12:48:37 +000023#define FNV_PRIME_64 UINT64_C(1099511628211)
24#define FNV_OFFSET_64 UINT64_C(14695981039346656037)
SJW173c7e92020-03-16 08:44:47 -050025 // hash function for const char* hashmap based on FNV-1a
Marco Antognini7e338402021-03-15 12:48:37 +000026 std::uint64_t operator()(const char *cstr) const {
27 std::uint64_t hash = FNV_OFFSET_64;
SJW173c7e92020-03-16 08:44:47 -050028 for (char c = *cstr; c != '\0'; c = *(++cstr)) {
Marco Antognini7e338402021-03-15 12:48:37 +000029 hash ^= static_cast<std::uint64_t>(c);
30 hash *= static_cast<std::uint64_t>(FNV_PRIME_64);
SJW173c7e92020-03-16 08:44:47 -050031 }
32 return hash;
33 }
34};
35
36struct cstr_eq {
37 // Returns true if the two C-style strings are equal. Assumes they are both
38 // null-terminated.
39 bool operator()(const char *a, const char *b) const {
40 return strcmp(a, b) == 0;
41 }
42};
43
44// static map of builtin function names
45static std::unordered_map<const char *, Builtins::BuiltinType, cstr_hash,
46 cstr_eq>
47 s_func_map = {
48
49 // Async
50 {"async_work_group_copy", Builtins::kAsyncWorkGroupCopy},
51 {"async_work_group_strided_copy", Builtins::kAsyncWorkGroupStridedCopy},
52 {"wait_group_events", Builtins::kWaitGroupEvents},
53 {"prefetch", Builtins::kPrefetch},
54
55 // Atomic
56 {"atomic_init", Builtins::kAtomicInit},
57 {"atomic_add", Builtins::kAtomicAdd},
58 {"atom_add", Builtins::kAtomicAdd},
59 {"atomic_sub", Builtins::kAtomicSub},
60 {"atom_sub", Builtins::kAtomicSub},
61 {"atomic_inc", Builtins::kAtomicInc},
62 {"atom_inc", Builtins::kAtomicInc},
63 {"atomic_dec", Builtins::kAtomicDec},
64 {"atom_dec", Builtins::kAtomicDec},
65 {"atomic_xchg", Builtins::kAtomicXchg},
66 {"atom_xchg", Builtins::kAtomicXchg},
67 {"atomic_cmpxchg", Builtins::kAtomicCmpxchg},
68 {"atom_cmpxchg", Builtins::kAtomicCmpxchg},
69 {"atomic_min", Builtins::kAtomicMin},
70 {"atom_min", Builtins::kAtomicMin},
71 {"atomic_max", Builtins::kAtomicMax},
72 {"atom_max", Builtins::kAtomicMax},
73 {"atomic_and", Builtins::kAtomicAnd},
74 {"atom_and", Builtins::kAtomicAnd},
75 {"atomic_or", Builtins::kAtomicOr},
76 {"atom_or", Builtins::kAtomicOr},
77 {"atomic_xor", Builtins::kAtomicXor},
78 {"atom_xor", Builtins::kAtomicXor},
79 {"atomic_work_item_fence", Builtins::kAtomicWorkItemFence},
80 {"atomic_store", Builtins::kAtomicStore},
81 {"atomic_store_explicit", Builtins::kAtomicStoreExplicit},
82 {"atomic_load", Builtins::kAtomicLoad},
83 {"atomic_load_explicit", Builtins::kAtomicLoadExplicit},
84 {"atomic_exchange", Builtins::kAtomicExchange},
85 {"atomic_exchange_explicit", Builtins::kAtomicExchangeExplicit},
86 {"atomic_compare_exchange_strong",
87 Builtins::kAtomicCompareExchangeStrong},
88 {"atomic_compare_exchange_strong_explicit",
89 Builtins::kAtomicCompareExchangeStrongExplicit},
90 {"atomic_compare_exchange_weak", Builtins::kAtomicCompareExchangeWeak},
91 {"atomic_compare_exchange_weak_explicit",
92 Builtins::kAtomicCompareExchangeWeakExplicit},
alan-baker4986eff2020-10-29 13:38:00 -040093 {"atomic_fetch_add", Builtins::kAtomicFetchAdd},
94 {"atomic_fetch_add_explicit", Builtins::kAtomicFetchAddExplicit},
95 {"atomic_fetch_sub", Builtins::kAtomicFetchSub},
96 {"atomic_fetch_sub_explicit", Builtins::kAtomicFetchSubExplicit},
97 {"atomic_fetch_or", Builtins::kAtomicFetchOr},
98 {"atomic_fetch_or_explicit", Builtins::kAtomicFetchOrExplicit},
99 {"atomic_fetch_xor", Builtins::kAtomicFetchXor},
100 {"atomic_fetch_xor_explicit", Builtins::kAtomicFetchXorExplicit},
101 {"atomic_fetch_and", Builtins::kAtomicFetchAnd},
102 {"atomic_fetch_and_explicit", Builtins::kAtomicFetchAndExplicit},
103 {"atomic_fetch_min", Builtins::kAtomicFetchMin},
104 {"atomic_fetch_min_explicit", Builtins::kAtomicFetchMinExplicit},
105 {"atomic_fetch_max", Builtins::kAtomicFetchMax},
106 {"atomic_fetch_max_explicit", Builtins::kAtomicFetchMaxExplicit},
SJW173c7e92020-03-16 08:44:47 -0500107 {"atomic_flag_test_and_set", Builtins::kAtomicFlagTestAndSet},
108 {"atomic_flag_test_and_set_explicit",
109 Builtins::kAtomicFlagTestAndSetExplicit},
110 {"atomic_flag_clear", Builtins::kAtomicFlagClear},
111 {"atomic_flag_clear_explicit", Builtins::kAtomicFlagClearExplicit},
112
113 // Common
114 {"degrees", Builtins::kDegrees},
115 {"mix", Builtins::kMix},
116 {"radians", Builtins::kRadians},
117 {"sign", Builtins::kSign},
118 {"smoothstep", Builtins::kSmoothstep},
119 {"step", Builtins::kStep},
120
121 // Convert
122 {"convert_char", Builtins::kConvert},
123 {"convert_char_rte", Builtins::kConvert},
124 {"convert_char_rtz", Builtins::kConvert},
125 {"convert_char_rtp", Builtins::kConvert},
126 {"convert_char_rtn", Builtins::kConvert},
127 {"convert_char_sat", Builtins::kConvert},
128 {"convert_char_sat_rte", Builtins::kConvert},
129 {"convert_char_sat_rtz", Builtins::kConvert},
130 {"convert_char_sat_rtp", Builtins::kConvert},
131 {"convert_char_sat_rtn", Builtins::kConvert},
132 {"convert_char", Builtins::kConvert},
133 {"convert_char_rte", Builtins::kConvert},
134 {"convert_char_rtz", Builtins::kConvert},
135 {"convert_char_rtp", Builtins::kConvert},
136 {"convert_char_rtn", Builtins::kConvert},
137 {"convert_char_sat", Builtins::kConvert},
138 {"convert_char_sat_rte", Builtins::kConvert},
139 {"convert_char_sat_rtz", Builtins::kConvert},
140 {"convert_char_sat_rtp", Builtins::kConvert},
141 {"convert_char_sat_rtn", Builtins::kConvert},
142 {"convert_char2", Builtins::kConvert},
143 {"convert_char2_rte", Builtins::kConvert},
144 {"convert_char2_rtz", Builtins::kConvert},
145 {"convert_char2_rtp", Builtins::kConvert},
146 {"convert_char2_rtn", Builtins::kConvert},
147 {"convert_char2_sat", Builtins::kConvert},
148 {"convert_char2_sat_rte", Builtins::kConvert},
149 {"convert_char2_sat_rtz", Builtins::kConvert},
150 {"convert_char2_sat_rtp", Builtins::kConvert},
151 {"convert_char2_sat_rtn", Builtins::kConvert},
152 {"convert_char3", Builtins::kConvert},
153 {"convert_char3_rte", Builtins::kConvert},
154 {"convert_char3_rtz", Builtins::kConvert},
155 {"convert_char3_rtp", Builtins::kConvert},
156 {"convert_char3_rtn", Builtins::kConvert},
157 {"convert_char3_sat", Builtins::kConvert},
158 {"convert_char3_sat_rte", Builtins::kConvert},
159 {"convert_char3_sat_rtz", Builtins::kConvert},
160 {"convert_char3_sat_rtp", Builtins::kConvert},
161 {"convert_char3_sat_rtn", Builtins::kConvert},
162 {"convert_char4", Builtins::kConvert},
163 {"convert_char4_rte", Builtins::kConvert},
164 {"convert_char4_rtz", Builtins::kConvert},
165 {"convert_char4_rtp", Builtins::kConvert},
166 {"convert_char4_rtn", Builtins::kConvert},
167 {"convert_char4_sat", Builtins::kConvert},
168 {"convert_char4_sat_rte", Builtins::kConvert},
169 {"convert_char4_sat_rtz", Builtins::kConvert},
170 {"convert_char4_sat_rtp", Builtins::kConvert},
171 {"convert_char4_sat_rtn", Builtins::kConvert},
172 {"convert_char8", Builtins::kConvert},
173 {"convert_char8_rte", Builtins::kConvert},
174 {"convert_char8_rtz", Builtins::kConvert},
175 {"convert_char8_rtp", Builtins::kConvert},
176 {"convert_char8_rtn", Builtins::kConvert},
177 {"convert_char8_sat", Builtins::kConvert},
178 {"convert_char8_sat_rte", Builtins::kConvert},
179 {"convert_char8_sat_rtz", Builtins::kConvert},
180 {"convert_char8_sat_rtp", Builtins::kConvert},
181 {"convert_char8_sat_rtn", Builtins::kConvert},
182 {"convert_char16", Builtins::kConvert},
183 {"convert_char16_rte", Builtins::kConvert},
184 {"convert_char16_rtz", Builtins::kConvert},
185 {"convert_char16_rtp", Builtins::kConvert},
186 {"convert_char16_rtn", Builtins::kConvert},
187 {"convert_char16_sat", Builtins::kConvert},
188 {"convert_char16_sat_rte", Builtins::kConvert},
189 {"convert_char16_sat_rtz", Builtins::kConvert},
190 {"convert_char16_sat_rtp", Builtins::kConvert},
191 {"convert_char16_sat_rtn", Builtins::kConvert},
192 {"convert_uchar", Builtins::kConvert},
193 {"convert_uchar_rte", Builtins::kConvert},
194 {"convert_uchar_rtz", Builtins::kConvert},
195 {"convert_uchar_rtp", Builtins::kConvert},
196 {"convert_uchar_rtn", Builtins::kConvert},
197 {"convert_uchar_sat", Builtins::kConvert},
198 {"convert_uchar_sat_rte", Builtins::kConvert},
199 {"convert_uchar_sat_rtz", Builtins::kConvert},
200 {"convert_uchar_sat_rtp", Builtins::kConvert},
201 {"convert_uchar_sat_rtn", Builtins::kConvert},
202 {"convert_uchar", Builtins::kConvert},
203 {"convert_uchar_rte", Builtins::kConvert},
204 {"convert_uchar_rtz", Builtins::kConvert},
205 {"convert_uchar_rtp", Builtins::kConvert},
206 {"convert_uchar_rtn", Builtins::kConvert},
207 {"convert_uchar_sat", Builtins::kConvert},
208 {"convert_uchar_sat_rte", Builtins::kConvert},
209 {"convert_uchar_sat_rtz", Builtins::kConvert},
210 {"convert_uchar_sat_rtp", Builtins::kConvert},
211 {"convert_uchar_sat_rtn", Builtins::kConvert},
212 {"convert_uchar2", Builtins::kConvert},
213 {"convert_uchar2_rte", Builtins::kConvert},
214 {"convert_uchar2_rtz", Builtins::kConvert},
215 {"convert_uchar2_rtp", Builtins::kConvert},
216 {"convert_uchar2_rtn", Builtins::kConvert},
217 {"convert_uchar2_sat", Builtins::kConvert},
218 {"convert_uchar2_sat_rte", Builtins::kConvert},
219 {"convert_uchar2_sat_rtz", Builtins::kConvert},
220 {"convert_uchar2_sat_rtp", Builtins::kConvert},
221 {"convert_uchar2_sat_rtn", Builtins::kConvert},
222 {"convert_uchar3", Builtins::kConvert},
223 {"convert_uchar3_rte", Builtins::kConvert},
224 {"convert_uchar3_rtz", Builtins::kConvert},
225 {"convert_uchar3_rtp", Builtins::kConvert},
226 {"convert_uchar3_rtn", Builtins::kConvert},
227 {"convert_uchar3_sat", Builtins::kConvert},
228 {"convert_uchar3_sat_rte", Builtins::kConvert},
229 {"convert_uchar3_sat_rtz", Builtins::kConvert},
230 {"convert_uchar3_sat_rtp", Builtins::kConvert},
231 {"convert_uchar3_sat_rtn", Builtins::kConvert},
232 {"convert_uchar4", Builtins::kConvert},
233 {"convert_uchar4_rte", Builtins::kConvert},
234 {"convert_uchar4_rtz", Builtins::kConvert},
235 {"convert_uchar4_rtp", Builtins::kConvert},
236 {"convert_uchar4_rtn", Builtins::kConvert},
237 {"convert_uchar4_sat", Builtins::kConvert},
238 {"convert_uchar4_sat_rte", Builtins::kConvert},
239 {"convert_uchar4_sat_rtz", Builtins::kConvert},
240 {"convert_uchar4_sat_rtp", Builtins::kConvert},
241 {"convert_uchar4_sat_rtn", Builtins::kConvert},
242 {"convert_uchar8", Builtins::kConvert},
243 {"convert_uchar8_rte", Builtins::kConvert},
244 {"convert_uchar8_rtz", Builtins::kConvert},
245 {"convert_uchar8_rtp", Builtins::kConvert},
246 {"convert_uchar8_rtn", Builtins::kConvert},
247 {"convert_uchar8_sat", Builtins::kConvert},
248 {"convert_uchar8_sat_rte", Builtins::kConvert},
249 {"convert_uchar8_sat_rtz", Builtins::kConvert},
250 {"convert_uchar8_sat_rtp", Builtins::kConvert},
251 {"convert_uchar8_sat_rtn", Builtins::kConvert},
252 {"convert_uchar16", Builtins::kConvert},
253 {"convert_uchar16_rte", Builtins::kConvert},
254 {"convert_uchar16_rtz", Builtins::kConvert},
255 {"convert_uchar16_rtp", Builtins::kConvert},
256 {"convert_uchar16_rtn", Builtins::kConvert},
257 {"convert_uchar16_sat", Builtins::kConvert},
258 {"convert_uchar16_sat_rte", Builtins::kConvert},
259 {"convert_uchar16_sat_rtz", Builtins::kConvert},
260 {"convert_uchar16_sat_rtp", Builtins::kConvert},
261 {"convert_uchar16_sat_rtn", Builtins::kConvert},
262 {"convert_short", Builtins::kConvert},
263 {"convert_short_rte", Builtins::kConvert},
264 {"convert_short_rtz", Builtins::kConvert},
265 {"convert_short_rtp", Builtins::kConvert},
266 {"convert_short_rtn", Builtins::kConvert},
267 {"convert_short_sat", Builtins::kConvert},
268 {"convert_short_sat_rte", Builtins::kConvert},
269 {"convert_short_sat_rtz", Builtins::kConvert},
270 {"convert_short_sat_rtp", Builtins::kConvert},
271 {"convert_short_sat_rtn", Builtins::kConvert},
272 {"convert_short", Builtins::kConvert},
273 {"convert_short_rte", Builtins::kConvert},
274 {"convert_short_rtz", Builtins::kConvert},
275 {"convert_short_rtp", Builtins::kConvert},
276 {"convert_short_rtn", Builtins::kConvert},
277 {"convert_short_sat", Builtins::kConvert},
278 {"convert_short_sat_rte", Builtins::kConvert},
279 {"convert_short_sat_rtz", Builtins::kConvert},
280 {"convert_short_sat_rtp", Builtins::kConvert},
281 {"convert_short_sat_rtn", Builtins::kConvert},
282 {"convert_short2", Builtins::kConvert},
283 {"convert_short2_rte", Builtins::kConvert},
284 {"convert_short2_rtz", Builtins::kConvert},
285 {"convert_short2_rtp", Builtins::kConvert},
286 {"convert_short2_rtn", Builtins::kConvert},
287 {"convert_short2_sat", Builtins::kConvert},
288 {"convert_short2_sat_rte", Builtins::kConvert},
289 {"convert_short2_sat_rtz", Builtins::kConvert},
290 {"convert_short2_sat_rtp", Builtins::kConvert},
291 {"convert_short2_sat_rtn", Builtins::kConvert},
292 {"convert_short3", Builtins::kConvert},
293 {"convert_short3_rte", Builtins::kConvert},
294 {"convert_short3_rtz", Builtins::kConvert},
295 {"convert_short3_rtp", Builtins::kConvert},
296 {"convert_short3_rtn", Builtins::kConvert},
297 {"convert_short3_sat", Builtins::kConvert},
298 {"convert_short3_sat_rte", Builtins::kConvert},
299 {"convert_short3_sat_rtz", Builtins::kConvert},
300 {"convert_short3_sat_rtp", Builtins::kConvert},
301 {"convert_short3_sat_rtn", Builtins::kConvert},
302 {"convert_short4", Builtins::kConvert},
303 {"convert_short4_rte", Builtins::kConvert},
304 {"convert_short4_rtz", Builtins::kConvert},
305 {"convert_short4_rtp", Builtins::kConvert},
306 {"convert_short4_rtn", Builtins::kConvert},
307 {"convert_short4_sat", Builtins::kConvert},
308 {"convert_short4_sat_rte", Builtins::kConvert},
309 {"convert_short4_sat_rtz", Builtins::kConvert},
310 {"convert_short4_sat_rtp", Builtins::kConvert},
311 {"convert_short4_sat_rtn", Builtins::kConvert},
312 {"convert_short8", Builtins::kConvert},
313 {"convert_short8_rte", Builtins::kConvert},
314 {"convert_short8_rtz", Builtins::kConvert},
315 {"convert_short8_rtp", Builtins::kConvert},
316 {"convert_short8_rtn", Builtins::kConvert},
317 {"convert_short8_sat", Builtins::kConvert},
318 {"convert_short8_sat_rte", Builtins::kConvert},
319 {"convert_short8_sat_rtz", Builtins::kConvert},
320 {"convert_short8_sat_rtp", Builtins::kConvert},
321 {"convert_short8_sat_rtn", Builtins::kConvert},
322 {"convert_short16", Builtins::kConvert},
323 {"convert_short16_rte", Builtins::kConvert},
324 {"convert_short16_rtz", Builtins::kConvert},
325 {"convert_short16_rtp", Builtins::kConvert},
326 {"convert_short16_rtn", Builtins::kConvert},
327 {"convert_short16_sat", Builtins::kConvert},
328 {"convert_short16_sat_rte", Builtins::kConvert},
329 {"convert_short16_sat_rtz", Builtins::kConvert},
330 {"convert_short16_sat_rtp", Builtins::kConvert},
331 {"convert_short16_sat_rtn", Builtins::kConvert},
332 {"convert_ushort", Builtins::kConvert},
333 {"convert_ushort_rte", Builtins::kConvert},
334 {"convert_ushort_rtz", Builtins::kConvert},
335 {"convert_ushort_rtp", Builtins::kConvert},
336 {"convert_ushort_rtn", Builtins::kConvert},
337 {"convert_ushort_sat", Builtins::kConvert},
338 {"convert_ushort_sat_rte", Builtins::kConvert},
339 {"convert_ushort_sat_rtz", Builtins::kConvert},
340 {"convert_ushort_sat_rtp", Builtins::kConvert},
341 {"convert_ushort_sat_rtn", Builtins::kConvert},
342 {"convert_ushort", Builtins::kConvert},
343 {"convert_ushort_rte", Builtins::kConvert},
344 {"convert_ushort_rtz", Builtins::kConvert},
345 {"convert_ushort_rtp", Builtins::kConvert},
346 {"convert_ushort_rtn", Builtins::kConvert},
347 {"convert_ushort_sat", Builtins::kConvert},
348 {"convert_ushort_sat_rte", Builtins::kConvert},
349 {"convert_ushort_sat_rtz", Builtins::kConvert},
350 {"convert_ushort_sat_rtp", Builtins::kConvert},
351 {"convert_ushort_sat_rtn", Builtins::kConvert},
352 {"convert_ushort2", Builtins::kConvert},
353 {"convert_ushort2_rte", Builtins::kConvert},
354 {"convert_ushort2_rtz", Builtins::kConvert},
355 {"convert_ushort2_rtp", Builtins::kConvert},
356 {"convert_ushort2_rtn", Builtins::kConvert},
357 {"convert_ushort2_sat", Builtins::kConvert},
358 {"convert_ushort2_sat_rte", Builtins::kConvert},
359 {"convert_ushort2_sat_rtz", Builtins::kConvert},
360 {"convert_ushort2_sat_rtp", Builtins::kConvert},
361 {"convert_ushort2_sat_rtn", Builtins::kConvert},
362 {"convert_ushort3", Builtins::kConvert},
363 {"convert_ushort3_rte", Builtins::kConvert},
364 {"convert_ushort3_rtz", Builtins::kConvert},
365 {"convert_ushort3_rtp", Builtins::kConvert},
366 {"convert_ushort3_rtn", Builtins::kConvert},
367 {"convert_ushort3_sat", Builtins::kConvert},
368 {"convert_ushort3_sat_rte", Builtins::kConvert},
369 {"convert_ushort3_sat_rtz", Builtins::kConvert},
370 {"convert_ushort3_sat_rtp", Builtins::kConvert},
371 {"convert_ushort3_sat_rtn", Builtins::kConvert},
372 {"convert_ushort4", Builtins::kConvert},
373 {"convert_ushort4_rte", Builtins::kConvert},
374 {"convert_ushort4_rtz", Builtins::kConvert},
375 {"convert_ushort4_rtp", Builtins::kConvert},
376 {"convert_ushort4_rtn", Builtins::kConvert},
377 {"convert_ushort4_sat", Builtins::kConvert},
378 {"convert_ushort4_sat_rte", Builtins::kConvert},
379 {"convert_ushort4_sat_rtz", Builtins::kConvert},
380 {"convert_ushort4_sat_rtp", Builtins::kConvert},
381 {"convert_ushort4_sat_rtn", Builtins::kConvert},
382 {"convert_ushort8", Builtins::kConvert},
383 {"convert_ushort8_rte", Builtins::kConvert},
384 {"convert_ushort8_rtz", Builtins::kConvert},
385 {"convert_ushort8_rtp", Builtins::kConvert},
386 {"convert_ushort8_rtn", Builtins::kConvert},
387 {"convert_ushort8_sat", Builtins::kConvert},
388 {"convert_ushort8_sat_rte", Builtins::kConvert},
389 {"convert_ushort8_sat_rtz", Builtins::kConvert},
390 {"convert_ushort8_sat_rtp", Builtins::kConvert},
391 {"convert_ushort8_sat_rtn", Builtins::kConvert},
392 {"convert_ushort16", Builtins::kConvert},
393 {"convert_ushort16_rte", Builtins::kConvert},
394 {"convert_ushort16_rtz", Builtins::kConvert},
395 {"convert_ushort16_rtp", Builtins::kConvert},
396 {"convert_ushort16_rtn", Builtins::kConvert},
397 {"convert_ushort16_sat", Builtins::kConvert},
398 {"convert_ushort16_sat_rte", Builtins::kConvert},
399 {"convert_ushort16_sat_rtz", Builtins::kConvert},
400 {"convert_ushort16_sat_rtp", Builtins::kConvert},
401 {"convert_ushort16_sat_rtn", Builtins::kConvert},
402 {"convert_int", Builtins::kConvert},
403 {"convert_int_rte", Builtins::kConvert},
404 {"convert_int_rtz", Builtins::kConvert},
405 {"convert_int_rtp", Builtins::kConvert},
406 {"convert_int_rtn", Builtins::kConvert},
407 {"convert_int_sat", Builtins::kConvert},
408 {"convert_int_sat_rte", Builtins::kConvert},
409 {"convert_int_sat_rtz", Builtins::kConvert},
410 {"convert_int_sat_rtp", Builtins::kConvert},
411 {"convert_int_sat_rtn", Builtins::kConvert},
412 {"convert_int", Builtins::kConvert},
413 {"convert_int_rte", Builtins::kConvert},
414 {"convert_int_rtz", Builtins::kConvert},
415 {"convert_int_rtp", Builtins::kConvert},
416 {"convert_int_rtn", Builtins::kConvert},
417 {"convert_int_sat", Builtins::kConvert},
418 {"convert_int_sat_rte", Builtins::kConvert},
419 {"convert_int_sat_rtz", Builtins::kConvert},
420 {"convert_int_sat_rtp", Builtins::kConvert},
421 {"convert_int_sat_rtn", Builtins::kConvert},
422 {"convert_int2", Builtins::kConvert},
423 {"convert_int2_rte", Builtins::kConvert},
424 {"convert_int2_rtz", Builtins::kConvert},
425 {"convert_int2_rtp", Builtins::kConvert},
426 {"convert_int2_rtn", Builtins::kConvert},
427 {"convert_int2_sat", Builtins::kConvert},
428 {"convert_int2_sat_rte", Builtins::kConvert},
429 {"convert_int2_sat_rtz", Builtins::kConvert},
430 {"convert_int2_sat_rtp", Builtins::kConvert},
431 {"convert_int2_sat_rtn", Builtins::kConvert},
432 {"convert_int3", Builtins::kConvert},
433 {"convert_int3_rte", Builtins::kConvert},
434 {"convert_int3_rtz", Builtins::kConvert},
435 {"convert_int3_rtp", Builtins::kConvert},
436 {"convert_int3_rtn", Builtins::kConvert},
437 {"convert_int3_sat", Builtins::kConvert},
438 {"convert_int3_sat_rte", Builtins::kConvert},
439 {"convert_int3_sat_rtz", Builtins::kConvert},
440 {"convert_int3_sat_rtp", Builtins::kConvert},
441 {"convert_int3_sat_rtn", Builtins::kConvert},
442 {"convert_int4", Builtins::kConvert},
443 {"convert_int4_rte", Builtins::kConvert},
444 {"convert_int4_rtz", Builtins::kConvert},
445 {"convert_int4_rtp", Builtins::kConvert},
446 {"convert_int4_rtn", Builtins::kConvert},
447 {"convert_int4_sat", Builtins::kConvert},
448 {"convert_int4_sat_rte", Builtins::kConvert},
449 {"convert_int4_sat_rtz", Builtins::kConvert},
450 {"convert_int4_sat_rtp", Builtins::kConvert},
451 {"convert_int4_sat_rtn", Builtins::kConvert},
452 {"convert_int8", Builtins::kConvert},
453 {"convert_int8_rte", Builtins::kConvert},
454 {"convert_int8_rtz", Builtins::kConvert},
455 {"convert_int8_rtp", Builtins::kConvert},
456 {"convert_int8_rtn", Builtins::kConvert},
457 {"convert_int8_sat", Builtins::kConvert},
458 {"convert_int8_sat_rte", Builtins::kConvert},
459 {"convert_int8_sat_rtz", Builtins::kConvert},
460 {"convert_int8_sat_rtp", Builtins::kConvert},
461 {"convert_int8_sat_rtn", Builtins::kConvert},
462 {"convert_int16", Builtins::kConvert},
463 {"convert_int16_rte", Builtins::kConvert},
464 {"convert_int16_rtz", Builtins::kConvert},
465 {"convert_int16_rtp", Builtins::kConvert},
466 {"convert_int16_rtn", Builtins::kConvert},
467 {"convert_int16_sat", Builtins::kConvert},
468 {"convert_int16_sat_rte", Builtins::kConvert},
469 {"convert_int16_sat_rtz", Builtins::kConvert},
470 {"convert_int16_sat_rtp", Builtins::kConvert},
471 {"convert_int16_sat_rtn", Builtins::kConvert},
472 {"convert_uint", Builtins::kConvert},
473 {"convert_uint_rte", Builtins::kConvert},
474 {"convert_uint_rtz", Builtins::kConvert},
475 {"convert_uint_rtp", Builtins::kConvert},
476 {"convert_uint_rtn", Builtins::kConvert},
477 {"convert_uint_sat", Builtins::kConvert},
478 {"convert_uint_sat_rte", Builtins::kConvert},
479 {"convert_uint_sat_rtz", Builtins::kConvert},
480 {"convert_uint_sat_rtp", Builtins::kConvert},
481 {"convert_uint_sat_rtn", Builtins::kConvert},
482 {"convert_uint", Builtins::kConvert},
483 {"convert_uint_rte", Builtins::kConvert},
484 {"convert_uint_rtz", Builtins::kConvert},
485 {"convert_uint_rtp", Builtins::kConvert},
486 {"convert_uint_rtn", Builtins::kConvert},
487 {"convert_uint_sat", Builtins::kConvert},
488 {"convert_uint_sat_rte", Builtins::kConvert},
489 {"convert_uint_sat_rtz", Builtins::kConvert},
490 {"convert_uint_sat_rtp", Builtins::kConvert},
491 {"convert_uint_sat_rtn", Builtins::kConvert},
492 {"convert_uint2", Builtins::kConvert},
493 {"convert_uint2_rte", Builtins::kConvert},
494 {"convert_uint2_rtz", Builtins::kConvert},
495 {"convert_uint2_rtp", Builtins::kConvert},
496 {"convert_uint2_rtn", Builtins::kConvert},
497 {"convert_uint2_sat", Builtins::kConvert},
498 {"convert_uint2_sat_rte", Builtins::kConvert},
499 {"convert_uint2_sat_rtz", Builtins::kConvert},
500 {"convert_uint2_sat_rtp", Builtins::kConvert},
501 {"convert_uint2_sat_rtn", Builtins::kConvert},
502 {"convert_uint3", Builtins::kConvert},
503 {"convert_uint3_rte", Builtins::kConvert},
504 {"convert_uint3_rtz", Builtins::kConvert},
505 {"convert_uint3_rtp", Builtins::kConvert},
506 {"convert_uint3_rtn", Builtins::kConvert},
507 {"convert_uint3_sat", Builtins::kConvert},
508 {"convert_uint3_sat_rte", Builtins::kConvert},
509 {"convert_uint3_sat_rtz", Builtins::kConvert},
510 {"convert_uint3_sat_rtp", Builtins::kConvert},
511 {"convert_uint3_sat_rtn", Builtins::kConvert},
512 {"convert_uint4", Builtins::kConvert},
513 {"convert_uint4_rte", Builtins::kConvert},
514 {"convert_uint4_rtz", Builtins::kConvert},
515 {"convert_uint4_rtp", Builtins::kConvert},
516 {"convert_uint4_rtn", Builtins::kConvert},
517 {"convert_uint4_sat", Builtins::kConvert},
518 {"convert_uint4_sat_rte", Builtins::kConvert},
519 {"convert_uint4_sat_rtz", Builtins::kConvert},
520 {"convert_uint4_sat_rtp", Builtins::kConvert},
521 {"convert_uint4_sat_rtn", Builtins::kConvert},
522 {"convert_uint8", Builtins::kConvert},
523 {"convert_uint8_rte", Builtins::kConvert},
524 {"convert_uint8_rtz", Builtins::kConvert},
525 {"convert_uint8_rtp", Builtins::kConvert},
526 {"convert_uint8_rtn", Builtins::kConvert},
527 {"convert_uint8_sat", Builtins::kConvert},
528 {"convert_uint8_sat_rte", Builtins::kConvert},
529 {"convert_uint8_sat_rtz", Builtins::kConvert},
530 {"convert_uint8_sat_rtp", Builtins::kConvert},
531 {"convert_uint8_sat_rtn", Builtins::kConvert},
532 {"convert_uint16", Builtins::kConvert},
533 {"convert_uint16_rte", Builtins::kConvert},
534 {"convert_uint16_rtz", Builtins::kConvert},
535 {"convert_uint16_rtp", Builtins::kConvert},
536 {"convert_uint16_rtn", Builtins::kConvert},
537 {"convert_uint16_sat", Builtins::kConvert},
538 {"convert_uint16_sat_rte", Builtins::kConvert},
539 {"convert_uint16_sat_rtz", Builtins::kConvert},
540 {"convert_uint16_sat_rtp", Builtins::kConvert},
541 {"convert_uint16_sat_rtn", Builtins::kConvert},
542 {"convert_long", Builtins::kConvert},
543 {"convert_long_rte", Builtins::kConvert},
544 {"convert_long_rtz", Builtins::kConvert},
545 {"convert_long_rtp", Builtins::kConvert},
546 {"convert_long_rtn", Builtins::kConvert},
547 {"convert_long_sat", Builtins::kConvert},
548 {"convert_long_sat_rte", Builtins::kConvert},
549 {"convert_long_sat_rtz", Builtins::kConvert},
550 {"convert_long_sat_rtp", Builtins::kConvert},
551 {"convert_long_sat_rtn", Builtins::kConvert},
552 {"convert_long", Builtins::kConvert},
553 {"convert_long_rte", Builtins::kConvert},
554 {"convert_long_rtz", Builtins::kConvert},
555 {"convert_long_rtp", Builtins::kConvert},
556 {"convert_long_rtn", Builtins::kConvert},
557 {"convert_long_sat", Builtins::kConvert},
558 {"convert_long_sat_rte", Builtins::kConvert},
559 {"convert_long_sat_rtz", Builtins::kConvert},
560 {"convert_long_sat_rtp", Builtins::kConvert},
561 {"convert_long_sat_rtn", Builtins::kConvert},
562 {"convert_long2", Builtins::kConvert},
563 {"convert_long2_rte", Builtins::kConvert},
564 {"convert_long2_rtz", Builtins::kConvert},
565 {"convert_long2_rtp", Builtins::kConvert},
566 {"convert_long2_rtn", Builtins::kConvert},
567 {"convert_long2_sat", Builtins::kConvert},
568 {"convert_long2_sat_rte", Builtins::kConvert},
569 {"convert_long2_sat_rtz", Builtins::kConvert},
570 {"convert_long2_sat_rtp", Builtins::kConvert},
571 {"convert_long2_sat_rtn", Builtins::kConvert},
572 {"convert_long3", Builtins::kConvert},
573 {"convert_long3_rte", Builtins::kConvert},
574 {"convert_long3_rtz", Builtins::kConvert},
575 {"convert_long3_rtp", Builtins::kConvert},
576 {"convert_long3_rtn", Builtins::kConvert},
577 {"convert_long3_sat", Builtins::kConvert},
578 {"convert_long3_sat_rte", Builtins::kConvert},
579 {"convert_long3_sat_rtz", Builtins::kConvert},
580 {"convert_long3_sat_rtp", Builtins::kConvert},
581 {"convert_long3_sat_rtn", Builtins::kConvert},
582 {"convert_long4", Builtins::kConvert},
583 {"convert_long4_rte", Builtins::kConvert},
584 {"convert_long4_rtz", Builtins::kConvert},
585 {"convert_long4_rtp", Builtins::kConvert},
586 {"convert_long4_rtn", Builtins::kConvert},
587 {"convert_long4_sat", Builtins::kConvert},
588 {"convert_long4_sat_rte", Builtins::kConvert},
589 {"convert_long4_sat_rtz", Builtins::kConvert},
590 {"convert_long4_sat_rtp", Builtins::kConvert},
591 {"convert_long4_sat_rtn", Builtins::kConvert},
592 {"convert_long8", Builtins::kConvert},
593 {"convert_long8_rte", Builtins::kConvert},
594 {"convert_long8_rtz", Builtins::kConvert},
595 {"convert_long8_rtp", Builtins::kConvert},
596 {"convert_long8_rtn", Builtins::kConvert},
597 {"convert_long8_sat", Builtins::kConvert},
598 {"convert_long8_sat_rte", Builtins::kConvert},
599 {"convert_long8_sat_rtz", Builtins::kConvert},
600 {"convert_long8_sat_rtp", Builtins::kConvert},
601 {"convert_long8_sat_rtn", Builtins::kConvert},
602 {"convert_long16", Builtins::kConvert},
603 {"convert_long16_rte", Builtins::kConvert},
604 {"convert_long16_rtz", Builtins::kConvert},
605 {"convert_long16_rtp", Builtins::kConvert},
606 {"convert_long16_rtn", Builtins::kConvert},
607 {"convert_long16_sat", Builtins::kConvert},
608 {"convert_long16_sat_rte", Builtins::kConvert},
609 {"convert_long16_sat_rtz", Builtins::kConvert},
610 {"convert_long16_sat_rtp", Builtins::kConvert},
611 {"convert_long16_sat_rtn", Builtins::kConvert},
612 {"convert_ulong", Builtins::kConvert},
613 {"convert_ulong_rte", Builtins::kConvert},
614 {"convert_ulong_rtz", Builtins::kConvert},
615 {"convert_ulong_rtp", Builtins::kConvert},
616 {"convert_ulong_rtn", Builtins::kConvert},
617 {"convert_ulong_sat", Builtins::kConvert},
618 {"convert_ulong_sat_rte", Builtins::kConvert},
619 {"convert_ulong_sat_rtz", Builtins::kConvert},
620 {"convert_ulong_sat_rtp", Builtins::kConvert},
621 {"convert_ulong_sat_rtn", Builtins::kConvert},
622 {"convert_ulong", Builtins::kConvert},
623 {"convert_ulong_rte", Builtins::kConvert},
624 {"convert_ulong_rtz", Builtins::kConvert},
625 {"convert_ulong_rtp", Builtins::kConvert},
626 {"convert_ulong_rtn", Builtins::kConvert},
627 {"convert_ulong_sat", Builtins::kConvert},
628 {"convert_ulong_sat_rte", Builtins::kConvert},
629 {"convert_ulong_sat_rtz", Builtins::kConvert},
630 {"convert_ulong_sat_rtp", Builtins::kConvert},
631 {"convert_ulong_sat_rtn", Builtins::kConvert},
632 {"convert_ulong2", Builtins::kConvert},
633 {"convert_ulong2_rte", Builtins::kConvert},
634 {"convert_ulong2_rtz", Builtins::kConvert},
635 {"convert_ulong2_rtp", Builtins::kConvert},
636 {"convert_ulong2_rtn", Builtins::kConvert},
637 {"convert_ulong2_sat", Builtins::kConvert},
638 {"convert_ulong2_sat_rte", Builtins::kConvert},
639 {"convert_ulong2_sat_rtz", Builtins::kConvert},
640 {"convert_ulong2_sat_rtp", Builtins::kConvert},
641 {"convert_ulong2_sat_rtn", Builtins::kConvert},
642 {"convert_ulong3", Builtins::kConvert},
643 {"convert_ulong3_rte", Builtins::kConvert},
644 {"convert_ulong3_rtz", Builtins::kConvert},
645 {"convert_ulong3_rtp", Builtins::kConvert},
646 {"convert_ulong3_rtn", Builtins::kConvert},
647 {"convert_ulong3_sat", Builtins::kConvert},
648 {"convert_ulong3_sat_rte", Builtins::kConvert},
649 {"convert_ulong3_sat_rtz", Builtins::kConvert},
650 {"convert_ulong3_sat_rtp", Builtins::kConvert},
651 {"convert_ulong3_sat_rtn", Builtins::kConvert},
652 {"convert_ulong4", Builtins::kConvert},
653 {"convert_ulong4_rte", Builtins::kConvert},
654 {"convert_ulong4_rtz", Builtins::kConvert},
655 {"convert_ulong4_rtp", Builtins::kConvert},
656 {"convert_ulong4_rtn", Builtins::kConvert},
657 {"convert_ulong4_sat", Builtins::kConvert},
658 {"convert_ulong4_sat_rte", Builtins::kConvert},
659 {"convert_ulong4_sat_rtz", Builtins::kConvert},
660 {"convert_ulong4_sat_rtp", Builtins::kConvert},
661 {"convert_ulong4_sat_rtn", Builtins::kConvert},
662 {"convert_ulong8", Builtins::kConvert},
663 {"convert_ulong8_rte", Builtins::kConvert},
664 {"convert_ulong8_rtz", Builtins::kConvert},
665 {"convert_ulong8_rtp", Builtins::kConvert},
666 {"convert_ulong8_rtn", Builtins::kConvert},
667 {"convert_ulong8_sat", Builtins::kConvert},
668 {"convert_ulong8_sat_rte", Builtins::kConvert},
669 {"convert_ulong8_sat_rtz", Builtins::kConvert},
670 {"convert_ulong8_sat_rtp", Builtins::kConvert},
671 {"convert_ulong8_sat_rtn", Builtins::kConvert},
672 {"convert_ulong16", Builtins::kConvert},
673 {"convert_ulong16_rte", Builtins::kConvert},
674 {"convert_ulong16_rtz", Builtins::kConvert},
675 {"convert_ulong16_rtp", Builtins::kConvert},
676 {"convert_ulong16_rtn", Builtins::kConvert},
677 {"convert_ulong16_sat", Builtins::kConvert},
678 {"convert_ulong16_sat_rte", Builtins::kConvert},
679 {"convert_ulong16_sat_rtz", Builtins::kConvert},
680 {"convert_ulong16_sat_rtp", Builtins::kConvert},
681 {"convert_ulong16_sat_rtn", Builtins::kConvert},
682 {"convert_half", Builtins::kConvert},
683 {"convert_half_rte", Builtins::kConvert},
684 {"convert_half_rtz", Builtins::kConvert},
685 {"convert_half_rtp", Builtins::kConvert},
686 {"convert_half_rtn", Builtins::kConvert},
687 {"convert_half_sat", Builtins::kConvert},
688 {"convert_half_sat_rte", Builtins::kConvert},
689 {"convert_half_sat_rtz", Builtins::kConvert},
690 {"convert_half_sat_rtp", Builtins::kConvert},
691 {"convert_half_sat_rtn", Builtins::kConvert},
692 {"convert_half", Builtins::kConvert},
693 {"convert_half_rte", Builtins::kConvert},
694 {"convert_half_rtz", Builtins::kConvert},
695 {"convert_half_rtp", Builtins::kConvert},
696 {"convert_half_rtn", Builtins::kConvert},
697 {"convert_half_sat", Builtins::kConvert},
698 {"convert_half_sat_rte", Builtins::kConvert},
699 {"convert_half_sat_rtz", Builtins::kConvert},
700 {"convert_half_sat_rtp", Builtins::kConvert},
701 {"convert_half_sat_rtn", Builtins::kConvert},
702 {"convert_half2", Builtins::kConvert},
703 {"convert_half2_rte", Builtins::kConvert},
704 {"convert_half2_rtz", Builtins::kConvert},
705 {"convert_half2_rtp", Builtins::kConvert},
706 {"convert_half2_rtn", Builtins::kConvert},
707 {"convert_half2_sat", Builtins::kConvert},
708 {"convert_half2_sat_rte", Builtins::kConvert},
709 {"convert_half2_sat_rtz", Builtins::kConvert},
710 {"convert_half2_sat_rtp", Builtins::kConvert},
711 {"convert_half2_sat_rtn", Builtins::kConvert},
712 {"convert_half3", Builtins::kConvert},
713 {"convert_half3_rte", Builtins::kConvert},
714 {"convert_half3_rtz", Builtins::kConvert},
715 {"convert_half3_rtp", Builtins::kConvert},
716 {"convert_half3_rtn", Builtins::kConvert},
717 {"convert_half3_sat", Builtins::kConvert},
718 {"convert_half3_sat_rte", Builtins::kConvert},
719 {"convert_half3_sat_rtz", Builtins::kConvert},
720 {"convert_half3_sat_rtp", Builtins::kConvert},
721 {"convert_half3_sat_rtn", Builtins::kConvert},
722 {"convert_half4", Builtins::kConvert},
723 {"convert_half4_rte", Builtins::kConvert},
724 {"convert_half4_rtz", Builtins::kConvert},
725 {"convert_half4_rtp", Builtins::kConvert},
726 {"convert_half4_rtn", Builtins::kConvert},
727 {"convert_half4_sat", Builtins::kConvert},
728 {"convert_half4_sat_rte", Builtins::kConvert},
729 {"convert_half4_sat_rtz", Builtins::kConvert},
730 {"convert_half4_sat_rtp", Builtins::kConvert},
731 {"convert_half4_sat_rtn", Builtins::kConvert},
732 {"convert_half8", Builtins::kConvert},
733 {"convert_half8_rte", Builtins::kConvert},
734 {"convert_half8_rtz", Builtins::kConvert},
735 {"convert_half8_rtp", Builtins::kConvert},
736 {"convert_half8_rtn", Builtins::kConvert},
737 {"convert_half8_sat", Builtins::kConvert},
738 {"convert_half8_sat_rte", Builtins::kConvert},
739 {"convert_half8_sat_rtz", Builtins::kConvert},
740 {"convert_half8_sat_rtp", Builtins::kConvert},
741 {"convert_half8_sat_rtn", Builtins::kConvert},
742 {"convert_half16", Builtins::kConvert},
743 {"convert_half16_rte", Builtins::kConvert},
744 {"convert_half16_rtz", Builtins::kConvert},
745 {"convert_half16_rtp", Builtins::kConvert},
746 {"convert_half16_rtn", Builtins::kConvert},
747 {"convert_half16_sat", Builtins::kConvert},
748 {"convert_half16_sat_rte", Builtins::kConvert},
749 {"convert_half16_sat_rtz", Builtins::kConvert},
750 {"convert_half16_sat_rtp", Builtins::kConvert},
751 {"convert_half16_sat_rtn", Builtins::kConvert},
752 {"convert_float", Builtins::kConvert},
753 {"convert_float_rte", Builtins::kConvert},
754 {"convert_float_rtz", Builtins::kConvert},
755 {"convert_float_rtp", Builtins::kConvert},
756 {"convert_float_rtn", Builtins::kConvert},
757 {"convert_float_sat", Builtins::kConvert},
758 {"convert_float_sat_rte", Builtins::kConvert},
759 {"convert_float_sat_rtz", Builtins::kConvert},
760 {"convert_float_sat_rtp", Builtins::kConvert},
761 {"convert_float_sat_rtn", Builtins::kConvert},
762 {"convert_float", Builtins::kConvert},
763 {"convert_float_rte", Builtins::kConvert},
764 {"convert_float_rtz", Builtins::kConvert},
765 {"convert_float_rtp", Builtins::kConvert},
766 {"convert_float_rtn", Builtins::kConvert},
767 {"convert_float_sat", Builtins::kConvert},
768 {"convert_float_sat_rte", Builtins::kConvert},
769 {"convert_float_sat_rtz", Builtins::kConvert},
770 {"convert_float_sat_rtp", Builtins::kConvert},
771 {"convert_float_sat_rtn", Builtins::kConvert},
772 {"convert_float2", Builtins::kConvert},
773 {"convert_float2_rte", Builtins::kConvert},
774 {"convert_float2_rtz", Builtins::kConvert},
775 {"convert_float2_rtp", Builtins::kConvert},
776 {"convert_float2_rtn", Builtins::kConvert},
777 {"convert_float2_sat", Builtins::kConvert},
778 {"convert_float2_sat_rte", Builtins::kConvert},
779 {"convert_float2_sat_rtz", Builtins::kConvert},
780 {"convert_float2_sat_rtp", Builtins::kConvert},
781 {"convert_float2_sat_rtn", Builtins::kConvert},
782 {"convert_float3", Builtins::kConvert},
783 {"convert_float3_rte", Builtins::kConvert},
784 {"convert_float3_rtz", Builtins::kConvert},
785 {"convert_float3_rtp", Builtins::kConvert},
786 {"convert_float3_rtn", Builtins::kConvert},
787 {"convert_float3_sat", Builtins::kConvert},
788 {"convert_float3_sat_rte", Builtins::kConvert},
789 {"convert_float3_sat_rtz", Builtins::kConvert},
790 {"convert_float3_sat_rtp", Builtins::kConvert},
791 {"convert_float3_sat_rtn", Builtins::kConvert},
792 {"convert_float4", Builtins::kConvert},
793 {"convert_float4_rte", Builtins::kConvert},
794 {"convert_float4_rtz", Builtins::kConvert},
795 {"convert_float4_rtp", Builtins::kConvert},
796 {"convert_float4_rtn", Builtins::kConvert},
797 {"convert_float4_sat", Builtins::kConvert},
798 {"convert_float4_sat_rte", Builtins::kConvert},
799 {"convert_float4_sat_rtz", Builtins::kConvert},
800 {"convert_float4_sat_rtp", Builtins::kConvert},
801 {"convert_float4_sat_rtn", Builtins::kConvert},
802 {"convert_float8", Builtins::kConvert},
803 {"convert_float8_rte", Builtins::kConvert},
804 {"convert_float8_rtz", Builtins::kConvert},
805 {"convert_float8_rtp", Builtins::kConvert},
806 {"convert_float8_rtn", Builtins::kConvert},
807 {"convert_float8_sat", Builtins::kConvert},
808 {"convert_float8_sat_rte", Builtins::kConvert},
809 {"convert_float8_sat_rtz", Builtins::kConvert},
810 {"convert_float8_sat_rtp", Builtins::kConvert},
811 {"convert_float8_sat_rtn", Builtins::kConvert},
812 {"convert_float16", Builtins::kConvert},
813 {"convert_float16_rte", Builtins::kConvert},
814 {"convert_float16_rtz", Builtins::kConvert},
815 {"convert_float16_rtp", Builtins::kConvert},
816 {"convert_float16_rtn", Builtins::kConvert},
817 {"convert_float16_sat", Builtins::kConvert},
818 {"convert_float16_sat_rte", Builtins::kConvert},
819 {"convert_float16_sat_rtz", Builtins::kConvert},
820 {"convert_float16_sat_rtp", Builtins::kConvert},
821 {"convert_float16_sat_rtn", Builtins::kConvert},
822
823 // Event
824 {"retain_event", Builtins::kRetainEvent},
825 {"release_event", Builtins::kReleaseEvent},
826 {"create_user_event", Builtins::kCreateUserEvent},
827 {"is_valid_event", Builtins::kIsValidEvent},
828 {"set_user_event_status", Builtins::kSetUserEventStatus},
829
830 // MemoryFence
831 {"mem_fence", Builtins::kMemFence},
832 {"read_mem_fence", Builtins::kReadMemFence},
833 {"write_mem_fence", Builtins::kWriteMemFence},
834
835 // Geometric
836 {"cross", Builtins::kCross},
837 {"dot", Builtins::kDot},
838 {"distance", Builtins::kDistance},
839 {"length", Builtins::kLength},
840 {"normalize", Builtins::kNormalize},
841 {"fast_distance", Builtins::kFastDistance},
842 {"fast_length", Builtins::kFastLength},
843 {"fast_normalize", Builtins::kFastNormalize},
844
845 // Image
846 {"read_imagef", Builtins::kReadImagef},
847 {"read_imagei", Builtins::kReadImagei},
848 {"read_imageui", Builtins::kReadImageui},
849 {"read_imageh", Builtins::kReadImageh},
850 {"write_imagef", Builtins::kWriteImagef},
851 {"write_imagei", Builtins::kWriteImagei},
852 {"write_imageui", Builtins::kWriteImageui},
853 {"write_imageh", Builtins::kWriteImageh},
854 {"get_image_width", Builtins::kGetImageWidth},
855 {"get_image_height", Builtins::kGetImageHeight},
856 {"get_image_depth", Builtins::kGetImageDepth},
857 {"get_image_channel_data_type", Builtins::kGetImageChannelDataType},
858 {"get_image_channel_order", Builtins::kGetImageChannelOrder},
859 {"get_image_dim", Builtins::kGetImageDim},
860 {"get_image_array_size", Builtins::kGetImageArraySize},
861 {"get_image_num_samples", Builtins::kGetImageNumSamples},
862
863 // Integer
864 {"abs", Builtins::kAbs},
865 {"abs_diff", Builtins::kAbsDiff},
866 {"add_sat", Builtins::kAddSat},
867 {"clamp", Builtins::kClamp},
868 {"clz", Builtins::kClz},
869 {"ctz", Builtins::kCtz},
870 {"hadd", Builtins::kHadd},
871 {"mad24", Builtins::kMad24},
872 {"mad_hi", Builtins::kMadHi},
873 {"mad_sat", Builtins::kMadSat},
874 {"max", Builtins::kMax},
875 {"min", Builtins::kMin},
876 {"mul24", Builtins::kMul24},
877 {"mul_hi", Builtins::kMulHi},
878 {"popcount", Builtins::kPopcount},
879 {"rhadd", Builtins::kRhadd},
880 {"rotate", Builtins::kRotate},
881 {"sub_sat", Builtins::kSubSat},
882 {"upsample", Builtins::kUpsample},
883
884 // Math
885 {"acos", Builtins::kAcos},
886 {"acosh", Builtins::kAcosh},
887 {"acospi", Builtins::kAcospi},
888 {"asin", Builtins::kAsin},
889 {"asinh", Builtins::kAsinh},
890 {"asinpi", Builtins::kAsinpi},
891 {"atan", Builtins::kAtan},
892 {"atan2", Builtins::kAtan2},
893 {"atanh", Builtins::kAtanh},
894 {"atanpi", Builtins::kAtanpi},
895 {"atan2pi", Builtins::kAtan2pi},
896 {"cbrt", Builtins::kCbrt},
897 {"ceil", Builtins::kCeil},
898 {"copysign", Builtins::kCopysign},
899 {"cos", Builtins::kCos},
900 {"half_cos", Builtins::kHalfCos},
901 {"native_cos", Builtins::kNativeCos},
902 {"cosh", Builtins::kCosh},
903 {"cospi", Builtins::kCospi},
904 {"half_divide", Builtins::kHalfDivide},
905 {"native_divide", Builtins::kNativeDivide},
906 {"erf", Builtins::kErf},
907 {"erfc", Builtins::kErfc},
908 {"exp", Builtins::kExp},
909 {"half_exp", Builtins::kHalfExp},
910 {"native_exp", Builtins::kNativeExp},
911 {"exp2", Builtins::kExp2},
912 {"half_exp2", Builtins::kHalfExp2},
913 {"native_exp2", Builtins::kNativeExp2},
914 {"exp10", Builtins::kExp10},
915 {"half_exp10", Builtins::kHalfExp10},
916 {"native_exp10", Builtins::kNativeExp10},
917 {"expm1", Builtins::kExpm1},
918 {"fabs", Builtins::kFabs},
919 {"fdim", Builtins::kFdim},
920 {"floor", Builtins::kFloor},
921 {"fma", Builtins::kFma},
922 {"fmax", Builtins::kFmax},
923 {"fmin", Builtins::kFmin},
924 {"fmod", Builtins::kFmod},
925 {"fract", Builtins::kFract},
926 {"frexp", Builtins::kFrexp},
927 {"hypot", Builtins::kHypot},
928 {"ilogb", Builtins::kIlogb},
929 {"ldexp", Builtins::kLdexp},
930 {"lgamma", Builtins::kLgamma},
931 {"lgamma_r", Builtins::kLgammaR},
932 {"log", Builtins::kLog},
933 {"half_log", Builtins::kHalfLog},
934 {"native_log", Builtins::kNativeLog},
935 {"log2", Builtins::kLog2},
936 {"half_log2", Builtins::kHalfLog2},
937 {"native_log2", Builtins::kNativeLog2},
938 {"log10", Builtins::kLog10},
939 {"half_log10", Builtins::kHalfLog10},
940 {"native_log10", Builtins::kNativeLog10},
941 {"log1p", Builtins::kLog1p},
942 {"logb", Builtins::kLogb},
943 {"mad", Builtins::kMad},
944 {"magmax", Builtins::kMagmax},
945 {"magmin", Builtins::kMagmin},
946 {"modf", Builtins::kModf},
947 {"nan", Builtins::kNan},
948 {"nextafter", Builtins::kNextafter},
949 {"pow", Builtins::kPow},
950 {"pown", Builtins::kPown},
951 {"powr", Builtins::kPowr},
952 {"half_powr", Builtins::kHalfPowr},
953 {"native_powr", Builtins::kNativePowr},
954 {"half_recip", Builtins::kHalfRecip},
955 {"native_recip", Builtins::kNativeRecip},
956 {"remainder", Builtins::kRemainder},
957 {"remquo", Builtins::kRemquo},
958 {"rint", Builtins::kRint},
959 {"round", Builtins::kRound},
960 {"rootn", Builtins::kRootn},
961 {"rsqrt", Builtins::kRsqrt},
962 {"half_rsqrt", Builtins::kHalfRsqrt},
963 {"native_rsqrt", Builtins::kNativeRsqrt},
964 {"sin", Builtins::kSin},
965 {"half_sin", Builtins::kHalfSin},
966 {"native_sin", Builtins::kNativeSin},
967 {"sincos", Builtins::kSincos},
968 {"sinh", Builtins::kSinh},
969 {"sinpi", Builtins::kSinpi},
970 {"sqrt", Builtins::kSqrt},
971 {"half_sqrt", Builtins::kHalfSqrt},
972 {"native_sqrt", Builtins::kNativeSqrt},
973 {"tan", Builtins::kTan},
974 {"half_tan", Builtins::kHalfTan},
975 {"native_tan", Builtins::kNativeTan},
976 {"tanh", Builtins::kTanh},
977 {"tanpi", Builtins::kTanpi},
978 {"tgamma", Builtins::kTgamma},
979 {"trunc", Builtins::kTrunc},
980
981 // Relational
982 {"isequal", Builtins::kIsequal},
983 {"isnotequal", Builtins::kIsnotequal},
984 {"isgreater", Builtins::kIsgreater},
985 {"isgreaterequal", Builtins::kIsgreaterequal},
986 {"isless", Builtins::kIsless},
987 {"islessequal", Builtins::kIslessequal},
988 {"islessgreater", Builtins::kIslessgreater},
989 {"isfinite", Builtins::kIsfinite},
990 {"isinf", Builtins::kIsinf},
991 {"isnan", Builtins::kIsnan},
992 {"isnormal", Builtins::kIsnormal},
993 {"isordered", Builtins::kIsordered},
994 {"isunordered", Builtins::kIsunordered},
995 {"signbit", Builtins::kSignbit},
996 {"any", Builtins::kAny},
997 {"all", Builtins::kAll},
998 {"bitselect", Builtins::kBitselect},
999 {"select", Builtins::kSelect},
1000
1001 // Sync
1002 {"barrier", Builtins::kBarrier},
1003 {"work_group_barrier", Builtins::kWorkGroupBarrier},
1004
1005 // Vector
1006 {"shuffle", Builtins::kShuffle},
1007 {"shuffle2", Builtins::kShuffle2},
1008 {"vec_step", Builtins::kVecStep},
1009 {"vload", Builtins::kVload},
1010 {"vload2", Builtins::kVload},
1011 {"vload3", Builtins::kVload},
1012 {"vload4", Builtins::kVload},
1013 {"vload8", Builtins::kVload},
1014 {"vload16", Builtins::kVload},
1015 {"vload_half", Builtins::kVloadHalf},
1016 {"vload_half2", Builtins::kVloadHalf},
1017 {"vload_half3", Builtins::kVloadHalf},
1018 {"vload_half4", Builtins::kVloadHalf},
1019 {"vload_half8", Builtins::kVloadHalf},
1020 {"vload_half16", Builtins::kVloadHalf},
1021 {"vloada_half", Builtins::kVloadaHalf},
1022 {"vloada_half2", Builtins::kVloadaHalf},
1023 {"vloada_half3", Builtins::kVloadaHalf},
1024 {"vloada_half4", Builtins::kVloadaHalf},
1025 {"vloada_half8", Builtins::kVloadaHalf},
1026 {"vloada_half16", Builtins::kVloadaHalf},
1027 {"vstore", Builtins::kVstore},
1028 {"vstore2", Builtins::kVstore},
1029 {"vstore3", Builtins::kVstore},
1030 {"vstore4", Builtins::kVstore},
1031 {"vstore8", Builtins::kVstore},
1032 {"vstore16", Builtins::kVstore},
1033 {"vstore_half", Builtins::kVstoreHalf},
1034 {"vstore_half_rte", Builtins::kVstoreHalf},
1035 {"vstore_half_rtz", Builtins::kVstoreHalf},
1036 {"vstore_half_rtp", Builtins::kVstoreHalf},
1037 {"vstore_half_rtn", Builtins::kVstoreHalf},
1038 {"vstore_half2", Builtins::kVstoreHalf},
1039 {"vstore_half2_rte", Builtins::kVstoreHalf},
1040 {"vstore_half2_rtz", Builtins::kVstoreHalf},
1041 {"vstore_half2_rtp", Builtins::kVstoreHalf},
1042 {"vstore_half2_rtn", Builtins::kVstoreHalf},
1043 {"vstore_half3", Builtins::kVstoreHalf},
1044 {"vstore_half3_rte", Builtins::kVstoreHalf},
1045 {"vstore_half3_rtz", Builtins::kVstoreHalf},
1046 {"vstore_half3_rtp", Builtins::kVstoreHalf},
1047 {"vstore_half3_rtn", Builtins::kVstoreHalf},
1048 {"vstore_half4", Builtins::kVstoreHalf},
1049 {"vstore_half4_rte", Builtins::kVstoreHalf},
1050 {"vstore_half4_rtz", Builtins::kVstoreHalf},
1051 {"vstore_half4_rtp", Builtins::kVstoreHalf},
1052 {"vstore_half4_rtn", Builtins::kVstoreHalf},
1053 {"vstore_half8", Builtins::kVstoreHalf},
1054 {"vstore_half8_rte", Builtins::kVstoreHalf},
1055 {"vstore_half8_rtz", Builtins::kVstoreHalf},
1056 {"vstore_half8_rtp", Builtins::kVstoreHalf},
1057 {"vstore_half8_rtn", Builtins::kVstoreHalf},
1058 {"vstore_half16", Builtins::kVstoreHalf},
1059 {"vstore_half16_rte", Builtins::kVstoreHalf},
1060 {"vstore_half16_rtz", Builtins::kVstoreHalf},
1061 {"vstore_half16_rtp", Builtins::kVstoreHalf},
1062 {"vstore_half16_rtn", Builtins::kVstoreHalf},
1063 {"vstorea_half", Builtins::kVstoreaHalf},
1064 {"vstorea_half_rte", Builtins::kVstoreaHalf},
1065 {"vstorea_half_rtz", Builtins::kVstoreaHalf},
1066 {"vstorea_half_rtp", Builtins::kVstoreaHalf},
1067 {"vstorea_half_rtn", Builtins::kVstoreaHalf},
1068 {"vstorea_half2", Builtins::kVstoreaHalf},
1069 {"vstorea_half2_rte", Builtins::kVstoreaHalf},
1070 {"vstorea_half2_rtz", Builtins::kVstoreaHalf},
1071 {"vstorea_half2_rtp", Builtins::kVstoreaHalf},
1072 {"vstorea_half2_rtn", Builtins::kVstoreaHalf},
1073 {"vstorea_half3", Builtins::kVstoreaHalf},
1074 {"vstorea_half3_rte", Builtins::kVstoreaHalf},
1075 {"vstorea_half3_rtz", Builtins::kVstoreaHalf},
1076 {"vstorea_half3_rtp", Builtins::kVstoreaHalf},
1077 {"vstorea_half3_rtn", Builtins::kVstoreaHalf},
1078 {"vstorea_half4", Builtins::kVstoreaHalf},
1079 {"vstorea_half4_rte", Builtins::kVstoreaHalf},
1080 {"vstorea_half4_rtz", Builtins::kVstoreaHalf},
1081 {"vstorea_half4_rtp", Builtins::kVstoreaHalf},
1082 {"vstorea_half4_rtn", Builtins::kVstoreaHalf},
1083 {"vstorea_half8", Builtins::kVstoreaHalf},
1084 {"vstorea_half8_rte", Builtins::kVstoreaHalf},
1085 {"vstorea_half8_rtz", Builtins::kVstoreaHalf},
1086 {"vstorea_half8_rtp", Builtins::kVstoreaHalf},
1087 {"vstorea_half8_rtn", Builtins::kVstoreaHalf},
1088 {"vstorea_half16", Builtins::kVstoreaHalf},
1089 {"vstorea_half16_rte", Builtins::kVstoreaHalf},
1090 {"vstorea_half16_rtz", Builtins::kVstoreaHalf},
1091 {"vstorea_half16_rtp", Builtins::kVstoreaHalf},
1092 {"vstorea_half16_rtn", Builtins::kVstoreaHalf},
1093
1094 // WorkItem
1095 {"get_global_id", Builtins::kGetGlobalId},
1096 {"get_global_size", Builtins::kGetGlobalSize},
1097 {"get_global_offset", Builtins::kGetGlobalOffset},
1098 {"get_global_linear_id", Builtins::kGetGlobalLinearId},
1099 {"get_group_id", Builtins::kGetGroupId},
1100 {"get_local_id", Builtins::kGetLocalId},
1101 {"get_local_linear_id", Builtins::kGetLocalLinearId},
1102 {"get_local_size", Builtins::kGetLocalSize},
1103 {"get_enqueued_local_size", Builtins::kGetEnqueuedLocalSize},
1104 {"get_num_groups", Builtins::kGetNumGroups},
1105 {"get_work_dim", Builtins::kGetWorkDim},
1106
1107 // Pipe
1108 {"read_pipe", Builtins::kReadPipe},
1109 {"write_pipe", Builtins::kWritePipe},
1110 {"reserve_read_pipe", Builtins::kReserveReadPipe},
1111 {"commit_read_pipe", Builtins::kCommitReadPipe},
1112 {"is_valid_reserve_id", Builtins::kIsValidReserveId},
1113 {"work_group_reserve_read_pipe", Builtins::kWorkGroupReserveReadPipe},
1114 {"work_group_reserve_write_pipe", Builtins::kWorkGroupReserveWritePipe},
1115 {"work_group_commit_read_pipe", Builtins::kWorkGroupCommitReadPipe},
1116 {"work_group_commit_write_pipe", Builtins::kWorkGroupCommitWritePipe},
1117 {"get_pipe_num_packets", Builtins::kGetPipeNumPackets},
1118 {"get_pipe_max_packets", Builtins::kGetPipeMaxPackets},
1119
1120 // SubgroupsKHR
1121 {"get_sub_group_size", Builtins::kGetSubGroupSize},
1122 {"get_max_sub_group_size", Builtins::kGetMaxSubGroupSize},
1123 {"get_num_sub_groups", Builtins::kGetNumSubGroups},
1124 {"get_enqueued_num_sub_groups", Builtins::kGetEnqueuedNumSubGroups},
1125 {"get_sub_group_id", Builtins::kGetSubGroupId},
1126 {"get_sub_group_local_id", Builtins::kGetSubGroupLocalId},
1127 {"sub_group_barrier", Builtins::kSubGroupBarrier},
1128 {"sub_group_all", Builtins::kSubGroupAll},
1129 {"sub_group_any", Builtins::kSubGroupAny},
1130 {"sub_group_broadcast", Builtins::kSubGroupBroadcast},
1131 {"sub_group_reduce_add", Builtins::kSubGroupReduceAdd},
1132 {"sub_group_reduce_min", Builtins::kSubGroupReduceMin},
1133 {"sub_group_reduce_max", Builtins::kSubGroupReduceMax},
1134 {"sub_group_scan_exclusive_add", Builtins::kSubGroupScanExclusiveAdd},
1135 {"sub_group_scan_exclusive_min", Builtins::kSubGroupScanExclusiveMin},
1136 {"sub_group_scan_exclusive_max", Builtins::kSubGroupScanExclusiveMax},
1137 {"sub_group_scan_inclusive_add", Builtins::kSubGroupScanInclusiveAdd},
1138 {"sub_group_scan_inclusive_min", Builtins::kSubGroupScanInclusiveMin},
1139 {"sub_group_scan_inclusive_max", Builtins::kSubGroupScanInclusiveMax},
1140 {"sub_group_reserve_read_pipe", Builtins::kSubGroupReserveReadPipe},
1141 {"sub_group_reserve_write_pipe", Builtins::kSubGroupReserveWritePipe},
1142 {"sub_group_commit_read_pipe", Builtins::kSubGroupCommitReadPipe},
1143 {"sub_group_commit_write_pipe", Builtins::kSubGroupCommitWritePipe},
1144 {"get_kernel_sub_group_count_for_ndrange",
1145 Builtins::kGetKernelSubGroupCountForNdrange},
1146 {"get_kernel_max_sub_group_size_for_ndrange",
1147 Builtins::kGetKernelMaxSubGroupSizeForNdrange},
1148
1149 // Internal
SJW61531372020-06-09 07:31:08 -05001150 {"clspv.fract", Builtins::kClspvFract},
1151 {"spirv.atomic_xor", Builtins::kSpirvAtomicXor},
1152 {"spirv.pack.v2f16", Builtins::kSpirvPack},
1153 {"spirv.unpack.v2f16", Builtins::kSpirvUnpack},
SJW173c7e92020-03-16 08:44:47 -05001154
1155 {"__clspv_vloada_half2", Builtins::kVloadaHalf},
1156 {"__clspv_vloada_half4", Builtins::kVloadaHalf},
1157
SJW61531372020-06-09 07:31:08 -05001158 {"clspv.resource", Builtins::kClspvResource},
1159 {"clspv.local", Builtins::kClspvLocal},
1160 {"spirv.op", Builtins::kSpirvOp},
1161 {"spirv.copy_memory", Builtins::kSpirvCopyMemory},
1162 {"clspv.sampler_var_literal", Builtins::kClspvSamplerVarLiteral},
1163 {"clspv.composite_construct", Builtins::kClspvCompositeConstruct},
1164
SJW173c7e92020-03-16 08:44:47 -05001165};
1166
1167#endif // CLSPV_LIB_BUILTINSMAP_INC_