nir_opcodes.h revision b8e80941
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_b2f16,
33   nir_op_b2f32,
34   nir_op_b2f64,
35   nir_op_b2i1,
36   nir_op_b2i16,
37   nir_op_b2i32,
38   nir_op_b2i64,
39   nir_op_b2i8,
40   nir_op_b32all_fequal2,
41   nir_op_b32all_fequal3,
42   nir_op_b32all_fequal4,
43   nir_op_b32all_iequal2,
44   nir_op_b32all_iequal3,
45   nir_op_b32all_iequal4,
46   nir_op_b32any_fnequal2,
47   nir_op_b32any_fnequal3,
48   nir_op_b32any_fnequal4,
49   nir_op_b32any_inequal2,
50   nir_op_b32any_inequal3,
51   nir_op_b32any_inequal4,
52   nir_op_b32csel,
53   nir_op_ball_fequal2,
54   nir_op_ball_fequal3,
55   nir_op_ball_fequal4,
56   nir_op_ball_iequal2,
57   nir_op_ball_iequal3,
58   nir_op_ball_iequal4,
59   nir_op_bany_fnequal2,
60   nir_op_bany_fnequal3,
61   nir_op_bany_fnequal4,
62   nir_op_bany_inequal2,
63   nir_op_bany_inequal3,
64   nir_op_bany_inequal4,
65   nir_op_bcsel,
66   nir_op_bfi,
67   nir_op_bfm,
68   nir_op_bit_count,
69   nir_op_bitfield_insert,
70   nir_op_bitfield_reverse,
71   nir_op_cube_face_coord,
72   nir_op_cube_face_index,
73   nir_op_extract_i16,
74   nir_op_extract_i8,
75   nir_op_extract_u16,
76   nir_op_extract_u8,
77   nir_op_f2b1,
78   nir_op_f2b32,
79   nir_op_f2f16,
80   nir_op_f2f16_rtne,
81   nir_op_f2f16_rtz,
82   nir_op_f2f32,
83   nir_op_f2f64,
84   nir_op_f2i1,
85   nir_op_f2i16,
86   nir_op_f2i32,
87   nir_op_f2i64,
88   nir_op_f2i8,
89   nir_op_f2u1,
90   nir_op_f2u16,
91   nir_op_f2u32,
92   nir_op_f2u64,
93   nir_op_f2u8,
94   nir_op_fabs,
95   nir_op_fadd,
96   nir_op_fall_equal2,
97   nir_op_fall_equal3,
98   nir_op_fall_equal4,
99   nir_op_fand,
100   nir_op_fany_nequal2,
101   nir_op_fany_nequal3,
102   nir_op_fany_nequal4,
103   nir_op_fceil,
104   nir_op_fcos,
105   nir_op_fcsel,
106   nir_op_fddx,
107   nir_op_fddx_coarse,
108   nir_op_fddx_fine,
109   nir_op_fddy,
110   nir_op_fddy_coarse,
111   nir_op_fddy_fine,
112   nir_op_fdiv,
113   nir_op_fdot2,
114   nir_op_fdot3,
115   nir_op_fdot4,
116   nir_op_fdot_replicated2,
117   nir_op_fdot_replicated3,
118   nir_op_fdot_replicated4,
119   nir_op_fdph,
120   nir_op_fdph_replicated,
121   nir_op_feq,
122   nir_op_feq32,
123   nir_op_fexp2,
124   nir_op_ffloor,
125   nir_op_ffma,
126   nir_op_ffract,
127   nir_op_fge,
128   nir_op_fge32,
129   nir_op_find_lsb,
130   nir_op_flog2,
131   nir_op_flrp,
132   nir_op_flt,
133   nir_op_flt32,
134   nir_op_fmax,
135   nir_op_fmax3,
136   nir_op_fmed3,
137   nir_op_fmin,
138   nir_op_fmin3,
139   nir_op_fmod,
140   nir_op_fmov,
141   nir_op_fmul,
142   nir_op_fne,
143   nir_op_fne32,
144   nir_op_fneg,
145   nir_op_fnoise1_1,
146   nir_op_fnoise1_2,
147   nir_op_fnoise1_3,
148   nir_op_fnoise1_4,
149   nir_op_fnoise2_1,
150   nir_op_fnoise2_2,
151   nir_op_fnoise2_3,
152   nir_op_fnoise2_4,
153   nir_op_fnoise3_1,
154   nir_op_fnoise3_2,
155   nir_op_fnoise3_3,
156   nir_op_fnoise3_4,
157   nir_op_fnoise4_1,
158   nir_op_fnoise4_2,
159   nir_op_fnoise4_3,
160   nir_op_fnoise4_4,
161   nir_op_fnot,
162   nir_op_for,
163   nir_op_fpow,
164   nir_op_fquantize2f16,
165   nir_op_frcp,
166   nir_op_frem,
167   nir_op_frexp_exp,
168   nir_op_frexp_sig,
169   nir_op_fround_even,
170   nir_op_frsq,
171   nir_op_fsat,
172   nir_op_fsign,
173   nir_op_fsin,
174   nir_op_fsqrt,
175   nir_op_fsub,
176   nir_op_ftrunc,
177   nir_op_fxor,
178   nir_op_i2b1,
179   nir_op_i2b32,
180   nir_op_i2f16,
181   nir_op_i2f32,
182   nir_op_i2f64,
183   nir_op_i2i1,
184   nir_op_i2i16,
185   nir_op_i2i32,
186   nir_op_i2i64,
187   nir_op_i2i8,
188   nir_op_iabs,
189   nir_op_iadd,
190   nir_op_iadd_sat,
191   nir_op_iand,
192   nir_op_ibfe,
193   nir_op_ibitfield_extract,
194   nir_op_idiv,
195   nir_op_ieq,
196   nir_op_ieq32,
197   nir_op_ifind_msb,
198   nir_op_ige,
199   nir_op_ige32,
200   nir_op_ihadd,
201   nir_op_ilt,
202   nir_op_ilt32,
203   nir_op_imax,
204   nir_op_imax3,
205   nir_op_imed3,
206   nir_op_imin,
207   nir_op_imin3,
208   nir_op_imod,
209   nir_op_imov,
210   nir_op_imul,
211   nir_op_imul_2x32_64,
212   nir_op_imul_high,
213   nir_op_ine,
214   nir_op_ine32,
215   nir_op_ineg,
216   nir_op_inot,
217   nir_op_ior,
218   nir_op_irem,
219   nir_op_irhadd,
220   nir_op_ishl,
221   nir_op_ishr,
222   nir_op_isign,
223   nir_op_isub,
224   nir_op_isub_sat,
225   nir_op_ixor,
226   nir_op_ldexp,
227   nir_op_pack_32_2x16,
228   nir_op_pack_32_2x16_split,
229   nir_op_pack_64_2x32,
230   nir_op_pack_64_2x32_split,
231   nir_op_pack_64_4x16,
232   nir_op_pack_half_2x16,
233   nir_op_pack_half_2x16_split,
234   nir_op_pack_snorm_2x16,
235   nir_op_pack_snorm_4x8,
236   nir_op_pack_unorm_2x16,
237   nir_op_pack_unorm_4x8,
238   nir_op_pack_uvec2_to_uint,
239   nir_op_pack_uvec4_to_uint,
240   nir_op_seq,
241   nir_op_sge,
242   nir_op_slt,
243   nir_op_sne,
244   nir_op_u2f16,
245   nir_op_u2f32,
246   nir_op_u2f64,
247   nir_op_u2u1,
248   nir_op_u2u16,
249   nir_op_u2u32,
250   nir_op_u2u64,
251   nir_op_u2u8,
252   nir_op_uadd_carry,
253   nir_op_uadd_sat,
254   nir_op_ubfe,
255   nir_op_ubitfield_extract,
256   nir_op_udiv,
257   nir_op_ufind_msb,
258   nir_op_uge,
259   nir_op_uge32,
260   nir_op_uhadd,
261   nir_op_ult,
262   nir_op_ult32,
263   nir_op_umax,
264   nir_op_umax3,
265   nir_op_umax_4x8,
266   nir_op_umed3,
267   nir_op_umin,
268   nir_op_umin3,
269   nir_op_umin_4x8,
270   nir_op_umod,
271   nir_op_umul_2x32_64,
272   nir_op_umul_high,
273   nir_op_umul_unorm_4x8,
274   nir_op_unpack_32_2x16,
275   nir_op_unpack_32_2x16_split_x,
276   nir_op_unpack_32_2x16_split_y,
277   nir_op_unpack_64_2x32,
278   nir_op_unpack_64_2x32_split_x,
279   nir_op_unpack_64_2x32_split_y,
280   nir_op_unpack_64_4x16,
281   nir_op_unpack_half_2x16,
282   nir_op_unpack_half_2x16_split_x,
283   nir_op_unpack_half_2x16_split_y,
284   nir_op_unpack_snorm_2x16,
285   nir_op_unpack_snorm_4x8,
286   nir_op_unpack_unorm_2x16,
287   nir_op_unpack_unorm_4x8,
288   nir_op_urhadd,
289   nir_op_usadd_4x8,
290   nir_op_ushr,
291   nir_op_ussub_4x8,
292   nir_op_usub_borrow,
293   nir_op_usub_sat,
294   nir_op_vec2,
295   nir_op_vec3,
296   nir_op_vec4,
297   nir_last_opcode = nir_op_vec4,
298   nir_num_opcodes = nir_last_opcode + 1
299} nir_op;
300
301#endif /* _NIR_OPCODES_ */
302