1 /* Copyright (C) 2014 Connor Abbott
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a
4  * copy of this software and associated documentation files (the "Software"),
5  * to deal in the Software without restriction, including without limitation
6  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
7  * and/or sell copies of the Software, and to permit persons to whom the
8  * Software is furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice (including the next
11  * paragraph) shall be included in all copies or substantial portions of the
12  * Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20  * IN THE SOFTWARE.
21  *
22  * Authors:
23  *    Connor Abbott (cwabbott0@gmail.com)
24  */
25 
26 #ifndef _NIR_OPCODES_
27 #define _NIR_OPCODES_
28 
29 
30 
31 typedef enum {
32    nir_op_amul,
33    nir_op_b16all_fequal16,
34    nir_op_b16all_fequal2,
35    nir_op_b16all_fequal3,
36    nir_op_b16all_fequal4,
37    nir_op_b16all_fequal8,
38    nir_op_b16all_iequal16,
39    nir_op_b16all_iequal2,
40    nir_op_b16all_iequal3,
41    nir_op_b16all_iequal4,
42    nir_op_b16all_iequal8,
43    nir_op_b16any_fnequal16,
44    nir_op_b16any_fnequal2,
45    nir_op_b16any_fnequal3,
46    nir_op_b16any_fnequal4,
47    nir_op_b16any_fnequal8,
48    nir_op_b16any_inequal16,
49    nir_op_b16any_inequal2,
50    nir_op_b16any_inequal3,
51    nir_op_b16any_inequal4,
52    nir_op_b16any_inequal8,
53    nir_op_b16csel,
54    nir_op_b2b1,
55    nir_op_b2b16,
56    nir_op_b2b32,
57    nir_op_b2b8,
58    nir_op_b2f16,
59    nir_op_b2f32,
60    nir_op_b2f64,
61    nir_op_b2i1,
62    nir_op_b2i16,
63    nir_op_b2i32,
64    nir_op_b2i64,
65    nir_op_b2i8,
66    nir_op_b32all_fequal16,
67    nir_op_b32all_fequal2,
68    nir_op_b32all_fequal3,
69    nir_op_b32all_fequal4,
70    nir_op_b32all_fequal8,
71    nir_op_b32all_iequal16,
72    nir_op_b32all_iequal2,
73    nir_op_b32all_iequal3,
74    nir_op_b32all_iequal4,
75    nir_op_b32all_iequal8,
76    nir_op_b32any_fnequal16,
77    nir_op_b32any_fnequal2,
78    nir_op_b32any_fnequal3,
79    nir_op_b32any_fnequal4,
80    nir_op_b32any_fnequal8,
81    nir_op_b32any_inequal16,
82    nir_op_b32any_inequal2,
83    nir_op_b32any_inequal3,
84    nir_op_b32any_inequal4,
85    nir_op_b32any_inequal8,
86    nir_op_b32csel,
87    nir_op_b8all_fequal16,
88    nir_op_b8all_fequal2,
89    nir_op_b8all_fequal3,
90    nir_op_b8all_fequal4,
91    nir_op_b8all_fequal8,
92    nir_op_b8all_iequal16,
93    nir_op_b8all_iequal2,
94    nir_op_b8all_iequal3,
95    nir_op_b8all_iequal4,
96    nir_op_b8all_iequal8,
97    nir_op_b8any_fnequal16,
98    nir_op_b8any_fnequal2,
99    nir_op_b8any_fnequal3,
100    nir_op_b8any_fnequal4,
101    nir_op_b8any_fnequal8,
102    nir_op_b8any_inequal16,
103    nir_op_b8any_inequal2,
104    nir_op_b8any_inequal3,
105    nir_op_b8any_inequal4,
106    nir_op_b8any_inequal8,
107    nir_op_b8csel,
108    nir_op_ball_fequal16,
109    nir_op_ball_fequal2,
110    nir_op_ball_fequal3,
111    nir_op_ball_fequal4,
112    nir_op_ball_fequal8,
113    nir_op_ball_iequal16,
114    nir_op_ball_iequal2,
115    nir_op_ball_iequal3,
116    nir_op_ball_iequal4,
117    nir_op_ball_iequal8,
118    nir_op_bany_fnequal16,
119    nir_op_bany_fnequal2,
120    nir_op_bany_fnequal3,
121    nir_op_bany_fnequal4,
122    nir_op_bany_fnequal8,
123    nir_op_bany_inequal16,
124    nir_op_bany_inequal2,
125    nir_op_bany_inequal3,
126    nir_op_bany_inequal4,
127    nir_op_bany_inequal8,
128    nir_op_bcsel,
129    nir_op_bfi,
130    nir_op_bfm,
131    nir_op_bit_count,
132    nir_op_bitfield_insert,
133    nir_op_bitfield_reverse,
134    nir_op_bitfield_select,
135    nir_op_cube_face_coord,
136    nir_op_cube_face_index,
137    nir_op_extract_i16,
138    nir_op_extract_i8,
139    nir_op_extract_u16,
140    nir_op_extract_u8,
141    nir_op_f2b1,
142    nir_op_f2b16,
143    nir_op_f2b32,
144    nir_op_f2b8,
145    nir_op_f2f16,
146    nir_op_f2f16_rtne,
147    nir_op_f2f16_rtz,
148    nir_op_f2f32,
149    nir_op_f2f64,
150    nir_op_f2fmp,
151    nir_op_f2i1,
152    nir_op_f2i16,
153    nir_op_f2i32,
154    nir_op_f2i64,
155    nir_op_f2i8,
156    nir_op_f2imp,
157    nir_op_f2u1,
158    nir_op_f2u16,
159    nir_op_f2u32,
160    nir_op_f2u64,
161    nir_op_f2u8,
162    nir_op_f2ump,
163    nir_op_fabs,
164    nir_op_fadd,
165    nir_op_fall_equal16,
166    nir_op_fall_equal2,
167    nir_op_fall_equal3,
168    nir_op_fall_equal4,
169    nir_op_fall_equal8,
170    nir_op_fany_nequal16,
171    nir_op_fany_nequal2,
172    nir_op_fany_nequal3,
173    nir_op_fany_nequal4,
174    nir_op_fany_nequal8,
175    nir_op_fceil,
176    nir_op_fclamp_pos,
177    nir_op_fcos,
178    nir_op_fcsel,
179    nir_op_fddx,
180    nir_op_fddx_coarse,
181    nir_op_fddx_fine,
182    nir_op_fddy,
183    nir_op_fddy_coarse,
184    nir_op_fddy_fine,
185    nir_op_fdiv,
186    nir_op_fdot16,
187    nir_op_fdot16_replicated,
188    nir_op_fdot2,
189    nir_op_fdot2_replicated,
190    nir_op_fdot3,
191    nir_op_fdot3_replicated,
192    nir_op_fdot4,
193    nir_op_fdot4_replicated,
194    nir_op_fdot8,
195    nir_op_fdot8_replicated,
196    nir_op_fdph,
197    nir_op_fdph_replicated,
198    nir_op_feq,
199    nir_op_feq16,
200    nir_op_feq32,
201    nir_op_feq8,
202    nir_op_fexp2,
203    nir_op_ffloor,
204    nir_op_ffma,
205    nir_op_ffract,
206    nir_op_fge,
207    nir_op_fge16,
208    nir_op_fge32,
209    nir_op_fge8,
210    nir_op_find_lsb,
211    nir_op_fisfinite,
212    nir_op_fisnormal,
213    nir_op_flog2,
214    nir_op_flrp,
215    nir_op_flt,
216    nir_op_flt16,
217    nir_op_flt32,
218    nir_op_flt8,
219    nir_op_fmax,
220    nir_op_fmin,
221    nir_op_fmod,
222    nir_op_fmul,
223    nir_op_fneg,
224    nir_op_fneu,
225    nir_op_fneu16,
226    nir_op_fneu32,
227    nir_op_fneu8,
228    nir_op_fpow,
229    nir_op_fquantize2f16,
230    nir_op_frcp,
231    nir_op_frem,
232    nir_op_frexp_exp,
233    nir_op_frexp_sig,
234    nir_op_fround_even,
235    nir_op_frsq,
236    nir_op_fsat,
237    nir_op_fsat_signed,
238    nir_op_fsign,
239    nir_op_fsin,
240    nir_op_fsqrt,
241    nir_op_fsub,
242    nir_op_fsum2,
243    nir_op_fsum3,
244    nir_op_fsum4,
245    nir_op_ftrunc,
246    nir_op_i2b1,
247    nir_op_i2b16,
248    nir_op_i2b32,
249    nir_op_i2b8,
250    nir_op_i2f16,
251    nir_op_i2f32,
252    nir_op_i2f64,
253    nir_op_i2fmp,
254    nir_op_i2i1,
255    nir_op_i2i16,
256    nir_op_i2i32,
257    nir_op_i2i64,
258    nir_op_i2i8,
259    nir_op_i2imp,
260    nir_op_iabs,
261    nir_op_iadd,
262    nir_op_iadd_sat,
263    nir_op_iand,
264    nir_op_ibfe,
265    nir_op_ibitfield_extract,
266    nir_op_idiv,
267    nir_op_ieq,
268    nir_op_ieq16,
269    nir_op_ieq32,
270    nir_op_ieq8,
271    nir_op_ifind_msb,
272    nir_op_ige,
273    nir_op_ige16,
274    nir_op_ige32,
275    nir_op_ige8,
276    nir_op_ihadd,
277    nir_op_ilt,
278    nir_op_ilt16,
279    nir_op_ilt32,
280    nir_op_ilt8,
281    nir_op_imad24_ir3,
282    nir_op_imadsh_mix16,
283    nir_op_imax,
284    nir_op_imin,
285    nir_op_imod,
286    nir_op_imul,
287    nir_op_imul24,
288    nir_op_imul_2x32_64,
289    nir_op_imul_32x16,
290    nir_op_imul_high,
291    nir_op_ine,
292    nir_op_ine16,
293    nir_op_ine32,
294    nir_op_ine8,
295    nir_op_ineg,
296    nir_op_inot,
297    nir_op_ior,
298    nir_op_irem,
299    nir_op_irhadd,
300    nir_op_ishl,
301    nir_op_ishr,
302    nir_op_isign,
303    nir_op_isub,
304    nir_op_isub_sat,
305    nir_op_ixor,
306    nir_op_ldexp,
307    nir_op_mov,
308    nir_op_pack_32_2x16,
309    nir_op_pack_32_2x16_split,
310    nir_op_pack_32_4x8,
311    nir_op_pack_64_2x32,
312    nir_op_pack_64_2x32_split,
313    nir_op_pack_64_4x16,
314    nir_op_pack_half_2x16,
315    nir_op_pack_half_2x16_split,
316    nir_op_pack_snorm_2x16,
317    nir_op_pack_snorm_4x8,
318    nir_op_pack_unorm_2x16,
319    nir_op_pack_unorm_4x8,
320    nir_op_pack_uvec2_to_uint,
321    nir_op_pack_uvec4_to_uint,
322    nir_op_seq,
323    nir_op_sge,
324    nir_op_slt,
325    nir_op_sne,
326    nir_op_u2f16,
327    nir_op_u2f32,
328    nir_op_u2f64,
329    nir_op_u2fmp,
330    nir_op_u2u1,
331    nir_op_u2u16,
332    nir_op_u2u32,
333    nir_op_u2u64,
334    nir_op_u2u8,
335    nir_op_uabs_isub,
336    nir_op_uabs_usub,
337    nir_op_uadd_carry,
338    nir_op_uadd_sat,
339    nir_op_ubfe,
340    nir_op_ubitfield_extract,
341    nir_op_uclz,
342    nir_op_udiv,
343    nir_op_ufind_msb,
344    nir_op_uge,
345    nir_op_uge16,
346    nir_op_uge32,
347    nir_op_uge8,
348    nir_op_uhadd,
349    nir_op_ult,
350    nir_op_ult16,
351    nir_op_ult32,
352    nir_op_ult8,
353    nir_op_umad24,
354    nir_op_umax,
355    nir_op_umax_4x8,
356    nir_op_umin,
357    nir_op_umin_4x8,
358    nir_op_umod,
359    nir_op_umul24,
360    nir_op_umul_2x32_64,
361    nir_op_umul_32x16,
362    nir_op_umul_high,
363    nir_op_umul_low,
364    nir_op_umul_unorm_4x8,
365    nir_op_unpack_32_2x16,
366    nir_op_unpack_32_2x16_split_x,
367    nir_op_unpack_32_2x16_split_y,
368    nir_op_unpack_32_4x8,
369    nir_op_unpack_64_2x32,
370    nir_op_unpack_64_2x32_split_x,
371    nir_op_unpack_64_2x32_split_y,
372    nir_op_unpack_64_4x16,
373    nir_op_unpack_half_2x16,
374    nir_op_unpack_half_2x16_flush_to_zero,
375    nir_op_unpack_half_2x16_split_x,
376    nir_op_unpack_half_2x16_split_x_flush_to_zero,
377    nir_op_unpack_half_2x16_split_y,
378    nir_op_unpack_half_2x16_split_y_flush_to_zero,
379    nir_op_unpack_snorm_2x16,
380    nir_op_unpack_snorm_4x8,
381    nir_op_unpack_unorm_2x16,
382    nir_op_unpack_unorm_4x8,
383    nir_op_urhadd,
384    nir_op_urol,
385    nir_op_uror,
386    nir_op_usadd_4x8,
387    nir_op_ushr,
388    nir_op_ussub_4x8,
389    nir_op_usub_borrow,
390    nir_op_usub_sat,
391    nir_op_vec16,
392    nir_op_vec2,
393    nir_op_vec3,
394    nir_op_vec4,
395    nir_op_vec8,
396    nir_last_opcode = nir_op_vec8,
397    nir_num_opcodes = nir_last_opcode + 1
398 } nir_op;
399 
400 #endif /* _NIR_OPCODES_ */
401