1b8e80941Smrg/* Copyright (C) 2014 Connor Abbott
2b8e80941Smrg *
3b8e80941Smrg * Permission is hereby granted, free of charge, to any person obtaining a
4b8e80941Smrg * copy of this software and associated documentation files (the "Software"),
5b8e80941Smrg * to deal in the Software without restriction, including without limitation
6b8e80941Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
7b8e80941Smrg * and/or sell copies of the Software, and to permit persons to whom the
8b8e80941Smrg * Software is furnished to do so, subject to the following conditions:
9b8e80941Smrg *
10b8e80941Smrg * The above copyright notice and this permission notice (including the next
11b8e80941Smrg * paragraph) shall be included in all copies or substantial portions of the
12b8e80941Smrg * Software.
13b8e80941Smrg *
14b8e80941Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15b8e80941Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16b8e80941Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17b8e80941Smrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18b8e80941Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19b8e80941Smrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20b8e80941Smrg * IN THE SOFTWARE.
21b8e80941Smrg *
22b8e80941Smrg * Authors:
23b8e80941Smrg *    Connor Abbott (cwabbott0@gmail.com)
24b8e80941Smrg */
25b8e80941Smrg
26b8e80941Smrg#ifndef _NIR_OPCODES_
27b8e80941Smrg#define _NIR_OPCODES_
28b8e80941Smrg
29b8e80941Smrg
30b8e80941Smrg
31b8e80941Smrgtypedef enum {
32b8e80941Smrg   nir_op_b2f16,
33b8e80941Smrg   nir_op_b2f32,
34b8e80941Smrg   nir_op_b2f64,
35b8e80941Smrg   nir_op_b2i1,
36b8e80941Smrg   nir_op_b2i16,
37b8e80941Smrg   nir_op_b2i32,
38b8e80941Smrg   nir_op_b2i64,
39b8e80941Smrg   nir_op_b2i8,
40b8e80941Smrg   nir_op_b32all_fequal2,
41b8e80941Smrg   nir_op_b32all_fequal3,
42b8e80941Smrg   nir_op_b32all_fequal4,
43b8e80941Smrg   nir_op_b32all_iequal2,
44b8e80941Smrg   nir_op_b32all_iequal3,
45b8e80941Smrg   nir_op_b32all_iequal4,
46b8e80941Smrg   nir_op_b32any_fnequal2,
47b8e80941Smrg   nir_op_b32any_fnequal3,
48b8e80941Smrg   nir_op_b32any_fnequal4,
49b8e80941Smrg   nir_op_b32any_inequal2,
50b8e80941Smrg   nir_op_b32any_inequal3,
51b8e80941Smrg   nir_op_b32any_inequal4,
52b8e80941Smrg   nir_op_b32csel,
53b8e80941Smrg   nir_op_ball_fequal2,
54b8e80941Smrg   nir_op_ball_fequal3,
55b8e80941Smrg   nir_op_ball_fequal4,
56b8e80941Smrg   nir_op_ball_iequal2,
57b8e80941Smrg   nir_op_ball_iequal3,
58b8e80941Smrg   nir_op_ball_iequal4,
59b8e80941Smrg   nir_op_bany_fnequal2,
60b8e80941Smrg   nir_op_bany_fnequal3,
61b8e80941Smrg   nir_op_bany_fnequal4,
62b8e80941Smrg   nir_op_bany_inequal2,
63b8e80941Smrg   nir_op_bany_inequal3,
64b8e80941Smrg   nir_op_bany_inequal4,
65b8e80941Smrg   nir_op_bcsel,
66b8e80941Smrg   nir_op_bfi,
67b8e80941Smrg   nir_op_bfm,
68b8e80941Smrg   nir_op_bit_count,
69b8e80941Smrg   nir_op_bitfield_insert,
70b8e80941Smrg   nir_op_bitfield_reverse,
71b8e80941Smrg   nir_op_cube_face_coord,
72b8e80941Smrg   nir_op_cube_face_index,
73b8e80941Smrg   nir_op_extract_i16,
74b8e80941Smrg   nir_op_extract_i8,
75b8e80941Smrg   nir_op_extract_u16,
76b8e80941Smrg   nir_op_extract_u8,
77b8e80941Smrg   nir_op_f2b1,
78b8e80941Smrg   nir_op_f2b32,
79b8e80941Smrg   nir_op_f2f16,
80b8e80941Smrg   nir_op_f2f16_rtne,
81b8e80941Smrg   nir_op_f2f16_rtz,
82b8e80941Smrg   nir_op_f2f32,
83b8e80941Smrg   nir_op_f2f64,
84b8e80941Smrg   nir_op_f2i1,
85b8e80941Smrg   nir_op_f2i16,
86b8e80941Smrg   nir_op_f2i32,
87b8e80941Smrg   nir_op_f2i64,
88b8e80941Smrg   nir_op_f2i8,
89b8e80941Smrg   nir_op_f2u1,
90b8e80941Smrg   nir_op_f2u16,
91b8e80941Smrg   nir_op_f2u32,
92b8e80941Smrg   nir_op_f2u64,
93b8e80941Smrg   nir_op_f2u8,
94b8e80941Smrg   nir_op_fabs,
95b8e80941Smrg   nir_op_fadd,
96b8e80941Smrg   nir_op_fall_equal2,
97b8e80941Smrg   nir_op_fall_equal3,
98b8e80941Smrg   nir_op_fall_equal4,
99b8e80941Smrg   nir_op_fand,
100b8e80941Smrg   nir_op_fany_nequal2,
101b8e80941Smrg   nir_op_fany_nequal3,
102b8e80941Smrg   nir_op_fany_nequal4,
103b8e80941Smrg   nir_op_fceil,
104b8e80941Smrg   nir_op_fcos,
105b8e80941Smrg   nir_op_fcsel,
106b8e80941Smrg   nir_op_fddx,
107b8e80941Smrg   nir_op_fddx_coarse,
108b8e80941Smrg   nir_op_fddx_fine,
109b8e80941Smrg   nir_op_fddy,
110b8e80941Smrg   nir_op_fddy_coarse,
111b8e80941Smrg   nir_op_fddy_fine,
112b8e80941Smrg   nir_op_fdiv,
113b8e80941Smrg   nir_op_fdot2,
114b8e80941Smrg   nir_op_fdot3,
115b8e80941Smrg   nir_op_fdot4,
116b8e80941Smrg   nir_op_fdot_replicated2,
117b8e80941Smrg   nir_op_fdot_replicated3,
118b8e80941Smrg   nir_op_fdot_replicated4,
119b8e80941Smrg   nir_op_fdph,
120b8e80941Smrg   nir_op_fdph_replicated,
121b8e80941Smrg   nir_op_feq,
122b8e80941Smrg   nir_op_feq32,
123b8e80941Smrg   nir_op_fexp2,
124b8e80941Smrg   nir_op_ffloor,
125b8e80941Smrg   nir_op_ffma,
126b8e80941Smrg   nir_op_ffract,
127b8e80941Smrg   nir_op_fge,
128b8e80941Smrg   nir_op_fge32,
129b8e80941Smrg   nir_op_find_lsb,
130b8e80941Smrg   nir_op_flog2,
131b8e80941Smrg   nir_op_flrp,
132b8e80941Smrg   nir_op_flt,
133b8e80941Smrg   nir_op_flt32,
134b8e80941Smrg   nir_op_fmax,
135b8e80941Smrg   nir_op_fmax3,
136b8e80941Smrg   nir_op_fmed3,
137b8e80941Smrg   nir_op_fmin,
138b8e80941Smrg   nir_op_fmin3,
139b8e80941Smrg   nir_op_fmod,
140b8e80941Smrg   nir_op_fmov,
141b8e80941Smrg   nir_op_fmul,
142b8e80941Smrg   nir_op_fne,
143b8e80941Smrg   nir_op_fne32,
144b8e80941Smrg   nir_op_fneg,
145b8e80941Smrg   nir_op_fnoise1_1,
146b8e80941Smrg   nir_op_fnoise1_2,
147b8e80941Smrg   nir_op_fnoise1_3,
148b8e80941Smrg   nir_op_fnoise1_4,
149b8e80941Smrg   nir_op_fnoise2_1,
150b8e80941Smrg   nir_op_fnoise2_2,
151b8e80941Smrg   nir_op_fnoise2_3,
152b8e80941Smrg   nir_op_fnoise2_4,
153b8e80941Smrg   nir_op_fnoise3_1,
154b8e80941Smrg   nir_op_fnoise3_2,
155b8e80941Smrg   nir_op_fnoise3_3,
156b8e80941Smrg   nir_op_fnoise3_4,
157b8e80941Smrg   nir_op_fnoise4_1,
158b8e80941Smrg   nir_op_fnoise4_2,
159b8e80941Smrg   nir_op_fnoise4_3,
160b8e80941Smrg   nir_op_fnoise4_4,
161b8e80941Smrg   nir_op_fnot,
162b8e80941Smrg   nir_op_for,
163b8e80941Smrg   nir_op_fpow,
164b8e80941Smrg   nir_op_fquantize2f16,
165b8e80941Smrg   nir_op_frcp,
166b8e80941Smrg   nir_op_frem,
167b8e80941Smrg   nir_op_frexp_exp,
168b8e80941Smrg   nir_op_frexp_sig,
169b8e80941Smrg   nir_op_fround_even,
170b8e80941Smrg   nir_op_frsq,
171b8e80941Smrg   nir_op_fsat,
172b8e80941Smrg   nir_op_fsign,
173b8e80941Smrg   nir_op_fsin,
174b8e80941Smrg   nir_op_fsqrt,
175b8e80941Smrg   nir_op_fsub,
176b8e80941Smrg   nir_op_ftrunc,
177b8e80941Smrg   nir_op_fxor,
178b8e80941Smrg   nir_op_i2b1,
179b8e80941Smrg   nir_op_i2b32,
180b8e80941Smrg   nir_op_i2f16,
181b8e80941Smrg   nir_op_i2f32,
182b8e80941Smrg   nir_op_i2f64,
183b8e80941Smrg   nir_op_i2i1,
184b8e80941Smrg   nir_op_i2i16,
185b8e80941Smrg   nir_op_i2i32,
186b8e80941Smrg   nir_op_i2i64,
187b8e80941Smrg   nir_op_i2i8,
188b8e80941Smrg   nir_op_iabs,
189b8e80941Smrg   nir_op_iadd,
190b8e80941Smrg   nir_op_iadd_sat,
191b8e80941Smrg   nir_op_iand,
192b8e80941Smrg   nir_op_ibfe,
193b8e80941Smrg   nir_op_ibitfield_extract,
194b8e80941Smrg   nir_op_idiv,
195b8e80941Smrg   nir_op_ieq,
196b8e80941Smrg   nir_op_ieq32,
197b8e80941Smrg   nir_op_ifind_msb,
198b8e80941Smrg   nir_op_ige,
199b8e80941Smrg   nir_op_ige32,
200b8e80941Smrg   nir_op_ihadd,
201b8e80941Smrg   nir_op_ilt,
202b8e80941Smrg   nir_op_ilt32,
203b8e80941Smrg   nir_op_imax,
204b8e80941Smrg   nir_op_imax3,
205b8e80941Smrg   nir_op_imed3,
206b8e80941Smrg   nir_op_imin,
207b8e80941Smrg   nir_op_imin3,
208b8e80941Smrg   nir_op_imod,
209b8e80941Smrg   nir_op_imov,
210b8e80941Smrg   nir_op_imul,
211b8e80941Smrg   nir_op_imul_2x32_64,
212b8e80941Smrg   nir_op_imul_high,
213b8e80941Smrg   nir_op_ine,
214b8e80941Smrg   nir_op_ine32,
215b8e80941Smrg   nir_op_ineg,
216b8e80941Smrg   nir_op_inot,
217b8e80941Smrg   nir_op_ior,
218b8e80941Smrg   nir_op_irem,
219b8e80941Smrg   nir_op_irhadd,
220b8e80941Smrg   nir_op_ishl,
221b8e80941Smrg   nir_op_ishr,
222b8e80941Smrg   nir_op_isign,
223b8e80941Smrg   nir_op_isub,
224b8e80941Smrg   nir_op_isub_sat,
225b8e80941Smrg   nir_op_ixor,
226b8e80941Smrg   nir_op_ldexp,
227b8e80941Smrg   nir_op_pack_32_2x16,
228b8e80941Smrg   nir_op_pack_32_2x16_split,
229b8e80941Smrg   nir_op_pack_64_2x32,
230b8e80941Smrg   nir_op_pack_64_2x32_split,
231b8e80941Smrg   nir_op_pack_64_4x16,
232b8e80941Smrg   nir_op_pack_half_2x16,
233b8e80941Smrg   nir_op_pack_half_2x16_split,
234b8e80941Smrg   nir_op_pack_snorm_2x16,
235b8e80941Smrg   nir_op_pack_snorm_4x8,
236b8e80941Smrg   nir_op_pack_unorm_2x16,
237b8e80941Smrg   nir_op_pack_unorm_4x8,
238b8e80941Smrg   nir_op_pack_uvec2_to_uint,
239b8e80941Smrg   nir_op_pack_uvec4_to_uint,
240b8e80941Smrg   nir_op_seq,
241b8e80941Smrg   nir_op_sge,
242b8e80941Smrg   nir_op_slt,
243b8e80941Smrg   nir_op_sne,
244b8e80941Smrg   nir_op_u2f16,
245b8e80941Smrg   nir_op_u2f32,
246b8e80941Smrg   nir_op_u2f64,
247b8e80941Smrg   nir_op_u2u1,
248b8e80941Smrg   nir_op_u2u16,
249b8e80941Smrg   nir_op_u2u32,
250b8e80941Smrg   nir_op_u2u64,
251b8e80941Smrg   nir_op_u2u8,
252b8e80941Smrg   nir_op_uadd_carry,
253b8e80941Smrg   nir_op_uadd_sat,
254b8e80941Smrg   nir_op_ubfe,
255b8e80941Smrg   nir_op_ubitfield_extract,
256b8e80941Smrg   nir_op_udiv,
257b8e80941Smrg   nir_op_ufind_msb,
258b8e80941Smrg   nir_op_uge,
259b8e80941Smrg   nir_op_uge32,
260b8e80941Smrg   nir_op_uhadd,
261b8e80941Smrg   nir_op_ult,
262b8e80941Smrg   nir_op_ult32,
263b8e80941Smrg   nir_op_umax,
264b8e80941Smrg   nir_op_umax3,
265b8e80941Smrg   nir_op_umax_4x8,
266b8e80941Smrg   nir_op_umed3,
267b8e80941Smrg   nir_op_umin,
268b8e80941Smrg   nir_op_umin3,
269b8e80941Smrg   nir_op_umin_4x8,
270b8e80941Smrg   nir_op_umod,
271b8e80941Smrg   nir_op_umul_2x32_64,
272b8e80941Smrg   nir_op_umul_high,
273b8e80941Smrg   nir_op_umul_unorm_4x8,
274b8e80941Smrg   nir_op_unpack_32_2x16,
275b8e80941Smrg   nir_op_unpack_32_2x16_split_x,
276b8e80941Smrg   nir_op_unpack_32_2x16_split_y,
277b8e80941Smrg   nir_op_unpack_64_2x32,
278b8e80941Smrg   nir_op_unpack_64_2x32_split_x,
279b8e80941Smrg   nir_op_unpack_64_2x32_split_y,
280b8e80941Smrg   nir_op_unpack_64_4x16,
281b8e80941Smrg   nir_op_unpack_half_2x16,
282b8e80941Smrg   nir_op_unpack_half_2x16_split_x,
283b8e80941Smrg   nir_op_unpack_half_2x16_split_y,
284b8e80941Smrg   nir_op_unpack_snorm_2x16,
285b8e80941Smrg   nir_op_unpack_snorm_4x8,
286b8e80941Smrg   nir_op_unpack_unorm_2x16,
287b8e80941Smrg   nir_op_unpack_unorm_4x8,
288b8e80941Smrg   nir_op_urhadd,
289b8e80941Smrg   nir_op_usadd_4x8,
290b8e80941Smrg   nir_op_ushr,
291b8e80941Smrg   nir_op_ussub_4x8,
292b8e80941Smrg   nir_op_usub_borrow,
293b8e80941Smrg   nir_op_usub_sat,
294b8e80941Smrg   nir_op_vec2,
295b8e80941Smrg   nir_op_vec3,
296b8e80941Smrg   nir_op_vec4,
297b8e80941Smrg   nir_last_opcode = nir_op_vec4,
298b8e80941Smrg   nir_num_opcodes = nir_last_opcode + 1
299b8e80941Smrg} nir_op;
300b8e80941Smrg
301b8e80941Smrg#endif /* _NIR_OPCODES_ */
302