nir_opcodes.h revision 96c5ddc4
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
31typedef 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_fequal5,
38   nir_op_b16all_fequal8,
39   nir_op_b16all_iequal16,
40   nir_op_b16all_iequal2,
41   nir_op_b16all_iequal3,
42   nir_op_b16all_iequal4,
43   nir_op_b16all_iequal5,
44   nir_op_b16all_iequal8,
45   nir_op_b16any_fnequal16,
46   nir_op_b16any_fnequal2,
47   nir_op_b16any_fnequal3,
48   nir_op_b16any_fnequal4,
49   nir_op_b16any_fnequal5,
50   nir_op_b16any_fnequal8,
51   nir_op_b16any_inequal16,
52   nir_op_b16any_inequal2,
53   nir_op_b16any_inequal3,
54   nir_op_b16any_inequal4,
55   nir_op_b16any_inequal5,
56   nir_op_b16any_inequal8,
57   nir_op_b16csel,
58   nir_op_b2b1,
59   nir_op_b2b16,
60   nir_op_b2b32,
61   nir_op_b2b8,
62   nir_op_b2f16,
63   nir_op_b2f32,
64   nir_op_b2f64,
65   nir_op_b2i1,
66   nir_op_b2i16,
67   nir_op_b2i32,
68   nir_op_b2i64,
69   nir_op_b2i8,
70   nir_op_b32all_fequal16,
71   nir_op_b32all_fequal2,
72   nir_op_b32all_fequal3,
73   nir_op_b32all_fequal4,
74   nir_op_b32all_fequal5,
75   nir_op_b32all_fequal8,
76   nir_op_b32all_iequal16,
77   nir_op_b32all_iequal2,
78   nir_op_b32all_iequal3,
79   nir_op_b32all_iequal4,
80   nir_op_b32all_iequal5,
81   nir_op_b32all_iequal8,
82   nir_op_b32any_fnequal16,
83   nir_op_b32any_fnequal2,
84   nir_op_b32any_fnequal3,
85   nir_op_b32any_fnequal4,
86   nir_op_b32any_fnequal5,
87   nir_op_b32any_fnequal8,
88   nir_op_b32any_inequal16,
89   nir_op_b32any_inequal2,
90   nir_op_b32any_inequal3,
91   nir_op_b32any_inequal4,
92   nir_op_b32any_inequal5,
93   nir_op_b32any_inequal8,
94   nir_op_b32csel,
95   nir_op_b8all_fequal16,
96   nir_op_b8all_fequal2,
97   nir_op_b8all_fequal3,
98   nir_op_b8all_fequal4,
99   nir_op_b8all_fequal5,
100   nir_op_b8all_fequal8,
101   nir_op_b8all_iequal16,
102   nir_op_b8all_iequal2,
103   nir_op_b8all_iequal3,
104   nir_op_b8all_iequal4,
105   nir_op_b8all_iequal5,
106   nir_op_b8all_iequal8,
107   nir_op_b8any_fnequal16,
108   nir_op_b8any_fnequal2,
109   nir_op_b8any_fnequal3,
110   nir_op_b8any_fnequal4,
111   nir_op_b8any_fnequal5,
112   nir_op_b8any_fnequal8,
113   nir_op_b8any_inequal16,
114   nir_op_b8any_inequal2,
115   nir_op_b8any_inequal3,
116   nir_op_b8any_inequal4,
117   nir_op_b8any_inequal5,
118   nir_op_b8any_inequal8,
119   nir_op_b8csel,
120   nir_op_ball_fequal16,
121   nir_op_ball_fequal2,
122   nir_op_ball_fequal3,
123   nir_op_ball_fequal4,
124   nir_op_ball_fequal5,
125   nir_op_ball_fequal8,
126   nir_op_ball_iequal16,
127   nir_op_ball_iequal2,
128   nir_op_ball_iequal3,
129   nir_op_ball_iequal4,
130   nir_op_ball_iequal5,
131   nir_op_ball_iequal8,
132   nir_op_bany_fnequal16,
133   nir_op_bany_fnequal2,
134   nir_op_bany_fnequal3,
135   nir_op_bany_fnequal4,
136   nir_op_bany_fnequal5,
137   nir_op_bany_fnequal8,
138   nir_op_bany_inequal16,
139   nir_op_bany_inequal2,
140   nir_op_bany_inequal3,
141   nir_op_bany_inequal4,
142   nir_op_bany_inequal5,
143   nir_op_bany_inequal8,
144   nir_op_bcsel,
145   nir_op_bfi,
146   nir_op_bfm,
147   nir_op_bit_count,
148   nir_op_bitfield_insert,
149   nir_op_bitfield_reverse,
150   nir_op_bitfield_select,
151   nir_op_cube_face_coord_amd,
152   nir_op_cube_face_index_amd,
153   nir_op_cube_r600,
154   nir_op_extract_i16,
155   nir_op_extract_i8,
156   nir_op_extract_u16,
157   nir_op_extract_u8,
158   nir_op_f2b1,
159   nir_op_f2b16,
160   nir_op_f2b32,
161   nir_op_f2b8,
162   nir_op_f2f16,
163   nir_op_f2f16_rtne,
164   nir_op_f2f16_rtz,
165   nir_op_f2f32,
166   nir_op_f2f64,
167   nir_op_f2fmp,
168   nir_op_f2i1,
169   nir_op_f2i16,
170   nir_op_f2i32,
171   nir_op_f2i64,
172   nir_op_f2i8,
173   nir_op_f2imp,
174   nir_op_f2u1,
175   nir_op_f2u16,
176   nir_op_f2u32,
177   nir_op_f2u64,
178   nir_op_f2u8,
179   nir_op_f2ump,
180   nir_op_fabs,
181   nir_op_fadd,
182   nir_op_fall_equal16,
183   nir_op_fall_equal2,
184   nir_op_fall_equal3,
185   nir_op_fall_equal4,
186   nir_op_fall_equal5,
187   nir_op_fall_equal8,
188   nir_op_fany_nequal16,
189   nir_op_fany_nequal2,
190   nir_op_fany_nequal3,
191   nir_op_fany_nequal4,
192   nir_op_fany_nequal5,
193   nir_op_fany_nequal8,
194   nir_op_fceil,
195   nir_op_fclamp_pos_mali,
196   nir_op_fcos,
197   nir_op_fcos_r600,
198   nir_op_fcsel,
199   nir_op_fcsel_ge,
200   nir_op_fcsel_gt,
201   nir_op_fddx,
202   nir_op_fddx_coarse,
203   nir_op_fddx_fine,
204   nir_op_fddx_must_abs_mali,
205   nir_op_fddy,
206   nir_op_fddy_coarse,
207   nir_op_fddy_fine,
208   nir_op_fddy_must_abs_mali,
209   nir_op_fdiv,
210   nir_op_fdot16,
211   nir_op_fdot16_replicated,
212   nir_op_fdot2,
213   nir_op_fdot2_replicated,
214   nir_op_fdot3,
215   nir_op_fdot3_replicated,
216   nir_op_fdot4,
217   nir_op_fdot4_replicated,
218   nir_op_fdot5,
219   nir_op_fdot5_replicated,
220   nir_op_fdot8,
221   nir_op_fdot8_replicated,
222   nir_op_fdph,
223   nir_op_fdph_replicated,
224   nir_op_feq,
225   nir_op_feq16,
226   nir_op_feq32,
227   nir_op_feq8,
228   nir_op_fexp2,
229   nir_op_ffloor,
230   nir_op_ffma,
231   nir_op_ffract,
232   nir_op_fge,
233   nir_op_fge16,
234   nir_op_fge32,
235   nir_op_fge8,
236   nir_op_find_lsb,
237   nir_op_fisfinite,
238   nir_op_fisfinite32,
239   nir_op_fisnormal,
240   nir_op_flog2,
241   nir_op_flrp,
242   nir_op_flt,
243   nir_op_flt16,
244   nir_op_flt32,
245   nir_op_flt8,
246   nir_op_fmax,
247   nir_op_fmin,
248   nir_op_fmod,
249   nir_op_fmul,
250   nir_op_fneg,
251   nir_op_fneu,
252   nir_op_fneu16,
253   nir_op_fneu32,
254   nir_op_fneu8,
255   nir_op_fpow,
256   nir_op_fquantize2f16,
257   nir_op_frcp,
258   nir_op_frem,
259   nir_op_frexp_exp,
260   nir_op_frexp_sig,
261   nir_op_fround_even,
262   nir_op_frsq,
263   nir_op_fsat,
264   nir_op_fsat_signed_mali,
265   nir_op_fsign,
266   nir_op_fsin,
267   nir_op_fsin_agx,
268   nir_op_fsin_r600,
269   nir_op_fsqrt,
270   nir_op_fsub,
271   nir_op_fsum2,
272   nir_op_fsum3,
273   nir_op_fsum4,
274   nir_op_ftrunc,
275   nir_op_i2b1,
276   nir_op_i2b16,
277   nir_op_i2b32,
278   nir_op_i2b8,
279   nir_op_i2f16,
280   nir_op_i2f32,
281   nir_op_i2f64,
282   nir_op_i2fmp,
283   nir_op_i2i1,
284   nir_op_i2i16,
285   nir_op_i2i32,
286   nir_op_i2i64,
287   nir_op_i2i8,
288   nir_op_i2imp,
289   nir_op_i32csel_ge,
290   nir_op_i32csel_gt,
291   nir_op_iabs,
292   nir_op_iadd,
293   nir_op_iadd3,
294   nir_op_iadd_sat,
295   nir_op_iand,
296   nir_op_ibfe,
297   nir_op_ibitfield_extract,
298   nir_op_idiv,
299   nir_op_ieq,
300   nir_op_ieq16,
301   nir_op_ieq32,
302   nir_op_ieq8,
303   nir_op_ifind_msb,
304   nir_op_ifind_msb_rev,
305   nir_op_ige,
306   nir_op_ige16,
307   nir_op_ige32,
308   nir_op_ige8,
309   nir_op_ihadd,
310   nir_op_ilt,
311   nir_op_ilt16,
312   nir_op_ilt32,
313   nir_op_ilt8,
314   nir_op_imad24_ir3,
315   nir_op_imadsh_mix16,
316   nir_op_imax,
317   nir_op_imin,
318   nir_op_imod,
319   nir_op_imul,
320   nir_op_imul24,
321   nir_op_imul24_relaxed,
322   nir_op_imul_2x32_64,
323   nir_op_imul_32x16,
324   nir_op_imul_high,
325   nir_op_ine,
326   nir_op_ine16,
327   nir_op_ine32,
328   nir_op_ine8,
329   nir_op_ineg,
330   nir_op_inot,
331   nir_op_insert_u16,
332   nir_op_insert_u8,
333   nir_op_ior,
334   nir_op_irem,
335   nir_op_irhadd,
336   nir_op_ishl,
337   nir_op_ishr,
338   nir_op_isign,
339   nir_op_isub,
340   nir_op_isub_sat,
341   nir_op_ixor,
342   nir_op_ldexp,
343   nir_op_mov,
344   nir_op_pack_32_2x16,
345   nir_op_pack_32_2x16_split,
346   nir_op_pack_32_4x8,
347   nir_op_pack_32_4x8_split,
348   nir_op_pack_64_2x32,
349   nir_op_pack_64_2x32_split,
350   nir_op_pack_64_4x16,
351   nir_op_pack_double_2x32_dxil,
352   nir_op_pack_half_2x16,
353   nir_op_pack_half_2x16_split,
354   nir_op_pack_snorm_2x16,
355   nir_op_pack_snorm_4x8,
356   nir_op_pack_unorm_2x16,
357   nir_op_pack_unorm_4x8,
358   nir_op_pack_uvec2_to_uint,
359   nir_op_pack_uvec4_to_uint,
360   nir_op_sad_u8x4,
361   nir_op_sdot_2x16_iadd,
362   nir_op_sdot_2x16_iadd_sat,
363   nir_op_sdot_4x8_iadd,
364   nir_op_sdot_4x8_iadd_sat,
365   nir_op_seq,
366   nir_op_sge,
367   nir_op_slt,
368   nir_op_sne,
369   nir_op_sudot_4x8_iadd,
370   nir_op_sudot_4x8_iadd_sat,
371   nir_op_u2f16,
372   nir_op_u2f32,
373   nir_op_u2f64,
374   nir_op_u2fmp,
375   nir_op_u2u1,
376   nir_op_u2u16,
377   nir_op_u2u32,
378   nir_op_u2u64,
379   nir_op_u2u8,
380   nir_op_uabs_isub,
381   nir_op_uabs_usub,
382   nir_op_uadd_carry,
383   nir_op_uadd_sat,
384   nir_op_ubfe,
385   nir_op_ubitfield_extract,
386   nir_op_uclz,
387   nir_op_udiv,
388   nir_op_udot_2x16_uadd,
389   nir_op_udot_2x16_uadd_sat,
390   nir_op_udot_4x8_uadd,
391   nir_op_udot_4x8_uadd_sat,
392   nir_op_ufind_msb,
393   nir_op_ufind_msb_rev,
394   nir_op_uge,
395   nir_op_uge16,
396   nir_op_uge32,
397   nir_op_uge8,
398   nir_op_uhadd,
399   nir_op_ult,
400   nir_op_ult16,
401   nir_op_ult32,
402   nir_op_ult8,
403   nir_op_umad24,
404   nir_op_umad24_relaxed,
405   nir_op_umax,
406   nir_op_umax_4x8_vc4,
407   nir_op_umin,
408   nir_op_umin_4x8_vc4,
409   nir_op_umod,
410   nir_op_umul24,
411   nir_op_umul24_relaxed,
412   nir_op_umul_2x32_64,
413   nir_op_umul_32x16,
414   nir_op_umul_high,
415   nir_op_umul_low,
416   nir_op_umul_unorm_4x8_vc4,
417   nir_op_unpack_32_2x16,
418   nir_op_unpack_32_2x16_split_x,
419   nir_op_unpack_32_2x16_split_y,
420   nir_op_unpack_32_4x8,
421   nir_op_unpack_64_2x32,
422   nir_op_unpack_64_2x32_split_x,
423   nir_op_unpack_64_2x32_split_y,
424   nir_op_unpack_64_4x16,
425   nir_op_unpack_double_2x32_dxil,
426   nir_op_unpack_half_2x16,
427   nir_op_unpack_half_2x16_flush_to_zero,
428   nir_op_unpack_half_2x16_split_x,
429   nir_op_unpack_half_2x16_split_x_flush_to_zero,
430   nir_op_unpack_half_2x16_split_y,
431   nir_op_unpack_half_2x16_split_y_flush_to_zero,
432   nir_op_unpack_snorm_2x16,
433   nir_op_unpack_snorm_4x8,
434   nir_op_unpack_unorm_2x16,
435   nir_op_unpack_unorm_4x8,
436   nir_op_urhadd,
437   nir_op_urol,
438   nir_op_uror,
439   nir_op_usadd_4x8_vc4,
440   nir_op_ushr,
441   nir_op_ussub_4x8_vc4,
442   nir_op_usub_borrow,
443   nir_op_usub_sat,
444   nir_op_vec16,
445   nir_op_vec2,
446   nir_op_vec3,
447   nir_op_vec4,
448   nir_op_vec5,
449   nir_op_vec8,
450   nir_last_opcode = nir_op_vec8,
451   nir_num_opcodes = nir_last_opcode + 1
452} nir_op;
453
454#endif /* _NIR_OPCODES_ */
455