Line data Source code
1 : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2 : |* *|
3 : |* Intrinsic Function Source Fragment *|
4 : |* *|
5 : |* Automatically generated file, do not edit! *|
6 : |* *|
7 : \*===----------------------------------------------------------------------===*/
8 :
9 : // VisualStudio defines setjmp as _setjmp
10 : #if defined(_MSC_VER) && defined(setjmp) && \
11 : !defined(setjmp_undefined_for_msvc)
12 : # pragma push_macro("setjmp")
13 : # undef setjmp
14 : # define setjmp_undefined_for_msvc
15 : #endif
16 :
17 : // Enum values for Intrinsics.h
18 : #ifdef GET_INTRINSIC_ENUM_VALUES
19 : AMDGPU_abs, // llvm.AMDGPU.abs
20 : AMDGPU_arl, // llvm.AMDGPU.arl
21 : AMDGPU_barrier_global, // llvm.AMDGPU.barrier.global
22 : AMDGPU_barrier_local, // llvm.AMDGPU.barrier.local
23 : AMDGPU_bfe_i32, // llvm.AMDGPU.bfe.i32
24 : AMDGPU_bfe_u32, // llvm.AMDGPU.bfe.u32
25 : AMDGPU_bfi, // llvm.AMDGPU.bfi
26 : AMDGPU_bfm, // llvm.AMDGPU.bfm
27 : AMDGPU_brev, // llvm.AMDGPU.brev
28 : AMDGPU_clamp, // llvm.AMDGPU.clamp
29 : AMDGPU_cndlt, // llvm.AMDGPU.cndlt
30 : AMDGPU_cube, // llvm.AMDGPU.cube
31 : AMDGPU_cvt_f32_ubyte0, // llvm.AMDGPU.cvt.f32.ubyte0
32 : AMDGPU_cvt_f32_ubyte1, // llvm.AMDGPU.cvt.f32.ubyte1
33 : AMDGPU_cvt_f32_ubyte2, // llvm.AMDGPU.cvt.f32.ubyte2
34 : AMDGPU_cvt_f32_ubyte3, // llvm.AMDGPU.cvt.f32.ubyte3
35 : AMDGPU_ddx, // llvm.AMDGPU.ddx
36 : AMDGPU_ddy, // llvm.AMDGPU.ddy
37 : AMDGPU_div, // llvm.AMDGPU.div
38 : AMDGPU_dp4, // llvm.AMDGPU.dp4
39 : AMDGPU_flbit_i32, // llvm.AMDGPU.flbit.i32
40 : AMDGPU_fract, // llvm.AMDGPU.fract
41 : AMDGPU_imad24, // llvm.AMDGPU.imad24
42 : AMDGPU_imax, // llvm.AMDGPU.imax
43 : AMDGPU_imin, // llvm.AMDGPU.imin
44 : AMDGPU_imul24, // llvm.AMDGPU.imul24
45 : AMDGPU_kill, // llvm.AMDGPU.kill
46 : AMDGPU_kilp, // llvm.AMDGPU.kilp
47 : AMDGPU_legacy_rsq, // llvm.AMDGPU.legacy.rsq
48 : AMDGPU_lrp, // llvm.AMDGPU.lrp
49 : AMDGPU_mul, // llvm.AMDGPU.mul
50 : AMDGPU_mullit, // llvm.AMDGPU.mullit
51 : AMDGPU_pow, // llvm.AMDGPU.pow
52 : AMDGPU_seq, // llvm.AMDGPU.seq
53 : AMDGPU_sge, // llvm.AMDGPU.sge
54 : AMDGPU_sgt, // llvm.AMDGPU.sgt
55 : AMDGPU_sle, // llvm.AMDGPU.sle
56 : AMDGPU_sne, // llvm.AMDGPU.sne
57 : AMDGPU_store_output, // llvm.AMDGPU.store.output
58 : AMDGPU_swizzle, // llvm.AMDGPU.swizzle
59 : AMDGPU_tex, // llvm.AMDGPU.tex
60 : AMDGPU_trunc, // llvm.AMDGPU.trunc
61 : AMDGPU_txb, // llvm.AMDGPU.txb
62 : AMDGPU_txd, // llvm.AMDGPU.txd
63 : AMDGPU_txf, // llvm.AMDGPU.txf
64 : AMDGPU_txl, // llvm.AMDGPU.txl
65 : AMDGPU_txq, // llvm.AMDGPU.txq
66 : AMDGPU_umad24, // llvm.AMDGPU.umad24
67 : AMDGPU_umax, // llvm.AMDGPU.umax
68 : AMDGPU_umin, // llvm.AMDGPU.umin
69 : AMDGPU_umul24, // llvm.AMDGPU.umul24
70 : AMDIL_abs, // llvm.AMDIL.abs
71 : AMDIL_clamp, // llvm.AMDIL.clamp
72 : AMDIL_exp, // llvm.AMDIL.exp
73 : AMDIL_fraction, // llvm.AMDIL.fraction
74 : AMDIL_round_nearest, // llvm.AMDIL.round.nearest
75 : R600_ddx, // llvm.R600.ddx
76 : R600_ddy, // llvm.R600.ddy
77 : R600_interp_const, // llvm.R600.interp.const
78 : R600_interp_input, // llvm.R600.interp.input
79 : R600_interp_xy, // llvm.R600.interp.xy
80 : R600_interp_zw, // llvm.R600.interp.zw
81 : R600_ldptr, // llvm.R600.ldptr
82 : R600_load_input, // llvm.R600.load.input
83 : R600_load_texbuf, // llvm.R600.load.texbuf
84 : R600_store_dummy, // llvm.R600.store.dummy
85 : R600_store_pixel_depth, // llvm.R600.store.pixel.depth
86 : R600_store_pixel_stencil, // llvm.R600.store.pixel.stencil
87 : R600_store_stream_output, // llvm.R600.store.stream.output
88 : R600_store_swizzle, // llvm.R600.store.swizzle
89 : R600_tex, // llvm.R600.tex
90 : R600_texc, // llvm.R600.texc
91 : R600_txb, // llvm.R600.txb
92 : R600_txbc, // llvm.R600.txbc
93 : R600_txf, // llvm.R600.txf
94 : R600_txl, // llvm.R600.txl
95 : R600_txlc, // llvm.R600.txlc
96 : R600_txq, // llvm.R600.txq
97 : SI_break, // llvm.SI.break
98 : SI_buffer_load_dword, // llvm.SI.buffer.load.dword
99 : SI_else, // llvm.SI.else
100 : SI_else_break, // llvm.SI.else.break
101 : SI_end_cf, // llvm.SI.end.cf
102 : SI_export, // llvm.SI.export
103 : SI_fs_constant, // llvm.SI.fs.constant
104 : SI_fs_interp, // llvm.SI.fs.interp
105 : SI_gather4, // llvm.SI.gather4
106 : SI_gather4_b, // llvm.SI.gather4.b
107 : SI_gather4_b_cl, // llvm.SI.gather4.b.cl
108 : SI_gather4_b_cl_o, // llvm.SI.gather4.b.cl.o
109 : SI_gather4_b_o, // llvm.SI.gather4.b.o
110 : SI_gather4_c, // llvm.SI.gather4.c
111 : SI_gather4_c_b, // llvm.SI.gather4.c.b
112 : SI_gather4_c_b_cl, // llvm.SI.gather4.c.b.cl
113 : SI_gather4_c_b_cl_o, // llvm.SI.gather4.c.b.cl.o
114 : SI_gather4_c_b_o, // llvm.SI.gather4.c.b.o
115 : SI_gather4_c_cl, // llvm.SI.gather4.c.cl
116 : SI_gather4_c_cl_o, // llvm.SI.gather4.c.cl.o
117 : SI_gather4_c_l, // llvm.SI.gather4.c.l
118 : SI_gather4_c_l_o, // llvm.SI.gather4.c.l.o
119 : SI_gather4_c_lz, // llvm.SI.gather4.c.lz
120 : SI_gather4_c_lz_o, // llvm.SI.gather4.c.lz.o
121 : SI_gather4_c_o, // llvm.SI.gather4.c.o
122 : SI_gather4_cl, // llvm.SI.gather4.cl
123 : SI_gather4_cl_o, // llvm.SI.gather4.cl.o
124 : SI_gather4_l, // llvm.SI.gather4.l
125 : SI_gather4_l_o, // llvm.SI.gather4.l.o
126 : SI_gather4_lz, // llvm.SI.gather4.lz
127 : SI_gather4_lz_o, // llvm.SI.gather4.lz.o
128 : SI_gather4_o, // llvm.SI.gather4.o
129 : SI_getlod, // llvm.SI.getlod
130 : SI_getresinfo, // llvm.SI.getresinfo
131 : SI_if, // llvm.SI.if
132 : SI_if_break, // llvm.SI.if.break
133 : SI_image_load, // llvm.SI.image.load
134 : SI_image_load_mip, // llvm.SI.image.load.mip
135 : SI_image_sample, // llvm.SI.image.sample
136 : SI_image_sample_b, // llvm.SI.image.sample.b
137 : SI_image_sample_b_cl, // llvm.SI.image.sample.b.cl
138 : SI_image_sample_b_cl_o, // llvm.SI.image.sample.b.cl.o
139 : SI_image_sample_b_o, // llvm.SI.image.sample.b.o
140 : SI_image_sample_c, // llvm.SI.image.sample.c
141 : SI_image_sample_c_b, // llvm.SI.image.sample.c.b
142 : SI_image_sample_c_b_cl, // llvm.SI.image.sample.c.b.cl
143 : SI_image_sample_c_b_cl_o, // llvm.SI.image.sample.c.b.cl.o
144 : SI_image_sample_c_b_o, // llvm.SI.image.sample.c.b.o
145 : SI_image_sample_c_cd, // llvm.SI.image.sample.c.cd
146 : SI_image_sample_c_cd_cl, // llvm.SI.image.sample.c.cd.cl
147 : SI_image_sample_c_cd_cl_o, // llvm.SI.image.sample.c.cd.cl.o
148 : SI_image_sample_c_cd_o, // llvm.SI.image.sample.c.cd.o
149 : SI_image_sample_c_cl, // llvm.SI.image.sample.c.cl
150 : SI_image_sample_c_cl_o, // llvm.SI.image.sample.c.cl.o
151 : SI_image_sample_c_d, // llvm.SI.image.sample.c.d
152 : SI_image_sample_c_d_cl, // llvm.SI.image.sample.c.d.cl
153 : SI_image_sample_c_d_cl_o, // llvm.SI.image.sample.c.d.cl.o
154 : SI_image_sample_c_d_o, // llvm.SI.image.sample.c.d.o
155 : SI_image_sample_c_l, // llvm.SI.image.sample.c.l
156 : SI_image_sample_c_l_o, // llvm.SI.image.sample.c.l.o
157 : SI_image_sample_c_lz, // llvm.SI.image.sample.c.lz
158 : SI_image_sample_c_lz_o, // llvm.SI.image.sample.c.lz.o
159 : SI_image_sample_c_o, // llvm.SI.image.sample.c.o
160 : SI_image_sample_cd, // llvm.SI.image.sample.cd
161 : SI_image_sample_cd_cl, // llvm.SI.image.sample.cd.cl
162 : SI_image_sample_cd_cl_o, // llvm.SI.image.sample.cd.cl.o
163 : SI_image_sample_cd_o, // llvm.SI.image.sample.cd.o
164 : SI_image_sample_cl, // llvm.SI.image.sample.cl
165 : SI_image_sample_cl_o, // llvm.SI.image.sample.cl.o
166 : SI_image_sample_d, // llvm.SI.image.sample.d
167 : SI_image_sample_d_cl, // llvm.SI.image.sample.d.cl
168 : SI_image_sample_d_cl_o, // llvm.SI.image.sample.d.cl.o
169 : SI_image_sample_d_o, // llvm.SI.image.sample.d.o
170 : SI_image_sample_l, // llvm.SI.image.sample.l
171 : SI_image_sample_l_o, // llvm.SI.image.sample.l.o
172 : SI_image_sample_lz, // llvm.SI.image.sample.lz
173 : SI_image_sample_lz_o, // llvm.SI.image.sample.lz.o
174 : SI_image_sample_o, // llvm.SI.image.sample.o
175 : SI_imageload, // llvm.SI.imageload
176 : SI_load_const, // llvm.SI.load.const
177 : SI_loop, // llvm.SI.loop
178 : SI_packf16, // llvm.SI.packf16
179 : SI_resinfo, // llvm.SI.resinfo
180 : SI_sample, // llvm.SI.sample
181 : SI_sampleb, // llvm.SI.sampleb
182 : SI_sampled, // llvm.SI.sampled
183 : SI_samplel, // llvm.SI.samplel
184 : SI_sendmsg, // llvm.SI.sendmsg
185 : SI_tbuffer_store, // llvm.SI.tbuffer.store
186 : SI_tid, // llvm.SI.tid
187 : SI_vs_load_input, // llvm.SI.vs.load.input
188 : TGSI_lit_z // llvm.TGSI.lit.z
189 : #endif
190 :
191 : // Intrinsic ID to name table
192 : #ifdef GET_INTRINSIC_NAME_TABLE
193 : // Note that entry #0 is the invalid intrinsic!
194 : "llvm.AMDGPU.abs",
195 : "llvm.AMDGPU.arl",
196 : "llvm.AMDGPU.barrier.global",
197 : "llvm.AMDGPU.barrier.local",
198 : "llvm.AMDGPU.bfe.i32",
199 : "llvm.AMDGPU.bfe.u32",
200 : "llvm.AMDGPU.bfi",
201 : "llvm.AMDGPU.bfm",
202 : "llvm.AMDGPU.brev",
203 : "llvm.AMDGPU.clamp",
204 : "llvm.AMDGPU.cndlt",
205 : "llvm.AMDGPU.cube",
206 : "llvm.AMDGPU.cvt.f32.ubyte0",
207 : "llvm.AMDGPU.cvt.f32.ubyte1",
208 : "llvm.AMDGPU.cvt.f32.ubyte2",
209 : "llvm.AMDGPU.cvt.f32.ubyte3",
210 : "llvm.AMDGPU.ddx",
211 : "llvm.AMDGPU.ddy",
212 : "llvm.AMDGPU.div",
213 : "llvm.AMDGPU.dp4",
214 : "llvm.AMDGPU.flbit.i32",
215 : "llvm.AMDGPU.fract",
216 : "llvm.AMDGPU.imad24",
217 : "llvm.AMDGPU.imax",
218 : "llvm.AMDGPU.imin",
219 : "llvm.AMDGPU.imul24",
220 : "llvm.AMDGPU.kill",
221 : "llvm.AMDGPU.kilp",
222 : "llvm.AMDGPU.legacy.rsq",
223 : "llvm.AMDGPU.lrp",
224 : "llvm.AMDGPU.mul",
225 : "llvm.AMDGPU.mullit",
226 : "llvm.AMDGPU.pow",
227 : "llvm.AMDGPU.seq",
228 : "llvm.AMDGPU.sge",
229 : "llvm.AMDGPU.sgt",
230 : "llvm.AMDGPU.sle",
231 : "llvm.AMDGPU.sne",
232 : "llvm.AMDGPU.store.output",
233 : "llvm.AMDGPU.swizzle",
234 : "llvm.AMDGPU.tex",
235 : "llvm.AMDGPU.trunc",
236 : "llvm.AMDGPU.txb",
237 : "llvm.AMDGPU.txd",
238 : "llvm.AMDGPU.txf",
239 : "llvm.AMDGPU.txl",
240 : "llvm.AMDGPU.txq",
241 : "llvm.AMDGPU.umad24",
242 : "llvm.AMDGPU.umax",
243 : "llvm.AMDGPU.umin",
244 : "llvm.AMDGPU.umul24",
245 : "llvm.AMDIL.abs",
246 : "llvm.AMDIL.clamp",
247 : "llvm.AMDIL.exp",
248 : "llvm.AMDIL.fraction",
249 : "llvm.AMDIL.round.nearest",
250 : "llvm.R600.ddx",
251 : "llvm.R600.ddy",
252 : "llvm.R600.interp.const",
253 : "llvm.R600.interp.input",
254 : "llvm.R600.interp.xy",
255 : "llvm.R600.interp.zw",
256 : "llvm.R600.ldptr",
257 : "llvm.R600.load.input",
258 : "llvm.R600.load.texbuf",
259 : "llvm.R600.store.dummy",
260 : "llvm.R600.store.pixel.depth",
261 : "llvm.R600.store.pixel.stencil",
262 : "llvm.R600.store.stream.output",
263 : "llvm.R600.store.swizzle",
264 : "llvm.R600.tex",
265 : "llvm.R600.texc",
266 : "llvm.R600.txb",
267 : "llvm.R600.txbc",
268 : "llvm.R600.txf",
269 : "llvm.R600.txl",
270 : "llvm.R600.txlc",
271 : "llvm.R600.txq",
272 : "llvm.SI.break",
273 : "llvm.SI.buffer.load.dword",
274 : "llvm.SI.else",
275 : "llvm.SI.else.break",
276 : "llvm.SI.end.cf",
277 : "llvm.SI.export",
278 : "llvm.SI.fs.constant",
279 : "llvm.SI.fs.interp",
280 : "llvm.SI.gather4",
281 : "llvm.SI.gather4.b",
282 : "llvm.SI.gather4.b.cl",
283 : "llvm.SI.gather4.b.cl.o",
284 : "llvm.SI.gather4.b.o",
285 : "llvm.SI.gather4.c",
286 : "llvm.SI.gather4.c.b",
287 : "llvm.SI.gather4.c.b.cl",
288 : "llvm.SI.gather4.c.b.cl.o",
289 : "llvm.SI.gather4.c.b.o",
290 : "llvm.SI.gather4.c.cl",
291 : "llvm.SI.gather4.c.cl.o",
292 : "llvm.SI.gather4.c.l",
293 : "llvm.SI.gather4.c.l.o",
294 : "llvm.SI.gather4.c.lz",
295 : "llvm.SI.gather4.c.lz.o",
296 : "llvm.SI.gather4.c.o",
297 : "llvm.SI.gather4.cl",
298 : "llvm.SI.gather4.cl.o",
299 : "llvm.SI.gather4.l",
300 : "llvm.SI.gather4.l.o",
301 : "llvm.SI.gather4.lz",
302 : "llvm.SI.gather4.lz.o",
303 : "llvm.SI.gather4.o",
304 : "llvm.SI.getlod",
305 : "llvm.SI.getresinfo",
306 : "llvm.SI.if",
307 : "llvm.SI.if.break",
308 : "llvm.SI.image.load",
309 : "llvm.SI.image.load.mip",
310 : "llvm.SI.image.sample",
311 : "llvm.SI.image.sample.b",
312 : "llvm.SI.image.sample.b.cl",
313 : "llvm.SI.image.sample.b.cl.o",
314 : "llvm.SI.image.sample.b.o",
315 : "llvm.SI.image.sample.c",
316 : "llvm.SI.image.sample.c.b",
317 : "llvm.SI.image.sample.c.b.cl",
318 : "llvm.SI.image.sample.c.b.cl.o",
319 : "llvm.SI.image.sample.c.b.o",
320 : "llvm.SI.image.sample.c.cd",
321 : "llvm.SI.image.sample.c.cd.cl",
322 : "llvm.SI.image.sample.c.cd.cl.o",
323 : "llvm.SI.image.sample.c.cd.o",
324 : "llvm.SI.image.sample.c.cl",
325 : "llvm.SI.image.sample.c.cl.o",
326 : "llvm.SI.image.sample.c.d",
327 : "llvm.SI.image.sample.c.d.cl",
328 : "llvm.SI.image.sample.c.d.cl.o",
329 : "llvm.SI.image.sample.c.d.o",
330 : "llvm.SI.image.sample.c.l",
331 : "llvm.SI.image.sample.c.l.o",
332 : "llvm.SI.image.sample.c.lz",
333 : "llvm.SI.image.sample.c.lz.o",
334 : "llvm.SI.image.sample.c.o",
335 : "llvm.SI.image.sample.cd",
336 : "llvm.SI.image.sample.cd.cl",
337 : "llvm.SI.image.sample.cd.cl.o",
338 : "llvm.SI.image.sample.cd.o",
339 : "llvm.SI.image.sample.cl",
340 : "llvm.SI.image.sample.cl.o",
341 : "llvm.SI.image.sample.d",
342 : "llvm.SI.image.sample.d.cl",
343 : "llvm.SI.image.sample.d.cl.o",
344 : "llvm.SI.image.sample.d.o",
345 : "llvm.SI.image.sample.l",
346 : "llvm.SI.image.sample.l.o",
347 : "llvm.SI.image.sample.lz",
348 : "llvm.SI.image.sample.lz.o",
349 : "llvm.SI.image.sample.o",
350 : "llvm.SI.imageload",
351 : "llvm.SI.load.const",
352 : "llvm.SI.loop",
353 : "llvm.SI.packf16",
354 : "llvm.SI.resinfo",
355 : "llvm.SI.sample",
356 : "llvm.SI.sampleb",
357 : "llvm.SI.sampled",
358 : "llvm.SI.samplel",
359 : "llvm.SI.sendmsg",
360 : "llvm.SI.tbuffer.store",
361 : "llvm.SI.tid",
362 : "llvm.SI.vs.load.input",
363 : "llvm.TGSI.lit.z",
364 : #endif
365 :
366 : // Intrinsic ID to overload bitset
367 : #ifdef GET_INTRINSIC_OVERLOAD_TABLE
368 : static const uint8_t OTable[] = {
369 : 0,
370 : 0 | (1<<2),
371 : 0 | (1<<6),
372 : 0,
373 : 0,
374 : 0,
375 : 0 | (1<<4) | (1<<5) | (1<<6) | (1<<7),
376 : 0 | (1<<0),
377 : 0,
378 : 0,
379 : 0 | (1<<0) | (1<<7),
380 : 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
381 : 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
382 : 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
383 : 0 | (1<<0) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
384 : 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
385 : 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
386 : 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
387 : 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
388 : 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
389 : 0 | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<7),
390 : 0 | (1<<1)
391 : };
392 :
393 0 : return (OTable[id/8] & (1 << (id%8))) != 0;
394 : #endif
395 :
396 : // Function name -> enum value recognizer code.
397 : #ifdef GET_FUNCTION_RECOGNIZER
398 4710 : StringRef NameR(Name+6, Len-6); // Skip over 'llvm.'
399 4710 : switch (Name[5]) { // Dispatch on first letter.
400 : default: break;
401 : case 'A':
402 807 : if (NameR.startswith("MDIL.round.nearest.")) return AMDGPUIntrinsic::AMDIL_round_nearest;
403 804 : if (NameR.startswith("MDIL.fraction.")) return AMDGPUIntrinsic::AMDIL_fraction;
404 798 : if (NameR.startswith("MDIL.exp.")) return AMDGPUIntrinsic::AMDIL_exp;
405 790 : if (NameR.startswith("MDIL.clamp.")) return AMDGPUIntrinsic::AMDIL_clamp;
406 735 : if (NameR.startswith("MDIL.abs.")) return AMDGPUIntrinsic::AMDIL_abs;
407 732 : if (NameR.startswith("MDGPU.fract.")) return AMDGPUIntrinsic::AMDGPU_fract;
408 711 : if (NameR.startswith("MDGPU.clamp.")) return AMDGPUIntrinsic::AMDGPU_clamp;
409 699 : switch (NameR.size()) {
410 : default: break;
411 : case 9: // 22 strings to match.
412 146 : if (memcmp(NameR.data()+0, "MDGPU.", 6))
413 : break;
414 292 : switch (NameR[6]) {
415 : default: break;
416 : case 'a': // 2 strings to match.
417 12 : switch (NameR[7]) {
418 : default: break;
419 : case 'b': // 1 string to match.
420 12 : if (NameR[8] != 's')
421 : break;
422 : return AMDGPUIntrinsic::AMDGPU_abs; // "MDGPU.abs"
423 : case 'r': // 1 string to match.
424 0 : if (NameR[8] != 'l')
425 : break;
426 : return AMDGPUIntrinsic::AMDGPU_arl; // "MDGPU.arl"
427 : }
428 : break;
429 : case 'b': // 2 strings to match.
430 48 : if (NameR[7] != 'f')
431 : break;
432 48 : switch (NameR[8]) {
433 : default: break;
434 : case 'i': // 1 string to match.
435 : return AMDGPUIntrinsic::AMDGPU_bfi; // "MDGPU.bfi"
436 : case 'm': // 1 string to match.
437 12 : return AMDGPUIntrinsic::AMDGPU_bfm; // "MDGPU.bfm"
438 : }
439 : break;
440 : case 'd': // 4 strings to match.
441 70 : switch (NameR[7]) {
442 : default: break;
443 : case 'd': // 2 strings to match.
444 0 : switch (NameR[8]) {
445 : default: break;
446 : case 'x': // 1 string to match.
447 : return AMDGPUIntrinsic::AMDGPU_ddx; // "MDGPU.ddx"
448 : case 'y': // 1 string to match.
449 0 : return AMDGPUIntrinsic::AMDGPU_ddy; // "MDGPU.ddy"
450 : }
451 : break;
452 : case 'i': // 1 string to match.
453 0 : if (NameR[8] != 'v')
454 : break;
455 : return AMDGPUIntrinsic::AMDGPU_div; // "MDGPU.div"
456 : case 'p': // 1 string to match.
457 70 : if (NameR[8] != '4')
458 : break;
459 : return AMDGPUIntrinsic::AMDGPU_dp4; // "MDGPU.dp4"
460 : }
461 : break;
462 : case 'l': // 1 string to match.
463 80 : if (memcmp(NameR.data()+7, "rp", 2))
464 : break;
465 : return AMDGPUIntrinsic::AMDGPU_lrp; // "MDGPU.lrp"
466 : case 'm': // 1 string to match.
467 1 : if (memcmp(NameR.data()+7, "ul", 2))
468 : break;
469 : return AMDGPUIntrinsic::AMDGPU_mul; // "MDGPU.mul"
470 : case 'p': // 1 string to match.
471 0 : if (memcmp(NameR.data()+7, "ow", 2))
472 : break;
473 : return AMDGPUIntrinsic::AMDGPU_pow; // "MDGPU.pow"
474 : case 's': // 5 strings to match.
475 0 : switch (NameR[7]) {
476 : default: break;
477 : case 'e': // 1 string to match.
478 0 : if (NameR[8] != 'q')
479 : break;
480 : return AMDGPUIntrinsic::AMDGPU_seq; // "MDGPU.seq"
481 : case 'g': // 2 strings to match.
482 0 : switch (NameR[8]) {
483 : default: break;
484 : case 'e': // 1 string to match.
485 : return AMDGPUIntrinsic::AMDGPU_sge; // "MDGPU.sge"
486 : case 't': // 1 string to match.
487 0 : return AMDGPUIntrinsic::AMDGPU_sgt; // "MDGPU.sgt"
488 : }
489 : break;
490 : case 'l': // 1 string to match.
491 0 : if (NameR[8] != 'e')
492 : break;
493 : return AMDGPUIntrinsic::AMDGPU_sle; // "MDGPU.sle"
494 : case 'n': // 1 string to match.
495 0 : if (NameR[8] != 'e')
496 : break;
497 : return AMDGPUIntrinsic::AMDGPU_sne; // "MDGPU.sne"
498 : }
499 : break;
500 : case 't': // 6 strings to match.
501 0 : switch (NameR[7]) {
502 : default: break;
503 : case 'e': // 1 string to match.
504 0 : if (NameR[8] != 'x')
505 : break;
506 : return AMDGPUIntrinsic::AMDGPU_tex; // "MDGPU.tex"
507 : case 'x': // 5 strings to match.
508 0 : switch (NameR[8]) {
509 : default: break;
510 : case 'b': // 1 string to match.
511 : return AMDGPUIntrinsic::AMDGPU_txb; // "MDGPU.txb"
512 : case 'd': // 1 string to match.
513 0 : return AMDGPUIntrinsic::AMDGPU_txd; // "MDGPU.txd"
514 : case 'f': // 1 string to match.
515 0 : return AMDGPUIntrinsic::AMDGPU_txf; // "MDGPU.txf"
516 : case 'l': // 1 string to match.
517 0 : return AMDGPUIntrinsic::AMDGPU_txl; // "MDGPU.txl"
518 : case 'q': // 1 string to match.
519 0 : return AMDGPUIntrinsic::AMDGPU_txq; // "MDGPU.txq"
520 : }
521 : break;
522 : }
523 : break;
524 : }
525 : break;
526 : case 10: // 8 strings to match.
527 40 : if (memcmp(NameR.data()+0, "MDGPU.", 6))
528 : break;
529 80 : switch (NameR[6]) {
530 : default: break;
531 : case 'b': // 1 string to match.
532 4 : if (memcmp(NameR.data()+7, "rev", 3))
533 : break;
534 : return AMDGPUIntrinsic::AMDGPU_brev; // "MDGPU.brev"
535 : case 'c': // 1 string to match.
536 4 : if (memcmp(NameR.data()+7, "ube", 3))
537 : break;
538 : return AMDGPUIntrinsic::AMDGPU_cube; // "MDGPU.cube"
539 : case 'i': // 2 strings to match.
540 20 : if (NameR[7] != 'm')
541 : break;
542 20 : switch (NameR[8]) {
543 : default: break;
544 : case 'a': // 1 string to match.
545 12 : if (NameR[9] != 'x')
546 : break;
547 : return AMDGPUIntrinsic::AMDGPU_imax; // "MDGPU.imax"
548 : case 'i': // 1 string to match.
549 8 : if (NameR[9] != 'n')
550 : break;
551 : return AMDGPUIntrinsic::AMDGPU_imin; // "MDGPU.imin"
552 : }
553 : break;
554 : case 'k': // 2 strings to match.
555 10 : if (memcmp(NameR.data()+7, "il", 2))
556 : break;
557 20 : switch (NameR[9]) {
558 : default: break;
559 : case 'l': // 1 string to match.
560 : return AMDGPUIntrinsic::AMDGPU_kill; // "MDGPU.kill"
561 : case 'p': // 1 string to match.
562 4 : return AMDGPUIntrinsic::AMDGPU_kilp; // "MDGPU.kilp"
563 : }
564 : break;
565 : case 'u': // 2 strings to match.
566 24 : if (NameR[7] != 'm')
567 : break;
568 24 : switch (NameR[8]) {
569 : default: break;
570 : case 'a': // 1 string to match.
571 12 : if (NameR[9] != 'x')
572 : break;
573 : return AMDGPUIntrinsic::AMDGPU_umax; // "MDGPU.umax"
574 : case 'i': // 1 string to match.
575 12 : if (NameR[9] != 'n')
576 : break;
577 : return AMDGPUIntrinsic::AMDGPU_umin; // "MDGPU.umin"
578 : }
579 : break;
580 : }
581 : break;
582 : case 11: // 2 strings to match.
583 7 : if (memcmp(NameR.data()+0, "MDGPU.", 6))
584 : break;
585 14 : switch (NameR[6]) {
586 : default: break;
587 : case 'c': // 1 string to match.
588 4 : if (memcmp(NameR.data()+7, "ndlt", 4))
589 : break;
590 : return AMDGPUIntrinsic::AMDGPU_cndlt; // "MDGPU.cndlt"
591 : case 't': // 1 string to match.
592 3 : if (memcmp(NameR.data()+7, "runc", 4))
593 : break;
594 : return AMDGPUIntrinsic::AMDGPU_trunc; // "MDGPU.trunc"
595 : }
596 : break;
597 : case 12: // 5 strings to match.
598 24 : if (memcmp(NameR.data()+0, "MDGPU.", 6))
599 : break;
600 48 : switch (NameR[6]) {
601 : default: break;
602 : case 'i': // 2 strings to match.
603 28 : if (NameR[7] != 'm')
604 : break;
605 28 : switch (NameR[8]) {
606 : default: break;
607 : case 'a': // 1 string to match.
608 6 : if (memcmp(NameR.data()+9, "d24", 3))
609 : break;
610 : return AMDGPUIntrinsic::AMDGPU_imad24; // "MDGPU.imad24"
611 : case 'u': // 1 string to match.
612 8 : if (memcmp(NameR.data()+9, "l24", 3))
613 : break;
614 : return AMDGPUIntrinsic::AMDGPU_imul24; // "MDGPU.imul24"
615 : }
616 : break;
617 : case 'm': // 1 string to match.
618 0 : if (memcmp(NameR.data()+7, "ullit", 5))
619 : break;
620 : return AMDGPUIntrinsic::AMDGPU_mullit; // "MDGPU.mullit"
621 : case 'u': // 2 strings to match.
622 20 : if (NameR[7] != 'm')
623 : break;
624 20 : switch (NameR[8]) {
625 : default: break;
626 : case 'a': // 1 string to match.
627 6 : if (memcmp(NameR.data()+9, "d24", 3))
628 : break;
629 : return AMDGPUIntrinsic::AMDGPU_umad24; // "MDGPU.umad24"
630 : case 'u': // 1 string to match.
631 4 : if (memcmp(NameR.data()+9, "l24", 3))
632 : break;
633 : return AMDGPUIntrinsic::AMDGPU_umul24; // "MDGPU.umul24"
634 : }
635 : break;
636 : }
637 : break;
638 : case 13: // 3 strings to match.
639 329 : if (memcmp(NameR.data()+0, "MDGPU.", 6))
640 : break;
641 658 : switch (NameR[6]) {
642 : default: break;
643 : case 'b': // 2 strings to match.
644 280 : if (memcmp(NameR.data()+7, "fe.", 3))
645 : break;
646 560 : switch (NameR[10]) {
647 : default: break;
648 : case 'i': // 1 string to match.
649 139 : if (memcmp(NameR.data()+11, "32", 2))
650 : break;
651 : return AMDGPUIntrinsic::AMDGPU_bfe_i32; // "MDGPU.bfe.i32"
652 : case 'u': // 1 string to match.
653 141 : if (memcmp(NameR.data()+11, "32", 2))
654 : break;
655 : return AMDGPUIntrinsic::AMDGPU_bfe_u32; // "MDGPU.bfe.u32"
656 : }
657 : break;
658 : case 's': // 1 string to match.
659 0 : if (memcmp(NameR.data()+7, "wizzle", 6))
660 : break;
661 : return AMDGPUIntrinsic::AMDGPU_swizzle; // "MDGPU.swizzle"
662 : }
663 : break;
664 : case 15: // 1 string to match.
665 52 : if (memcmp(NameR.data()+0, "MDGPU.flbit.i32", 15))
666 : break;
667 : return AMDGPUIntrinsic::AMDGPU_flbit_i32; // "MDGPU.flbit.i32"
668 : case 16: // 1 string to match.
669 2 : if (memcmp(NameR.data()+0, "MDGPU.legacy.rsq", 16))
670 : break;
671 : return AMDGPUIntrinsic::AMDGPU_legacy_rsq; // "MDGPU.legacy.rsq"
672 : case 18: // 1 string to match.
673 13 : if (memcmp(NameR.data()+0, "MDGPU.store.output", 18))
674 : break;
675 : return AMDGPUIntrinsic::AMDGPU_store_output; // "MDGPU.store.output"
676 : case 19: // 1 string to match.
677 65 : if (memcmp(NameR.data()+0, "MDGPU.barrier.local", 19))
678 : break;
679 : return AMDGPUIntrinsic::AMDGPU_barrier_local; // "MDGPU.barrier.local"
680 : case 20: // 5 strings to match.
681 16 : if (memcmp(NameR.data()+0, "MDGPU.", 6))
682 : break;
683 32 : switch (NameR[6]) {
684 : default: break;
685 : case 'b': // 1 string to match.
686 4 : if (memcmp(NameR.data()+7, "arrier.global", 13))
687 : break;
688 : return AMDGPUIntrinsic::AMDGPU_barrier_global; // "MDGPU.barrier.global"
689 : case 'c': // 4 strings to match.
690 8 : if (memcmp(NameR.data()+7, "vt.f32.ubyte", 12))
691 : break;
692 16 : switch (NameR[19]) {
693 : default: break;
694 : case '0': // 1 string to match.
695 : return AMDGPUIntrinsic::AMDGPU_cvt_f32_ubyte0; // "MDGPU.cvt.f32.ubyte0"
696 : case '1': // 1 string to match.
697 2 : return AMDGPUIntrinsic::AMDGPU_cvt_f32_ubyte1; // "MDGPU.cvt.f32.ubyte1"
698 : case '2': // 1 string to match.
699 2 : return AMDGPUIntrinsic::AMDGPU_cvt_f32_ubyte2; // "MDGPU.cvt.f32.ubyte2"
700 : case '3': // 1 string to match.
701 2 : return AMDGPUIntrinsic::AMDGPU_cvt_f32_ubyte3; // "MDGPU.cvt.f32.ubyte3"
702 : }
703 : break;
704 : }
705 : break;
706 : }
707 : break; // end of 'A' case.
708 : case 'R':
709 342 : switch (NameR.size()) {
710 : default: break;
711 : case 7: // 7 strings to match.
712 269 : if (memcmp(NameR.data()+0, "600.", 4))
713 : break;
714 538 : switch (NameR[4]) {
715 : default: break;
716 : case 'd': // 2 strings to match.
717 0 : if (NameR[5] != 'd')
718 : break;
719 0 : switch (NameR[6]) {
720 : default: break;
721 : case 'x': // 1 string to match.
722 : return AMDGPUIntrinsic::R600_ddx; // "600.ddx"
723 : case 'y': // 1 string to match.
724 0 : return AMDGPUIntrinsic::R600_ddy; // "600.ddy"
725 : }
726 : break;
727 : case 't': // 5 strings to match.
728 538 : switch (NameR[5]) {
729 : default: break;
730 : case 'e': // 1 string to match.
731 538 : if (NameR[6] != 'x')
732 : break;
733 : return AMDGPUIntrinsic::R600_tex; // "600.tex"
734 : case 'x': // 4 strings to match.
735 0 : switch (NameR[6]) {
736 : default: break;
737 : case 'b': // 1 string to match.
738 : return AMDGPUIntrinsic::R600_txb; // "600.txb"
739 : case 'f': // 1 string to match.
740 0 : return AMDGPUIntrinsic::R600_txf; // "600.txf"
741 : case 'l': // 1 string to match.
742 0 : return AMDGPUIntrinsic::R600_txl; // "600.txl"
743 : case 'q': // 1 string to match.
744 0 : return AMDGPUIntrinsic::R600_txq; // "600.txq"
745 : }
746 : break;
747 : }
748 : break;
749 : }
750 : break;
751 : case 8: // 3 strings to match.
752 7 : if (memcmp(NameR.data()+0, "600.t", 5))
753 : break;
754 14 : switch (NameR[5]) {
755 : default: break;
756 : case 'e': // 1 string to match.
757 7 : if (memcmp(NameR.data()+6, "xc", 2))
758 : break;
759 : return AMDGPUIntrinsic::R600_texc; // "600.texc"
760 : case 'x': // 2 strings to match.
761 0 : switch (NameR[6]) {
762 : default: break;
763 : case 'b': // 1 string to match.
764 0 : if (NameR[7] != 'c')
765 : break;
766 : return AMDGPUIntrinsic::R600_txbc; // "600.txbc"
767 : case 'l': // 1 string to match.
768 0 : if (NameR[7] != 'c')
769 : break;
770 : return AMDGPUIntrinsic::R600_txlc; // "600.txlc"
771 : }
772 : break;
773 : }
774 : break;
775 : case 9: // 1 string to match.
776 0 : if (memcmp(NameR.data()+0, "600.ldptr", 9))
777 : break;
778 : return AMDGPUIntrinsic::R600_ldptr; // "600.ldptr"
779 : case 13: // 2 strings to match.
780 0 : if (memcmp(NameR.data()+0, "600.interp.", 11))
781 : break;
782 0 : switch (NameR[11]) {
783 : default: break;
784 : case 'x': // 1 string to match.
785 0 : if (NameR[12] != 'y')
786 : break;
787 : return AMDGPUIntrinsic::R600_interp_xy; // "600.interp.xy"
788 : case 'z': // 1 string to match.
789 0 : if (NameR[12] != 'w')
790 : break;
791 : return AMDGPUIntrinsic::R600_interp_zw; // "600.interp.zw"
792 : }
793 : break;
794 : case 14: // 1 string to match.
795 0 : if (memcmp(NameR.data()+0, "600.load.input", 14))
796 : break;
797 : return AMDGPUIntrinsic::R600_load_input; // "600.load.input"
798 : case 15: // 2 strings to match.
799 0 : if (memcmp(NameR.data()+0, "600.", 4))
800 : break;
801 0 : switch (NameR[4]) {
802 : default: break;
803 : case 'l': // 1 string to match.
804 0 : if (memcmp(NameR.data()+5, "oad.texbuf", 10))
805 : break;
806 : return AMDGPUIntrinsic::R600_load_texbuf; // "600.load.texbuf"
807 : case 's': // 1 string to match.
808 0 : if (memcmp(NameR.data()+5, "tore.dummy", 10))
809 : break;
810 : return AMDGPUIntrinsic::R600_store_dummy; // "600.store.dummy"
811 : }
812 : break;
813 : case 16: // 2 strings to match.
814 0 : if (memcmp(NameR.data()+0, "600.interp.", 11))
815 : break;
816 0 : switch (NameR[11]) {
817 : default: break;
818 : case 'c': // 1 string to match.
819 0 : if (memcmp(NameR.data()+12, "onst", 4))
820 : break;
821 : return AMDGPUIntrinsic::R600_interp_const; // "600.interp.const"
822 : case 'i': // 1 string to match.
823 0 : if (memcmp(NameR.data()+12, "nput", 4))
824 : break;
825 : return AMDGPUIntrinsic::R600_interp_input; // "600.interp.input"
826 : }
827 : break;
828 : case 17: // 1 string to match.
829 63 : if (memcmp(NameR.data()+0, "600.store.swizzle", 17))
830 : break;
831 : return AMDGPUIntrinsic::R600_store_swizzle; // "600.store.swizzle"
832 : case 21: // 1 string to match.
833 0 : if (memcmp(NameR.data()+0, "600.store.pixel.depth", 21))
834 : break;
835 : return AMDGPUIntrinsic::R600_store_pixel_depth; // "600.store.pixel.depth"
836 : case 23: // 2 strings to match.
837 3 : if (memcmp(NameR.data()+0, "600.store.", 10))
838 : break;
839 6 : switch (NameR[10]) {
840 : default: break;
841 : case 'p': // 1 string to match.
842 0 : if (memcmp(NameR.data()+11, "ixel.stencil", 12))
843 : break;
844 : return AMDGPUIntrinsic::R600_store_pixel_stencil; // "600.store.pixel.stencil"
845 : case 's': // 1 string to match.
846 3 : if (memcmp(NameR.data()+11, "tream.output", 12))
847 : break;
848 : return AMDGPUIntrinsic::R600_store_stream_output; // "600.store.stream.output"
849 : }
850 : break;
851 : }
852 : break; // end of 'R' case.
853 : case 'S':
854 1814 : if (NameR.startswith("I.vs.load.input.")) return AMDGPUIntrinsic::SI_vs_load_input;
855 1810 : if (NameR.startswith("I.tbuffer.store.")) return AMDGPUIntrinsic::SI_tbuffer_store;
856 1800 : if (NameR.startswith("I.samplel.")) return AMDGPUIntrinsic::SI_samplel;
857 1794 : if (NameR.startswith("I.sampled.")) return AMDGPUIntrinsic::SI_sampled;
858 1744 : if (NameR.startswith("I.sampleb.")) return AMDGPUIntrinsic::SI_sampleb;
859 1742 : if (NameR.startswith("I.sample.")) return AMDGPUIntrinsic::SI_sample;
860 1666 : if (NameR.startswith("I.load.const.")) return AMDGPUIntrinsic::SI_load_const;
861 1194 : if (NameR.startswith("I.imageload.")) return AMDGPUIntrinsic::SI_imageload;
862 1172 : if (NameR.startswith("I.image.sample.o.")) return AMDGPUIntrinsic::SI_image_sample_o;
863 1170 : if (NameR.startswith("I.image.sample.lz.o.")) return AMDGPUIntrinsic::SI_image_sample_lz_o;
864 1168 : if (NameR.startswith("I.image.sample.lz.")) return AMDGPUIntrinsic::SI_image_sample_lz;
865 1166 : if (NameR.startswith("I.image.sample.l.o.")) return AMDGPUIntrinsic::SI_image_sample_l_o;
866 1164 : if (NameR.startswith("I.image.sample.l.")) return AMDGPUIntrinsic::SI_image_sample_l;
867 1162 : if (NameR.startswith("I.image.sample.d.o.")) return AMDGPUIntrinsic::SI_image_sample_d_o;
868 1160 : if (NameR.startswith("I.image.sample.d.cl.o.")) return AMDGPUIntrinsic::SI_image_sample_d_cl_o;
869 1158 : if (NameR.startswith("I.image.sample.d.cl.")) return AMDGPUIntrinsic::SI_image_sample_d_cl;
870 1156 : if (NameR.startswith("I.image.sample.d.")) return AMDGPUIntrinsic::SI_image_sample_d;
871 1154 : if (NameR.startswith("I.image.sample.cl.o.")) return AMDGPUIntrinsic::SI_image_sample_cl_o;
872 1152 : if (NameR.startswith("I.image.sample.cl.")) return AMDGPUIntrinsic::SI_image_sample_cl;
873 1150 : if (NameR.startswith("I.image.sample.cd.o.")) return AMDGPUIntrinsic::SI_image_sample_cd_o;
874 1148 : if (NameR.startswith("I.image.sample.cd.cl.o.")) return AMDGPUIntrinsic::SI_image_sample_cd_cl_o;
875 1146 : if (NameR.startswith("I.image.sample.cd.cl.")) return AMDGPUIntrinsic::SI_image_sample_cd_cl;
876 1144 : if (NameR.startswith("I.image.sample.cd.")) return AMDGPUIntrinsic::SI_image_sample_cd;
877 1142 : if (NameR.startswith("I.image.sample.c.o.")) return AMDGPUIntrinsic::SI_image_sample_c_o;
878 1140 : if (NameR.startswith("I.image.sample.c.lz.o.")) return AMDGPUIntrinsic::SI_image_sample_c_lz_o;
879 1138 : if (NameR.startswith("I.image.sample.c.lz.")) return AMDGPUIntrinsic::SI_image_sample_c_lz;
880 1136 : if (NameR.startswith("I.image.sample.c.l.o.")) return AMDGPUIntrinsic::SI_image_sample_c_l_o;
881 1134 : if (NameR.startswith("I.image.sample.c.l.")) return AMDGPUIntrinsic::SI_image_sample_c_l;
882 1132 : if (NameR.startswith("I.image.sample.c.d.o.")) return AMDGPUIntrinsic::SI_image_sample_c_d_o;
883 1130 : if (NameR.startswith("I.image.sample.c.d.cl.o.")) return AMDGPUIntrinsic::SI_image_sample_c_d_cl_o;
884 1128 : if (NameR.startswith("I.image.sample.c.d.cl.")) return AMDGPUIntrinsic::SI_image_sample_c_d_cl;
885 1126 : if (NameR.startswith("I.image.sample.c.d.")) return AMDGPUIntrinsic::SI_image_sample_c_d;
886 1124 : if (NameR.startswith("I.image.sample.c.cl.o.")) return AMDGPUIntrinsic::SI_image_sample_c_cl_o;
887 1122 : if (NameR.startswith("I.image.sample.c.cl.")) return AMDGPUIntrinsic::SI_image_sample_c_cl;
888 1120 : if (NameR.startswith("I.image.sample.c.cd.o.")) return AMDGPUIntrinsic::SI_image_sample_c_cd_o;
889 1118 : if (NameR.startswith("I.image.sample.c.cd.cl.o.")) return AMDGPUIntrinsic::SI_image_sample_c_cd_cl_o;
890 1116 : if (NameR.startswith("I.image.sample.c.cd.cl.")) return AMDGPUIntrinsic::SI_image_sample_c_cd_cl;
891 1114 : if (NameR.startswith("I.image.sample.c.cd.")) return AMDGPUIntrinsic::SI_image_sample_c_cd;
892 1112 : if (NameR.startswith("I.image.sample.c.b.o.")) return AMDGPUIntrinsic::SI_image_sample_c_b_o;
893 1110 : if (NameR.startswith("I.image.sample.c.b.cl.o.")) return AMDGPUIntrinsic::SI_image_sample_c_b_cl_o;
894 1108 : if (NameR.startswith("I.image.sample.c.b.cl.")) return AMDGPUIntrinsic::SI_image_sample_c_b_cl;
895 1106 : if (NameR.startswith("I.image.sample.c.b.")) return AMDGPUIntrinsic::SI_image_sample_c_b;
896 1104 : if (NameR.startswith("I.image.sample.c.")) return AMDGPUIntrinsic::SI_image_sample_c;
897 1102 : if (NameR.startswith("I.image.sample.b.o.")) return AMDGPUIntrinsic::SI_image_sample_b_o;
898 1100 : if (NameR.startswith("I.image.sample.b.cl.o.")) return AMDGPUIntrinsic::SI_image_sample_b_cl_o;
899 1098 : if (NameR.startswith("I.image.sample.b.cl.")) return AMDGPUIntrinsic::SI_image_sample_b_cl;
900 1096 : if (NameR.startswith("I.image.sample.b.")) return AMDGPUIntrinsic::SI_image_sample_b;
901 1094 : if (NameR.startswith("I.image.sample.")) return AMDGPUIntrinsic::SI_image_sample;
902 1092 : if (NameR.startswith("I.image.load.mip.")) return AMDGPUIntrinsic::SI_image_load_mip;
903 1090 : if (NameR.startswith("I.image.load.")) return AMDGPUIntrinsic::SI_image_load;
904 1088 : if (NameR.startswith("I.getresinfo.")) return AMDGPUIntrinsic::SI_getresinfo;
905 1086 : if (NameR.startswith("I.getlod.")) return AMDGPUIntrinsic::SI_getlod;
906 1080 : if (NameR.startswith("I.gather4.o.")) return AMDGPUIntrinsic::SI_gather4_o;
907 1078 : if (NameR.startswith("I.gather4.lz.o.")) return AMDGPUIntrinsic::SI_gather4_lz_o;
908 1076 : if (NameR.startswith("I.gather4.lz.")) return AMDGPUIntrinsic::SI_gather4_lz;
909 1072 : if (NameR.startswith("I.gather4.l.o.")) return AMDGPUIntrinsic::SI_gather4_l_o;
910 1068 : if (NameR.startswith("I.gather4.l.")) return AMDGPUIntrinsic::SI_gather4_l;
911 1066 : if (NameR.startswith("I.gather4.cl.o.")) return AMDGPUIntrinsic::SI_gather4_cl_o;
912 1062 : if (NameR.startswith("I.gather4.cl.")) return AMDGPUIntrinsic::SI_gather4_cl;
913 1060 : if (NameR.startswith("I.gather4.c.o.")) return AMDGPUIntrinsic::SI_gather4_c_o;
914 1056 : if (NameR.startswith("I.gather4.c.lz.o.")) return AMDGPUIntrinsic::SI_gather4_c_lz_o;
915 1052 : if (NameR.startswith("I.gather4.c.lz.")) return AMDGPUIntrinsic::SI_gather4_c_lz;
916 1050 : if (NameR.startswith("I.gather4.c.l.o.")) return AMDGPUIntrinsic::SI_gather4_c_l_o;
917 1048 : if (NameR.startswith("I.gather4.c.l.")) return AMDGPUIntrinsic::SI_gather4_c_l;
918 1044 : if (NameR.startswith("I.gather4.c.cl.o.")) return AMDGPUIntrinsic::SI_gather4_c_cl_o;
919 1042 : if (NameR.startswith("I.gather4.c.cl.")) return AMDGPUIntrinsic::SI_gather4_c_cl;
920 1038 : if (NameR.startswith("I.gather4.c.b.o.")) return AMDGPUIntrinsic::SI_gather4_c_b_o;
921 1036 : if (NameR.startswith("I.gather4.c.b.cl.o.")) return AMDGPUIntrinsic::SI_gather4_c_b_cl_o;
922 1034 : if (NameR.startswith("I.gather4.c.b.cl.")) return AMDGPUIntrinsic::SI_gather4_c_b_cl;
923 1032 : if (NameR.startswith("I.gather4.c.b.")) return AMDGPUIntrinsic::SI_gather4_c_b;
924 1028 : if (NameR.startswith("I.gather4.c.")) return AMDGPUIntrinsic::SI_gather4_c;
925 1026 : if (NameR.startswith("I.gather4.b.o.")) return AMDGPUIntrinsic::SI_gather4_b_o;
926 1022 : if (NameR.startswith("I.gather4.b.cl.o.")) return AMDGPUIntrinsic::SI_gather4_b_cl_o;
927 1020 : if (NameR.startswith("I.gather4.b.cl.")) return AMDGPUIntrinsic::SI_gather4_b_cl;
928 1016 : if (NameR.startswith("I.gather4.b.")) return AMDGPUIntrinsic::SI_gather4_b;
929 1014 : if (NameR.startswith("I.gather4.")) return AMDGPUIntrinsic::SI_gather4;
930 1010 : if (NameR.startswith("I.buffer.load.dword.")) return AMDGPUIntrinsic::SI_buffer_load_dword;
931 996 : switch (NameR.size()) {
932 : default: break;
933 : case 4: // 1 string to match.
934 182 : if (memcmp(NameR.data()+0, "I.if", 4))
935 : break;
936 : return AMDGPUIntrinsic::SI_if; // "I.if"
937 : case 5: // 1 string to match.
938 14 : if (memcmp(NameR.data()+0, "I.tid", 5))
939 : break;
940 : return AMDGPUIntrinsic::SI_tid; // "I.tid"
941 : case 6: // 2 strings to match.
942 78 : if (memcmp(NameR.data()+0, "I.", 2))
943 : break;
944 156 : switch (NameR[2]) {
945 : default: break;
946 : case 'e': // 1 string to match.
947 46 : if (memcmp(NameR.data()+3, "lse", 3))
948 : break;
949 : return AMDGPUIntrinsic::SI_else; // "I.else"
950 : case 'l': // 1 string to match.
951 32 : if (memcmp(NameR.data()+3, "oop", 3))
952 : break;
953 : return AMDGPUIntrinsic::SI_loop; // "I.loop"
954 : }
955 : break;
956 : case 7: // 1 string to match.
957 0 : if (memcmp(NameR.data()+0, "I.break", 7))
958 : break;
959 : return AMDGPUIntrinsic::SI_break; // "I.break"
960 : case 8: // 2 strings to match.
961 487 : if (memcmp(NameR.data()+0, "I.e", 3))
962 : break;
963 974 : switch (NameR[3]) {
964 : default: break;
965 : case 'n': // 1 string to match.
966 214 : if (memcmp(NameR.data()+4, "d.cf", 4))
967 : break;
968 : return AMDGPUIntrinsic::SI_end_cf; // "I.end.cf"
969 : case 'x': // 1 string to match.
970 273 : if (memcmp(NameR.data()+4, "port", 4))
971 : break;
972 : return AMDGPUIntrinsic::SI_export; // "I.export"
973 : }
974 : break;
975 : case 9: // 3 strings to match.
976 62 : if (memcmp(NameR.data()+0, "I.", 2))
977 : break;
978 124 : switch (NameR[2]) {
979 : default: break;
980 : case 'p': // 1 string to match.
981 20 : if (memcmp(NameR.data()+3, "ackf16", 6))
982 : break;
983 : return AMDGPUIntrinsic::SI_packf16; // "I.packf16"
984 : case 'r': // 1 string to match.
985 32 : if (memcmp(NameR.data()+3, "esinfo", 6))
986 : break;
987 : return AMDGPUIntrinsic::SI_resinfo; // "I.resinfo"
988 : case 's': // 1 string to match.
989 10 : if (memcmp(NameR.data()+3, "endmsg", 6))
990 : break;
991 : return AMDGPUIntrinsic::SI_sendmsg; // "I.sendmsg"
992 : }
993 : break;
994 : case 10: // 1 string to match.
995 21 : if (memcmp(NameR.data()+0, "I.if.break", 10))
996 : break;
997 : return AMDGPUIntrinsic::SI_if_break; // "I.if.break"
998 : case 11: // 1 string to match.
999 131 : if (memcmp(NameR.data()+0, "I.fs.interp", 11))
1000 : break;
1001 : return AMDGPUIntrinsic::SI_fs_interp; // "I.fs.interp"
1002 : case 12: // 1 string to match.
1003 14 : if (memcmp(NameR.data()+0, "I.else.break", 12))
1004 : break;
1005 : return AMDGPUIntrinsic::SI_else_break; // "I.else.break"
1006 : case 13: // 1 string to match.
1007 7 : if (memcmp(NameR.data()+0, "I.fs.constant", 13))
1008 : break;
1009 : return AMDGPUIntrinsic::SI_fs_constant; // "I.fs.constant"
1010 : }
1011 : break; // end of 'S' case.
1012 : case 'T':
1013 0 : switch (NameR.size()) {
1014 : default: break;
1015 : case 9: // 1 string to match.
1016 0 : if (memcmp(NameR.data()+0, "GSI.lit.z", 9))
1017 : break;
1018 : return AMDGPUIntrinsic::TGSI_lit_z; // "GSI.lit.z"
1019 : }
1020 : break; // end of 'T' case.
1021 : }
1022 : #endif
1023 :
1024 : // Global intrinsic function declaration type table.
1025 : #ifdef GET_INTRINSIC_GENERATOR_GLOBAL
1026 : static const unsigned IIT_Table[] = {
1027 : 0x44, 0x74, 0x0, 0x0, 0x4444, 0x4444, 0x4444,
1028 : 0x444, 0x44, 0x2F2F2F2F, 0x7777, 0x7A7A, 0x47, 0x47, 0x47,
1029 : 0x47, 0x4447A7A, 0x4447A7A, 0x777, 0x7A7A7, 0x44, 0x2F2F, 0x4444,
1030 : 0x444, 0x444, 0x444, 0x70, 0x0, 0x77, 0x7777, 0x777,
1031 : 0x7777A, 0x777, 0x777, 0x777, 0x777, 0x777, 0x777, 0x470,
1032 : 0x47A7A, 0x4447A7A, 0x77, 0x4447A7A, (1U<<31) | 102, (1U<<31) | 91, 0x4447A7A, 0x4447A7A,
1033 : 0x4444, 0x444, 0x444, 0x444, 0x1F1F, 0x2F2F2F2F, 0x2F2F, 0x2F2F,
1034 : 0x2F2F, (1U<<31) | 31, (1U<<31) | 31, 0x47A, 0x447, 0x77479, 0x77479, (1U<<31) | 17,
1035 : 0x47, 0x447A, 0x40, 0x70, 0x70, 0x4447A0, 0x447A0, (1U<<31) | 31,
1036 : (1U<<31) | 31, (1U<<31) | 31, (1U<<31) | 31, (1U<<31) | 17, (1U<<31) | 31, (1U<<31) | 31, (1U<<31) | 17, 0x55,
1037 : (1U<<31) | 77, (1U<<31) | 143, 0x555, 0x50, (1U<<31) | 124, 0x4447, 0x494447, (1U<<31) | 45,
1038 : (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45,
1039 : (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45,
1040 : (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45,
1041 : (1U<<31) | 62, (1U<<31) | 135, 0x515, (1U<<31) | 62, (1U<<31) | 62, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45,
1042 : (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45,
1043 : (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45,
1044 : (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45,
1045 : (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45,
1046 : (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, (1U<<31) | 45, 0x42D3F4A, 0x41F7, (1U<<31) | 139,
1047 : 0x774, 0x42D44A, (1U<<31) | 114, (1U<<31) | 114, (1U<<31) | 114, (1U<<31) | 114, 0x440, (1U<<31) | 0,
1048 : 0x4, 0x431F7A, 0x7777, 0
1049 : };
1050 :
1051 : static const unsigned char IIT_LongEncodingTable[] = {
1052 : /* 0 */ 0, 15, 1, 15, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1053 : /* 17 */ 10, 4, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1054 : /* 31 */ 10, 7, 10, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1055 : /* 45 */ 10, 7, 15, 1, 11, 4, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1056 : /* 62 */ 10, 7, 15, 1, 11, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1057 : /* 77 */ 15, 1, 15, 9, 15, 17, 4, 4, 4, 4, 4, 4, 4, 0,
1058 : /* 91 */ 10, 7, 10, 7, 4, 4, 4, 4, 4, 4, 0,
1059 : /* 102 */ 10, 7, 10, 7, 10, 7, 10, 7, 4, 4, 4, 0,
1060 : /* 114 */ 10, 7, 15, 3, 13, 2, 15, 9, 4, 0,
1061 : /* 124 */ 0, 4, 4, 4, 4, 4, 7, 7, 7, 7, 0,
1062 : /* 135 */ 5, 1, 19, 0,
1063 : /* 139 */ 0, 5, 19, 0,
1064 : /* 143 */ 5, 5, 19, 0,
1065 : 255
1066 : };
1067 :
1068 : #endif
1069 :
1070 : // Add parameter attributes that are not common to all intrinsics.
1071 : #ifdef GET_INTRINSIC_ATTRIBUTES
1072 : static AttributeSet getAttributes(LLVMContext &C, AMDGPUIntrinsic::ID id) {
1073 : static const uint8_t IntrinsicsToAttributesMap[] = {
1074 : 1, // llvm.AMDGPU.abs
1075 : 1, // llvm.AMDGPU.arl
1076 : 2, // llvm.AMDGPU.barrier.global
1077 : 2, // llvm.AMDGPU.barrier.local
1078 : 1, // llvm.AMDGPU.bfe.i32
1079 : 1, // llvm.AMDGPU.bfe.u32
1080 : 1, // llvm.AMDGPU.bfi
1081 : 1, // llvm.AMDGPU.bfm
1082 : 1, // llvm.AMDGPU.brev
1083 : 1, // llvm.AMDGPU.clamp
1084 : 1, // llvm.AMDGPU.cndlt
1085 : 1, // llvm.AMDGPU.cube
1086 : 1, // llvm.AMDGPU.cvt.f32.ubyte0
1087 : 1, // llvm.AMDGPU.cvt.f32.ubyte1
1088 : 1, // llvm.AMDGPU.cvt.f32.ubyte2
1089 : 1, // llvm.AMDGPU.cvt.f32.ubyte3
1090 : 1, // llvm.AMDGPU.ddx
1091 : 1, // llvm.AMDGPU.ddy
1092 : 1, // llvm.AMDGPU.div
1093 : 1, // llvm.AMDGPU.dp4
1094 : 1, // llvm.AMDGPU.flbit.i32
1095 : 1, // llvm.AMDGPU.fract
1096 : 1, // llvm.AMDGPU.imad24
1097 : 1, // llvm.AMDGPU.imax
1098 : 1, // llvm.AMDGPU.imin
1099 : 1, // llvm.AMDGPU.imul24
1100 : 2, // llvm.AMDGPU.kill
1101 : 2, // llvm.AMDGPU.kilp
1102 : 1, // llvm.AMDGPU.legacy.rsq
1103 : 1, // llvm.AMDGPU.lrp
1104 : 1, // llvm.AMDGPU.mul
1105 : 1, // llvm.AMDGPU.mullit
1106 : 1, // llvm.AMDGPU.pow
1107 : 1, // llvm.AMDGPU.seq
1108 : 1, // llvm.AMDGPU.sge
1109 : 1, // llvm.AMDGPU.sgt
1110 : 1, // llvm.AMDGPU.sle
1111 : 1, // llvm.AMDGPU.sne
1112 : 2, // llvm.AMDGPU.store.output
1113 : 1, // llvm.AMDGPU.swizzle
1114 : 1, // llvm.AMDGPU.tex
1115 : 1, // llvm.AMDGPU.trunc
1116 : 1, // llvm.AMDGPU.txb
1117 : 1, // llvm.AMDGPU.txd
1118 : 1, // llvm.AMDGPU.txf
1119 : 1, // llvm.AMDGPU.txl
1120 : 1, // llvm.AMDGPU.txq
1121 : 1, // llvm.AMDGPU.umad24
1122 : 1, // llvm.AMDGPU.umax
1123 : 1, // llvm.AMDGPU.umin
1124 : 1, // llvm.AMDGPU.umul24
1125 : 1, // llvm.AMDIL.abs
1126 : 1, // llvm.AMDIL.clamp
1127 : 1, // llvm.AMDIL.exp
1128 : 1, // llvm.AMDIL.fraction
1129 : 1, // llvm.AMDIL.round.nearest
1130 : 1, // llvm.R600.ddx
1131 : 1, // llvm.R600.ddy
1132 : 1, // llvm.R600.interp.const
1133 : 1, // llvm.R600.interp.input
1134 : 1, // llvm.R600.interp.xy
1135 : 1, // llvm.R600.interp.zw
1136 : 1, // llvm.R600.ldptr
1137 : 1, // llvm.R600.load.input
1138 : 1, // llvm.R600.load.texbuf
1139 : 2, // llvm.R600.store.dummy
1140 : 2, // llvm.R600.store.pixel.depth
1141 : 2, // llvm.R600.store.pixel.stencil
1142 : 2, // llvm.R600.store.stream.output
1143 : 2, // llvm.R600.store.swizzle
1144 : 1, // llvm.R600.tex
1145 : 1, // llvm.R600.texc
1146 : 1, // llvm.R600.txb
1147 : 1, // llvm.R600.txbc
1148 : 1, // llvm.R600.txf
1149 : 1, // llvm.R600.txl
1150 : 1, // llvm.R600.txlc
1151 : 1, // llvm.R600.txq
1152 : 2, // llvm.SI.break
1153 : 3, // llvm.SI.buffer.load.dword
1154 : 2, // llvm.SI.else
1155 : 2, // llvm.SI.else.break
1156 : 2, // llvm.SI.end.cf
1157 : 2, // llvm.SI.export
1158 : 1, // llvm.SI.fs.constant
1159 : 1, // llvm.SI.fs.interp
1160 : 1, // llvm.SI.gather4
1161 : 1, // llvm.SI.gather4.b
1162 : 1, // llvm.SI.gather4.b.cl
1163 : 1, // llvm.SI.gather4.b.cl.o
1164 : 1, // llvm.SI.gather4.b.o
1165 : 1, // llvm.SI.gather4.c
1166 : 1, // llvm.SI.gather4.c.b
1167 : 1, // llvm.SI.gather4.c.b.cl
1168 : 1, // llvm.SI.gather4.c.b.cl.o
1169 : 1, // llvm.SI.gather4.c.b.o
1170 : 1, // llvm.SI.gather4.c.cl
1171 : 1, // llvm.SI.gather4.c.cl.o
1172 : 1, // llvm.SI.gather4.c.l
1173 : 1, // llvm.SI.gather4.c.l.o
1174 : 1, // llvm.SI.gather4.c.lz
1175 : 1, // llvm.SI.gather4.c.lz.o
1176 : 1, // llvm.SI.gather4.c.o
1177 : 1, // llvm.SI.gather4.cl
1178 : 1, // llvm.SI.gather4.cl.o
1179 : 1, // llvm.SI.gather4.l
1180 : 1, // llvm.SI.gather4.l.o
1181 : 1, // llvm.SI.gather4.lz
1182 : 1, // llvm.SI.gather4.lz.o
1183 : 1, // llvm.SI.gather4.o
1184 : 1, // llvm.SI.getlod
1185 : 1, // llvm.SI.getresinfo
1186 : 2, // llvm.SI.if
1187 : 2, // llvm.SI.if.break
1188 : 1, // llvm.SI.image.load
1189 : 1, // llvm.SI.image.load.mip
1190 : 1, // llvm.SI.image.sample
1191 : 1, // llvm.SI.image.sample.b
1192 : 1, // llvm.SI.image.sample.b.cl
1193 : 1, // llvm.SI.image.sample.b.cl.o
1194 : 1, // llvm.SI.image.sample.b.o
1195 : 1, // llvm.SI.image.sample.c
1196 : 1, // llvm.SI.image.sample.c.b
1197 : 1, // llvm.SI.image.sample.c.b.cl
1198 : 1, // llvm.SI.image.sample.c.b.cl.o
1199 : 1, // llvm.SI.image.sample.c.b.o
1200 : 1, // llvm.SI.image.sample.c.cd
1201 : 1, // llvm.SI.image.sample.c.cd.cl
1202 : 1, // llvm.SI.image.sample.c.cd.cl.o
1203 : 1, // llvm.SI.image.sample.c.cd.o
1204 : 1, // llvm.SI.image.sample.c.cl
1205 : 1, // llvm.SI.image.sample.c.cl.o
1206 : 1, // llvm.SI.image.sample.c.d
1207 : 1, // llvm.SI.image.sample.c.d.cl
1208 : 1, // llvm.SI.image.sample.c.d.cl.o
1209 : 1, // llvm.SI.image.sample.c.d.o
1210 : 1, // llvm.SI.image.sample.c.l
1211 : 1, // llvm.SI.image.sample.c.l.o
1212 : 1, // llvm.SI.image.sample.c.lz
1213 : 1, // llvm.SI.image.sample.c.lz.o
1214 : 1, // llvm.SI.image.sample.c.o
1215 : 1, // llvm.SI.image.sample.cd
1216 : 1, // llvm.SI.image.sample.cd.cl
1217 : 1, // llvm.SI.image.sample.cd.cl.o
1218 : 1, // llvm.SI.image.sample.cd.o
1219 : 1, // llvm.SI.image.sample.cl
1220 : 1, // llvm.SI.image.sample.cl.o
1221 : 1, // llvm.SI.image.sample.d
1222 : 1, // llvm.SI.image.sample.d.cl
1223 : 1, // llvm.SI.image.sample.d.cl.o
1224 : 1, // llvm.SI.image.sample.d.o
1225 : 1, // llvm.SI.image.sample.l
1226 : 1, // llvm.SI.image.sample.l.o
1227 : 1, // llvm.SI.image.sample.lz
1228 : 1, // llvm.SI.image.sample.lz.o
1229 : 1, // llvm.SI.image.sample.o
1230 : 1, // llvm.SI.imageload
1231 : 1, // llvm.SI.load.const
1232 : 2, // llvm.SI.loop
1233 : 1, // llvm.SI.packf16
1234 : 1, // llvm.SI.resinfo
1235 : 1, // llvm.SI.sample
1236 : 1, // llvm.SI.sampleb
1237 : 1, // llvm.SI.sampled
1238 : 1, // llvm.SI.samplel
1239 : 1, // llvm.SI.sendmsg
1240 : 2, // llvm.SI.tbuffer.store
1241 : 1, // llvm.SI.tid
1242 : 1, // llvm.SI.vs.load.input
1243 : 1, // llvm.TGSI.lit.z
1244 : };
1245 :
1246 : AttributeSet AS[1];
1247 : unsigned NumAttrs = 0;
1248 : if (id != 0) {
1249 : switch(IntrinsicsToAttributesMap[id - Intrinsic::num_intrinsics]) {
1250 : default: llvm_unreachable("Invalid attribute number");
1251 : case 1: {
1252 : const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::ReadNone};
1253 : AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
1254 : NumAttrs = 1;
1255 : break;
1256 : }
1257 : case 3: {
1258 : const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::ReadOnly};
1259 : AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
1260 : NumAttrs = 1;
1261 : break;
1262 : }
1263 : case 2: {
1264 : const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
1265 : AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
1266 : NumAttrs = 1;
1267 : break;
1268 : }
1269 : }
1270 : }
1271 : return AttributeSet::get(C, makeArrayRef(AS, NumAttrs));
1272 : }
1273 : #endif // GET_INTRINSIC_ATTRIBUTES
1274 :
1275 : // Determine intrinsic alias analysis mod/ref behavior.
1276 : #ifdef GET_INTRINSIC_MODREF_BEHAVIOR
1277 : assert(iid <= Intrinsic::TGSI_lit_z && "Unknown intrinsic.");
1278 :
1279 : static const uint8_t IntrinsicModRefBehavior[] = {
1280 : /* invalid */ UnknownModRefBehavior,
1281 : /* AMDGPUAMDGPU_abs */ DoesNotAccessMemory,
1282 : /* AMDGPUAMDGPU_arl */ DoesNotAccessMemory,
1283 : /* AMDGPUAMDGPU_barrier_global */ UnknownModRefBehavior,
1284 : /* AMDGPUAMDGPU_barrier_local */ UnknownModRefBehavior,
1285 : /* AMDGPUAMDGPU_bfe_i32 */ DoesNotAccessMemory,
1286 : /* AMDGPUAMDGPU_bfe_u32 */ DoesNotAccessMemory,
1287 : /* AMDGPUAMDGPU_bfi */ DoesNotAccessMemory,
1288 : /* AMDGPUAMDGPU_bfm */ DoesNotAccessMemory,
1289 : /* AMDGPUAMDGPU_brev */ DoesNotAccessMemory,
1290 : /* AMDGPUAMDGPU_clamp */ DoesNotAccessMemory,
1291 : /* AMDGPUAMDGPU_cndlt */ DoesNotAccessMemory,
1292 : /* AMDGPUAMDGPU_cube */ DoesNotAccessMemory,
1293 : /* AMDGPUAMDGPU_cvt_f32_ubyte0 */ DoesNotAccessMemory,
1294 : /* AMDGPUAMDGPU_cvt_f32_ubyte1 */ DoesNotAccessMemory,
1295 : /* AMDGPUAMDGPU_cvt_f32_ubyte2 */ DoesNotAccessMemory,
1296 : /* AMDGPUAMDGPU_cvt_f32_ubyte3 */ DoesNotAccessMemory,
1297 : /* AMDGPUAMDGPU_ddx */ DoesNotAccessMemory,
1298 : /* AMDGPUAMDGPU_ddy */ DoesNotAccessMemory,
1299 : /* AMDGPUAMDGPU_div */ DoesNotAccessMemory,
1300 : /* AMDGPUAMDGPU_dp4 */ DoesNotAccessMemory,
1301 : /* AMDGPUAMDGPU_flbit_i32 */ DoesNotAccessMemory,
1302 : /* AMDGPUAMDGPU_fract */ DoesNotAccessMemory,
1303 : /* AMDGPUAMDGPU_imad24 */ DoesNotAccessMemory,
1304 : /* AMDGPUAMDGPU_imax */ DoesNotAccessMemory,
1305 : /* AMDGPUAMDGPU_imin */ DoesNotAccessMemory,
1306 : /* AMDGPUAMDGPU_imul24 */ DoesNotAccessMemory,
1307 : /* AMDGPUAMDGPU_kill */ UnknownModRefBehavior,
1308 : /* AMDGPUAMDGPU_kilp */ UnknownModRefBehavior,
1309 : /* AMDGPUAMDGPU_legacy_rsq */ DoesNotAccessMemory,
1310 : /* AMDGPUAMDGPU_lrp */ DoesNotAccessMemory,
1311 : /* AMDGPUAMDGPU_mul */ DoesNotAccessMemory,
1312 : /* AMDGPUAMDGPU_mullit */ DoesNotAccessMemory,
1313 : /* AMDGPUAMDGPU_pow */ DoesNotAccessMemory,
1314 : /* AMDGPUAMDGPU_seq */ DoesNotAccessMemory,
1315 : /* AMDGPUAMDGPU_sge */ DoesNotAccessMemory,
1316 : /* AMDGPUAMDGPU_sgt */ DoesNotAccessMemory,
1317 : /* AMDGPUAMDGPU_sle */ DoesNotAccessMemory,
1318 : /* AMDGPUAMDGPU_sne */ DoesNotAccessMemory,
1319 : /* AMDGPUAMDGPU_store_output */ UnknownModRefBehavior,
1320 : /* AMDGPUAMDGPU_swizzle */ DoesNotAccessMemory,
1321 : /* AMDGPUAMDGPU_tex */ DoesNotAccessMemory,
1322 : /* AMDGPUAMDGPU_trunc */ DoesNotAccessMemory,
1323 : /* AMDGPUAMDGPU_txb */ DoesNotAccessMemory,
1324 : /* AMDGPUAMDGPU_txd */ DoesNotAccessMemory,
1325 : /* AMDGPUAMDGPU_txf */ DoesNotAccessMemory,
1326 : /* AMDGPUAMDGPU_txl */ DoesNotAccessMemory,
1327 : /* AMDGPUAMDGPU_txq */ DoesNotAccessMemory,
1328 : /* AMDGPUAMDGPU_umad24 */ DoesNotAccessMemory,
1329 : /* AMDGPUAMDGPU_umax */ DoesNotAccessMemory,
1330 : /* AMDGPUAMDGPU_umin */ DoesNotAccessMemory,
1331 : /* AMDGPUAMDGPU_umul24 */ DoesNotAccessMemory,
1332 : /* AMDGPUAMDIL_abs */ DoesNotAccessMemory,
1333 : /* AMDGPUAMDIL_clamp */ DoesNotAccessMemory,
1334 : /* AMDGPUAMDIL_exp */ DoesNotAccessMemory,
1335 : /* AMDGPUAMDIL_fraction */ DoesNotAccessMemory,
1336 : /* AMDGPUAMDIL_round_nearest */ DoesNotAccessMemory,
1337 : /* AMDGPUR600_ddx */ DoesNotAccessMemory,
1338 : /* AMDGPUR600_ddy */ DoesNotAccessMemory,
1339 : /* AMDGPUR600_interp_const */ DoesNotAccessMemory,
1340 : /* AMDGPUR600_interp_input */ DoesNotAccessMemory,
1341 : /* AMDGPUR600_interp_xy */ DoesNotAccessMemory,
1342 : /* AMDGPUR600_interp_zw */ DoesNotAccessMemory,
1343 : /* AMDGPUR600_ldptr */ DoesNotAccessMemory,
1344 : /* AMDGPUR600_load_input */ DoesNotAccessMemory,
1345 : /* AMDGPUR600_load_texbuf */ DoesNotAccessMemory,
1346 : /* AMDGPUR600_store_dummy */ UnknownModRefBehavior,
1347 : /* AMDGPUR600_store_pixel_depth */ UnknownModRefBehavior,
1348 : /* AMDGPUR600_store_pixel_stencil */ UnknownModRefBehavior,
1349 : /* AMDGPUR600_store_stream_output */ UnknownModRefBehavior,
1350 : /* AMDGPUR600_store_swizzle */ UnknownModRefBehavior,
1351 : /* AMDGPUR600_tex */ DoesNotAccessMemory,
1352 : /* AMDGPUR600_texc */ DoesNotAccessMemory,
1353 : /* AMDGPUR600_txb */ DoesNotAccessMemory,
1354 : /* AMDGPUR600_txbc */ DoesNotAccessMemory,
1355 : /* AMDGPUR600_txf */ DoesNotAccessMemory,
1356 : /* AMDGPUR600_txl */ DoesNotAccessMemory,
1357 : /* AMDGPUR600_txlc */ DoesNotAccessMemory,
1358 : /* AMDGPUR600_txq */ DoesNotAccessMemory,
1359 : /* AMDGPUSI_break */ UnknownModRefBehavior,
1360 : /* AMDGPUSI_buffer_load_dword */ OnlyReadsArgumentPointees,
1361 : /* AMDGPUSI_else */ UnknownModRefBehavior,
1362 : /* AMDGPUSI_else_break */ UnknownModRefBehavior,
1363 : /* AMDGPUSI_end_cf */ UnknownModRefBehavior,
1364 : /* AMDGPUSI_export */ UnknownModRefBehavior,
1365 : /* AMDGPUSI_fs_constant */ DoesNotAccessMemory,
1366 : /* AMDGPUSI_fs_interp */ DoesNotAccessMemory,
1367 : /* AMDGPUSI_gather4 */ DoesNotAccessMemory,
1368 : /* AMDGPUSI_gather4_b */ DoesNotAccessMemory,
1369 : /* AMDGPUSI_gather4_b_cl */ DoesNotAccessMemory,
1370 : /* AMDGPUSI_gather4_b_cl_o */ DoesNotAccessMemory,
1371 : /* AMDGPUSI_gather4_b_o */ DoesNotAccessMemory,
1372 : /* AMDGPUSI_gather4_c */ DoesNotAccessMemory,
1373 : /* AMDGPUSI_gather4_c_b */ DoesNotAccessMemory,
1374 : /* AMDGPUSI_gather4_c_b_cl */ DoesNotAccessMemory,
1375 : /* AMDGPUSI_gather4_c_b_cl_o */ DoesNotAccessMemory,
1376 : /* AMDGPUSI_gather4_c_b_o */ DoesNotAccessMemory,
1377 : /* AMDGPUSI_gather4_c_cl */ DoesNotAccessMemory,
1378 : /* AMDGPUSI_gather4_c_cl_o */ DoesNotAccessMemory,
1379 : /* AMDGPUSI_gather4_c_l */ DoesNotAccessMemory,
1380 : /* AMDGPUSI_gather4_c_l_o */ DoesNotAccessMemory,
1381 : /* AMDGPUSI_gather4_c_lz */ DoesNotAccessMemory,
1382 : /* AMDGPUSI_gather4_c_lz_o */ DoesNotAccessMemory,
1383 : /* AMDGPUSI_gather4_c_o */ DoesNotAccessMemory,
1384 : /* AMDGPUSI_gather4_cl */ DoesNotAccessMemory,
1385 : /* AMDGPUSI_gather4_cl_o */ DoesNotAccessMemory,
1386 : /* AMDGPUSI_gather4_l */ DoesNotAccessMemory,
1387 : /* AMDGPUSI_gather4_l_o */ DoesNotAccessMemory,
1388 : /* AMDGPUSI_gather4_lz */ DoesNotAccessMemory,
1389 : /* AMDGPUSI_gather4_lz_o */ DoesNotAccessMemory,
1390 : /* AMDGPUSI_gather4_o */ DoesNotAccessMemory,
1391 : /* AMDGPUSI_getlod */ DoesNotAccessMemory,
1392 : /* AMDGPUSI_getresinfo */ DoesNotAccessMemory,
1393 : /* AMDGPUSI_if */ UnknownModRefBehavior,
1394 : /* AMDGPUSI_if_break */ UnknownModRefBehavior,
1395 : /* AMDGPUSI_image_load */ DoesNotAccessMemory,
1396 : /* AMDGPUSI_image_load_mip */ DoesNotAccessMemory,
1397 : /* AMDGPUSI_image_sample */ DoesNotAccessMemory,
1398 : /* AMDGPUSI_image_sample_b */ DoesNotAccessMemory,
1399 : /* AMDGPUSI_image_sample_b_cl */ DoesNotAccessMemory,
1400 : /* AMDGPUSI_image_sample_b_cl_o */ DoesNotAccessMemory,
1401 : /* AMDGPUSI_image_sample_b_o */ DoesNotAccessMemory,
1402 : /* AMDGPUSI_image_sample_c */ DoesNotAccessMemory,
1403 : /* AMDGPUSI_image_sample_c_b */ DoesNotAccessMemory,
1404 : /* AMDGPUSI_image_sample_c_b_cl */ DoesNotAccessMemory,
1405 : /* AMDGPUSI_image_sample_c_b_cl_o */ DoesNotAccessMemory,
1406 : /* AMDGPUSI_image_sample_c_b_o */ DoesNotAccessMemory,
1407 : /* AMDGPUSI_image_sample_c_cd */ DoesNotAccessMemory,
1408 : /* AMDGPUSI_image_sample_c_cd_cl */ DoesNotAccessMemory,
1409 : /* AMDGPUSI_image_sample_c_cd_cl_o */ DoesNotAccessMemory,
1410 : /* AMDGPUSI_image_sample_c_cd_o */ DoesNotAccessMemory,
1411 : /* AMDGPUSI_image_sample_c_cl */ DoesNotAccessMemory,
1412 : /* AMDGPUSI_image_sample_c_cl_o */ DoesNotAccessMemory,
1413 : /* AMDGPUSI_image_sample_c_d */ DoesNotAccessMemory,
1414 : /* AMDGPUSI_image_sample_c_d_cl */ DoesNotAccessMemory,
1415 : /* AMDGPUSI_image_sample_c_d_cl_o */ DoesNotAccessMemory,
1416 : /* AMDGPUSI_image_sample_c_d_o */ DoesNotAccessMemory,
1417 : /* AMDGPUSI_image_sample_c_l */ DoesNotAccessMemory,
1418 : /* AMDGPUSI_image_sample_c_l_o */ DoesNotAccessMemory,
1419 : /* AMDGPUSI_image_sample_c_lz */ DoesNotAccessMemory,
1420 : /* AMDGPUSI_image_sample_c_lz_o */ DoesNotAccessMemory,
1421 : /* AMDGPUSI_image_sample_c_o */ DoesNotAccessMemory,
1422 : /* AMDGPUSI_image_sample_cd */ DoesNotAccessMemory,
1423 : /* AMDGPUSI_image_sample_cd_cl */ DoesNotAccessMemory,
1424 : /* AMDGPUSI_image_sample_cd_cl_o */ DoesNotAccessMemory,
1425 : /* AMDGPUSI_image_sample_cd_o */ DoesNotAccessMemory,
1426 : /* AMDGPUSI_image_sample_cl */ DoesNotAccessMemory,
1427 : /* AMDGPUSI_image_sample_cl_o */ DoesNotAccessMemory,
1428 : /* AMDGPUSI_image_sample_d */ DoesNotAccessMemory,
1429 : /* AMDGPUSI_image_sample_d_cl */ DoesNotAccessMemory,
1430 : /* AMDGPUSI_image_sample_d_cl_o */ DoesNotAccessMemory,
1431 : /* AMDGPUSI_image_sample_d_o */ DoesNotAccessMemory,
1432 : /* AMDGPUSI_image_sample_l */ DoesNotAccessMemory,
1433 : /* AMDGPUSI_image_sample_l_o */ DoesNotAccessMemory,
1434 : /* AMDGPUSI_image_sample_lz */ DoesNotAccessMemory,
1435 : /* AMDGPUSI_image_sample_lz_o */ DoesNotAccessMemory,
1436 : /* AMDGPUSI_image_sample_o */ DoesNotAccessMemory,
1437 : /* AMDGPUSI_imageload */ DoesNotAccessMemory,
1438 : /* AMDGPUSI_load_const */ DoesNotAccessMemory,
1439 : /* AMDGPUSI_loop */ UnknownModRefBehavior,
1440 : /* AMDGPUSI_packf16 */ DoesNotAccessMemory,
1441 : /* AMDGPUSI_resinfo */ DoesNotAccessMemory,
1442 : /* AMDGPUSI_sample */ DoesNotAccessMemory,
1443 : /* AMDGPUSI_sampleb */ DoesNotAccessMemory,
1444 : /* AMDGPUSI_sampled */ DoesNotAccessMemory,
1445 : /* AMDGPUSI_samplel */ DoesNotAccessMemory,
1446 : /* AMDGPUSI_sendmsg */ DoesNotAccessMemory,
1447 : /* AMDGPUSI_tbuffer_store */ UnknownModRefBehavior,
1448 : /* AMDGPUSI_tid */ DoesNotAccessMemory,
1449 : /* AMDGPUSI_vs_load_input */ DoesNotAccessMemory,
1450 : /* AMDGPUTGSI_lit_z */ DoesNotAccessMemory,
1451 : };
1452 :
1453 : return static_cast<ModRefBehavior>(IntrinsicModRefBehavior[iid]);
1454 : #endif // GET_INTRINSIC_MODREF_BEHAVIOR
1455 :
1456 : // Get the LLVM intrinsic that corresponds to a GCC builtin.
1457 : // This is used by the C front-end. The GCC builtin name is passed
1458 : // in as BuiltinName, and a target prefix (e.g. 'ppc') is passed
1459 : // in as TargetPrefix. The result is assigned to 'IntrinsicID'.
1460 : #ifdef GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN
1461 : static AMDGPUIntrinsic::ID getIntrinsicForGCCBuiltin(const char *TargetPrefixStr, const char *BuiltinNameStr) {
1462 : StringRef BuiltinName(BuiltinNameStr);
1463 : StringRef TargetPrefix(TargetPrefixStr);
1464 :
1465 : return (AMDGPUIntrinsic::ID)Intrinsic::not_intrinsic;
1466 : }
1467 : #endif
1468 :
1469 : // Get the LLVM intrinsic that corresponds to a MS builtin.
1470 : // This is used by the C front-end. The MS builtin name is passed
1471 : // in as a BuiltinName, and a target prefix (e.g. 'arm') is passed
1472 : // in as a TargetPrefix. The result is assigned to 'IntrinsicID'.
1473 : #ifdef GET_LLVM_INTRINSIC_FOR_MS_BUILTIN
1474 : static AMDGPUIntrinsic::ID getIntrinsicForMSBuiltin(const char *TP, const char *BN) {
1475 : StringRef BuiltinName(BN);
1476 : StringRef TargetPrefix(TP);
1477 :
1478 : return (AMDGPUIntrinsic::ID)Intrinsic::not_intrinsic;
1479 : }
1480 : #endif
1481 :
1482 : #if defined(_MSC_VER) && defined(setjmp_undefined_for_msvc)
1483 : // let's return it to _setjmp state
1484 : # pragma pop_macro("setjmp")
1485 : # undef setjmp_undefined_for_msvc
1486 : #endif
1487 :
|