nir_intrinsics.h revision 96c5ddc4
1/* Copyright (C) 2018 Red Hat
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
23#ifndef _NIR_INTRINSICS_
24#define _NIR_INTRINSICS_
25
26
27
28typedef enum {
29   nir_intrinsic_accept_ray_intersection,
30   nir_intrinsic_addr_mode_is,
31   nir_intrinsic_alloc_vertices_and_primitives_amd,
32   nir_intrinsic_atomic_counter_add,
33   nir_intrinsic_atomic_counter_add_deref,
34   nir_intrinsic_atomic_counter_and,
35   nir_intrinsic_atomic_counter_and_deref,
36   nir_intrinsic_atomic_counter_comp_swap,
37   nir_intrinsic_atomic_counter_comp_swap_deref,
38   nir_intrinsic_atomic_counter_exchange,
39   nir_intrinsic_atomic_counter_exchange_deref,
40   nir_intrinsic_atomic_counter_inc,
41   nir_intrinsic_atomic_counter_inc_deref,
42   nir_intrinsic_atomic_counter_max,
43   nir_intrinsic_atomic_counter_max_deref,
44   nir_intrinsic_atomic_counter_min,
45   nir_intrinsic_atomic_counter_min_deref,
46   nir_intrinsic_atomic_counter_or,
47   nir_intrinsic_atomic_counter_or_deref,
48   nir_intrinsic_atomic_counter_post_dec,
49   nir_intrinsic_atomic_counter_post_dec_deref,
50   nir_intrinsic_atomic_counter_pre_dec,
51   nir_intrinsic_atomic_counter_pre_dec_deref,
52   nir_intrinsic_atomic_counter_read,
53   nir_intrinsic_atomic_counter_read_deref,
54   nir_intrinsic_atomic_counter_xor,
55   nir_intrinsic_atomic_counter_xor_deref,
56   nir_intrinsic_ballot,
57   nir_intrinsic_ballot_bit_count_exclusive,
58   nir_intrinsic_ballot_bit_count_inclusive,
59   nir_intrinsic_ballot_bit_count_reduce,
60   nir_intrinsic_ballot_bitfield_extract,
61   nir_intrinsic_ballot_find_lsb,
62   nir_intrinsic_ballot_find_msb,
63   nir_intrinsic_begin_invocation_interlock,
64   nir_intrinsic_bindless_image_atomic_add,
65   nir_intrinsic_bindless_image_atomic_and,
66   nir_intrinsic_bindless_image_atomic_comp_swap,
67   nir_intrinsic_bindless_image_atomic_dec_wrap,
68   nir_intrinsic_bindless_image_atomic_exchange,
69   nir_intrinsic_bindless_image_atomic_fadd,
70   nir_intrinsic_bindless_image_atomic_fmax,
71   nir_intrinsic_bindless_image_atomic_fmin,
72   nir_intrinsic_bindless_image_atomic_imax,
73   nir_intrinsic_bindless_image_atomic_imin,
74   nir_intrinsic_bindless_image_atomic_inc_wrap,
75   nir_intrinsic_bindless_image_atomic_or,
76   nir_intrinsic_bindless_image_atomic_umax,
77   nir_intrinsic_bindless_image_atomic_umin,
78   nir_intrinsic_bindless_image_atomic_xor,
79   nir_intrinsic_bindless_image_format,
80   nir_intrinsic_bindless_image_load,
81   nir_intrinsic_bindless_image_load_raw_intel,
82   nir_intrinsic_bindless_image_order,
83   nir_intrinsic_bindless_image_samples,
84   nir_intrinsic_bindless_image_size,
85   nir_intrinsic_bindless_image_sparse_load,
86   nir_intrinsic_bindless_image_store,
87   nir_intrinsic_bindless_image_store_raw_intel,
88   nir_intrinsic_bindless_resource_ir3,
89   nir_intrinsic_btd_retire_intel,
90   nir_intrinsic_btd_spawn_intel,
91   nir_intrinsic_btd_stack_push_intel,
92   nir_intrinsic_bvh64_intersect_ray_amd,
93   nir_intrinsic_byte_permute_amd,
94   nir_intrinsic_cond_end_ir3,
95   nir_intrinsic_control_barrier,
96   nir_intrinsic_convert_alu_types,
97   nir_intrinsic_copy_deref,
98   nir_intrinsic_demote,
99   nir_intrinsic_demote_if,
100   nir_intrinsic_deref_atomic_add,
101   nir_intrinsic_deref_atomic_and,
102   nir_intrinsic_deref_atomic_comp_swap,
103   nir_intrinsic_deref_atomic_exchange,
104   nir_intrinsic_deref_atomic_fadd,
105   nir_intrinsic_deref_atomic_fcomp_swap,
106   nir_intrinsic_deref_atomic_fmax,
107   nir_intrinsic_deref_atomic_fmin,
108   nir_intrinsic_deref_atomic_imax,
109   nir_intrinsic_deref_atomic_imin,
110   nir_intrinsic_deref_atomic_or,
111   nir_intrinsic_deref_atomic_umax,
112   nir_intrinsic_deref_atomic_umin,
113   nir_intrinsic_deref_atomic_xor,
114   nir_intrinsic_deref_buffer_array_length,
115   nir_intrinsic_deref_mode_is,
116   nir_intrinsic_discard,
117   nir_intrinsic_discard_if,
118   nir_intrinsic_elect,
119   nir_intrinsic_emit_vertex,
120   nir_intrinsic_emit_vertex_with_counter,
121   nir_intrinsic_end_invocation_interlock,
122   nir_intrinsic_end_patch_ir3,
123   nir_intrinsic_end_primitive,
124   nir_intrinsic_end_primitive_with_counter,
125   nir_intrinsic_exclusive_scan,
126   nir_intrinsic_execute_callable,
127   nir_intrinsic_export_primitive_amd,
128   nir_intrinsic_export_vertex_amd,
129   nir_intrinsic_first_invocation,
130   nir_intrinsic_gds_atomic_add_amd,
131   nir_intrinsic_get_ssbo_size,
132   nir_intrinsic_get_ubo_size,
133   nir_intrinsic_global_atomic_add,
134   nir_intrinsic_global_atomic_and,
135   nir_intrinsic_global_atomic_comp_swap,
136   nir_intrinsic_global_atomic_exchange,
137   nir_intrinsic_global_atomic_fadd,
138   nir_intrinsic_global_atomic_fcomp_swap,
139   nir_intrinsic_global_atomic_fmax,
140   nir_intrinsic_global_atomic_fmin,
141   nir_intrinsic_global_atomic_imax,
142   nir_intrinsic_global_atomic_imin,
143   nir_intrinsic_global_atomic_or,
144   nir_intrinsic_global_atomic_umax,
145   nir_intrinsic_global_atomic_umin,
146   nir_intrinsic_global_atomic_xor,
147   nir_intrinsic_group_memory_barrier,
148   nir_intrinsic_has_input_primitive_amd,
149   nir_intrinsic_has_input_vertex_amd,
150   nir_intrinsic_ignore_ray_intersection,
151   nir_intrinsic_image_atomic_add,
152   nir_intrinsic_image_atomic_and,
153   nir_intrinsic_image_atomic_comp_swap,
154   nir_intrinsic_image_atomic_dec_wrap,
155   nir_intrinsic_image_atomic_exchange,
156   nir_intrinsic_image_atomic_fadd,
157   nir_intrinsic_image_atomic_fmax,
158   nir_intrinsic_image_atomic_fmin,
159   nir_intrinsic_image_atomic_imax,
160   nir_intrinsic_image_atomic_imin,
161   nir_intrinsic_image_atomic_inc_wrap,
162   nir_intrinsic_image_atomic_or,
163   nir_intrinsic_image_atomic_umax,
164   nir_intrinsic_image_atomic_umin,
165   nir_intrinsic_image_atomic_xor,
166   nir_intrinsic_image_deref_atomic_add,
167   nir_intrinsic_image_deref_atomic_and,
168   nir_intrinsic_image_deref_atomic_comp_swap,
169   nir_intrinsic_image_deref_atomic_dec_wrap,
170   nir_intrinsic_image_deref_atomic_exchange,
171   nir_intrinsic_image_deref_atomic_fadd,
172   nir_intrinsic_image_deref_atomic_fmax,
173   nir_intrinsic_image_deref_atomic_fmin,
174   nir_intrinsic_image_deref_atomic_imax,
175   nir_intrinsic_image_deref_atomic_imin,
176   nir_intrinsic_image_deref_atomic_inc_wrap,
177   nir_intrinsic_image_deref_atomic_or,
178   nir_intrinsic_image_deref_atomic_umax,
179   nir_intrinsic_image_deref_atomic_umin,
180   nir_intrinsic_image_deref_atomic_xor,
181   nir_intrinsic_image_deref_format,
182   nir_intrinsic_image_deref_load,
183   nir_intrinsic_image_deref_load_param_intel,
184   nir_intrinsic_image_deref_load_raw_intel,
185   nir_intrinsic_image_deref_order,
186   nir_intrinsic_image_deref_samples,
187   nir_intrinsic_image_deref_size,
188   nir_intrinsic_image_deref_sparse_load,
189   nir_intrinsic_image_deref_store,
190   nir_intrinsic_image_deref_store_raw_intel,
191   nir_intrinsic_image_format,
192   nir_intrinsic_image_load,
193   nir_intrinsic_image_load_raw_intel,
194   nir_intrinsic_image_order,
195   nir_intrinsic_image_samples,
196   nir_intrinsic_image_size,
197   nir_intrinsic_image_sparse_load,
198   nir_intrinsic_image_store,
199   nir_intrinsic_image_store_raw_intel,
200   nir_intrinsic_inclusive_scan,
201   nir_intrinsic_interp_deref_at_centroid,
202   nir_intrinsic_interp_deref_at_offset,
203   nir_intrinsic_interp_deref_at_sample,
204   nir_intrinsic_interp_deref_at_vertex,
205   nir_intrinsic_is_helper_invocation,
206   nir_intrinsic_is_sparse_texels_resident,
207   nir_intrinsic_lane_permute_16_amd,
208   nir_intrinsic_last_invocation,
209   nir_intrinsic_load_aa_line_width,
210   nir_intrinsic_load_back_face_agx,
211   nir_intrinsic_load_barycentric_at_offset,
212   nir_intrinsic_load_barycentric_at_sample,
213   nir_intrinsic_load_barycentric_centroid,
214   nir_intrinsic_load_barycentric_model,
215   nir_intrinsic_load_barycentric_pixel,
216   nir_intrinsic_load_barycentric_sample,
217   nir_intrinsic_load_base_global_invocation_id,
218   nir_intrinsic_load_base_instance,
219   nir_intrinsic_load_base_vertex,
220   nir_intrinsic_load_base_workgroup_id,
221   nir_intrinsic_load_blend_const_color_a_float,
222   nir_intrinsic_load_blend_const_color_aaaa8888_unorm,
223   nir_intrinsic_load_blend_const_color_b_float,
224   nir_intrinsic_load_blend_const_color_g_float,
225   nir_intrinsic_load_blend_const_color_r_float,
226   nir_intrinsic_load_blend_const_color_rgba,
227   nir_intrinsic_load_blend_const_color_rgba8888_unorm,
228   nir_intrinsic_load_btd_dss_id_intel,
229   nir_intrinsic_load_btd_global_arg_addr_intel,
230   nir_intrinsic_load_btd_local_arg_addr_intel,
231   nir_intrinsic_load_btd_resume_sbt_addr_intel,
232   nir_intrinsic_load_btd_stack_id_intel,
233   nir_intrinsic_load_buffer_amd,
234   nir_intrinsic_load_callable_sbt_addr_intel,
235   nir_intrinsic_load_callable_sbt_stride_intel,
236   nir_intrinsic_load_color0,
237   nir_intrinsic_load_color1,
238   nir_intrinsic_load_constant,
239   nir_intrinsic_load_constant_base_ptr,
240   nir_intrinsic_load_cull_any_enabled_amd,
241   nir_intrinsic_load_cull_back_face_enabled_amd,
242   nir_intrinsic_load_cull_ccw_amd,
243   nir_intrinsic_load_cull_front_face_enabled_amd,
244   nir_intrinsic_load_cull_small_prim_precision_amd,
245   nir_intrinsic_load_cull_small_primitives_enabled_amd,
246   nir_intrinsic_load_deref,
247   nir_intrinsic_load_deref_block_intel,
248   nir_intrinsic_load_desc_set_address_intel,
249   nir_intrinsic_load_draw_id,
250   nir_intrinsic_load_fb_layers_v3d,
251   nir_intrinsic_load_first_vertex,
252   nir_intrinsic_load_frag_coord,
253   nir_intrinsic_load_frag_shading_rate,
254   nir_intrinsic_load_front_face,
255   nir_intrinsic_load_fs_input_interp_deltas,
256   nir_intrinsic_load_global,
257   nir_intrinsic_load_global_block_intel,
258   nir_intrinsic_load_global_const_block_intel,
259   nir_intrinsic_load_global_constant,
260   nir_intrinsic_load_global_constant_bounded,
261   nir_intrinsic_load_global_constant_offset,
262   nir_intrinsic_load_global_invocation_id,
263   nir_intrinsic_load_global_invocation_id_zero_base,
264   nir_intrinsic_load_global_invocation_index,
265   nir_intrinsic_load_global_ir3,
266   nir_intrinsic_load_gs_header_ir3,
267   nir_intrinsic_load_gs_vertex_offset_amd,
268   nir_intrinsic_load_helper_invocation,
269   nir_intrinsic_load_hs_patch_stride_ir3,
270   nir_intrinsic_load_initial_edgeflags_amd,
271   nir_intrinsic_load_input,
272   nir_intrinsic_load_input_vertex,
273   nir_intrinsic_load_instance_id,
274   nir_intrinsic_load_interpolated_input,
275   nir_intrinsic_load_intersection_opaque_amd,
276   nir_intrinsic_load_invocation_id,
277   nir_intrinsic_load_is_indexed_draw,
278   nir_intrinsic_load_kernel_input,
279   nir_intrinsic_load_layer_id,
280   nir_intrinsic_load_leaf_opaque_intel,
281   nir_intrinsic_load_leaf_procedural_intel,
282   nir_intrinsic_load_line_coord,
283   nir_intrinsic_load_line_width,
284   nir_intrinsic_load_local_invocation_id,
285   nir_intrinsic_load_local_invocation_index,
286   nir_intrinsic_load_local_shared_r600,
287   nir_intrinsic_load_num_subgroups,
288   nir_intrinsic_load_num_workgroups,
289   nir_intrinsic_load_output,
290   nir_intrinsic_load_packed_passthrough_primitive_amd,
291   nir_intrinsic_load_param,
292   nir_intrinsic_load_patch_vertices_in,
293   nir_intrinsic_load_per_primitive_output,
294   nir_intrinsic_load_per_vertex_input,
295   nir_intrinsic_load_per_vertex_output,
296   nir_intrinsic_load_point_coord,
297   nir_intrinsic_load_primitive_id,
298   nir_intrinsic_load_primitive_location_ir3,
299   nir_intrinsic_load_printf_buffer_address,
300   nir_intrinsic_load_ptr_dxil,
301   nir_intrinsic_load_push_constant,
302   nir_intrinsic_load_raw_output_pan,
303   nir_intrinsic_load_ray_base_mem_addr_intel,
304   nir_intrinsic_load_ray_flags,
305   nir_intrinsic_load_ray_geometry_index,
306   nir_intrinsic_load_ray_hit_kind,
307   nir_intrinsic_load_ray_hit_sbt_addr_intel,
308   nir_intrinsic_load_ray_hit_sbt_stride_intel,
309   nir_intrinsic_load_ray_hw_stack_size_intel,
310   nir_intrinsic_load_ray_instance_custom_index,
311   nir_intrinsic_load_ray_launch_id,
312   nir_intrinsic_load_ray_launch_size,
313   nir_intrinsic_load_ray_miss_sbt_addr_intel,
314   nir_intrinsic_load_ray_miss_sbt_stride_intel,
315   nir_intrinsic_load_ray_num_dss_rt_stacks_intel,
316   nir_intrinsic_load_ray_object_direction,
317   nir_intrinsic_load_ray_object_origin,
318   nir_intrinsic_load_ray_object_to_world,
319   nir_intrinsic_load_ray_sw_stack_size_intel,
320   nir_intrinsic_load_ray_t_max,
321   nir_intrinsic_load_ray_t_min,
322   nir_intrinsic_load_ray_world_direction,
323   nir_intrinsic_load_ray_world_origin,
324   nir_intrinsic_load_ray_world_to_object,
325   nir_intrinsic_load_rel_patch_id_ir3,
326   nir_intrinsic_load_reloc_const_intel,
327   nir_intrinsic_load_ring_es2gs_offset_amd,
328   nir_intrinsic_load_ring_esgs_amd,
329   nir_intrinsic_load_ring_tess_factors_amd,
330   nir_intrinsic_load_ring_tess_factors_offset_amd,
331   nir_intrinsic_load_ring_tess_offchip_amd,
332   nir_intrinsic_load_ring_tess_offchip_offset_amd,
333   nir_intrinsic_load_rt_arg_scratch_offset_amd,
334   nir_intrinsic_load_sample_id,
335   nir_intrinsic_load_sample_id_no_per_sample,
336   nir_intrinsic_load_sample_mask_in,
337   nir_intrinsic_load_sample_pos,
338   nir_intrinsic_load_sample_pos_from_id,
339   nir_intrinsic_load_sample_positions_pan,
340   nir_intrinsic_load_sampler_lod_parameters_pan,
341   nir_intrinsic_load_sbt_amd,
342   nir_intrinsic_load_scratch,
343   nir_intrinsic_load_scratch_base_ptr,
344   nir_intrinsic_load_scratch_dxil,
345   nir_intrinsic_load_shader_query_enabled_amd,
346   nir_intrinsic_load_shader_record_ptr,
347   nir_intrinsic_load_shared,
348   nir_intrinsic_load_shared_base_ptr,
349   nir_intrinsic_load_shared_block_intel,
350   nir_intrinsic_load_shared_dxil,
351   nir_intrinsic_load_shared_ir3,
352   nir_intrinsic_load_simd_width_intel,
353   nir_intrinsic_load_size_ir3,
354   nir_intrinsic_load_ssbo,
355   nir_intrinsic_load_ssbo_address,
356   nir_intrinsic_load_ssbo_block_intel,
357   nir_intrinsic_load_ssbo_ir3,
358   nir_intrinsic_load_subgroup_eq_mask,
359   nir_intrinsic_load_subgroup_ge_mask,
360   nir_intrinsic_load_subgroup_gt_mask,
361   nir_intrinsic_load_subgroup_id,
362   nir_intrinsic_load_subgroup_id_shift_ir3,
363   nir_intrinsic_load_subgroup_invocation,
364   nir_intrinsic_load_subgroup_le_mask,
365   nir_intrinsic_load_subgroup_lt_mask,
366   nir_intrinsic_load_subgroup_size,
367   nir_intrinsic_load_tcs_header_ir3,
368   nir_intrinsic_load_tcs_in_param_base_r600,
369   nir_intrinsic_load_tcs_num_patches_amd,
370   nir_intrinsic_load_tcs_out_param_base_r600,
371   nir_intrinsic_load_tcs_rel_patch_id_r600,
372   nir_intrinsic_load_tcs_tess_factor_base_r600,
373   nir_intrinsic_load_tess_coord,
374   nir_intrinsic_load_tess_coord_r600,
375   nir_intrinsic_load_tess_factor_base_ir3,
376   nir_intrinsic_load_tess_level_inner,
377   nir_intrinsic_load_tess_level_inner_default,
378   nir_intrinsic_load_tess_level_outer,
379   nir_intrinsic_load_tess_level_outer_default,
380   nir_intrinsic_load_tess_param_base_ir3,
381   nir_intrinsic_load_tess_rel_patch_id_amd,
382   nir_intrinsic_load_texture_rect_scaling,
383   nir_intrinsic_load_tlb_color_v3d,
384   nir_intrinsic_load_ubo,
385   nir_intrinsic_load_ubo_dxil,
386   nir_intrinsic_load_ubo_vec4,
387   nir_intrinsic_load_uniform,
388   nir_intrinsic_load_user_clip_plane,
389   nir_intrinsic_load_user_data_amd,
390   nir_intrinsic_load_vertex_id,
391   nir_intrinsic_load_vertex_id_zero_base,
392   nir_intrinsic_load_view_index,
393   nir_intrinsic_load_viewport_offset,
394   nir_intrinsic_load_viewport_scale,
395   nir_intrinsic_load_viewport_x_offset,
396   nir_intrinsic_load_viewport_x_scale,
397   nir_intrinsic_load_viewport_y_offset,
398   nir_intrinsic_load_viewport_y_scale,
399   nir_intrinsic_load_viewport_z_offset,
400   nir_intrinsic_load_viewport_z_scale,
401   nir_intrinsic_load_vs_primitive_stride_ir3,
402   nir_intrinsic_load_vs_vertex_stride_ir3,
403   nir_intrinsic_load_vulkan_descriptor,
404   nir_intrinsic_load_work_dim,
405   nir_intrinsic_load_workgroup_id,
406   nir_intrinsic_load_workgroup_id_zero_base,
407   nir_intrinsic_load_workgroup_num_input_primitives_amd,
408   nir_intrinsic_load_workgroup_num_input_vertices_amd,
409   nir_intrinsic_load_workgroup_size,
410   nir_intrinsic_masked_swizzle_amd,
411   nir_intrinsic_mbcnt_amd,
412   nir_intrinsic_memcpy_deref,
413   nir_intrinsic_memory_barrier,
414   nir_intrinsic_memory_barrier_atomic_counter,
415   nir_intrinsic_memory_barrier_buffer,
416   nir_intrinsic_memory_barrier_image,
417   nir_intrinsic_memory_barrier_shared,
418   nir_intrinsic_memory_barrier_tcs_patch,
419   nir_intrinsic_nop,
420   nir_intrinsic_overwrite_tes_arguments_amd,
421   nir_intrinsic_overwrite_vs_arguments_amd,
422   nir_intrinsic_printf,
423   nir_intrinsic_quad_broadcast,
424   nir_intrinsic_quad_swap_diagonal,
425   nir_intrinsic_quad_swap_horizontal,
426   nir_intrinsic_quad_swap_vertical,
427   nir_intrinsic_quad_swizzle_amd,
428   nir_intrinsic_read_first_invocation,
429   nir_intrinsic_read_invocation,
430   nir_intrinsic_read_invocation_cond_ir3,
431   nir_intrinsic_reduce,
432   nir_intrinsic_report_ray_intersection,
433   nir_intrinsic_rt_execute_callable,
434   nir_intrinsic_rt_resume,
435   nir_intrinsic_rt_return_amd,
436   nir_intrinsic_rt_trace_ray,
437   nir_intrinsic_scoped_barrier,
438   nir_intrinsic_set_vertex_and_primitive_count,
439   nir_intrinsic_shader_clock,
440   nir_intrinsic_shared_atomic_add,
441   nir_intrinsic_shared_atomic_add_dxil,
442   nir_intrinsic_shared_atomic_and,
443   nir_intrinsic_shared_atomic_and_dxil,
444   nir_intrinsic_shared_atomic_comp_swap,
445   nir_intrinsic_shared_atomic_comp_swap_dxil,
446   nir_intrinsic_shared_atomic_exchange,
447   nir_intrinsic_shared_atomic_exchange_dxil,
448   nir_intrinsic_shared_atomic_fadd,
449   nir_intrinsic_shared_atomic_fcomp_swap,
450   nir_intrinsic_shared_atomic_fmax,
451   nir_intrinsic_shared_atomic_fmin,
452   nir_intrinsic_shared_atomic_imax,
453   nir_intrinsic_shared_atomic_imax_dxil,
454   nir_intrinsic_shared_atomic_imin,
455   nir_intrinsic_shared_atomic_imin_dxil,
456   nir_intrinsic_shared_atomic_or,
457   nir_intrinsic_shared_atomic_or_dxil,
458   nir_intrinsic_shared_atomic_umax,
459   nir_intrinsic_shared_atomic_umax_dxil,
460   nir_intrinsic_shared_atomic_umin,
461   nir_intrinsic_shared_atomic_umin_dxil,
462   nir_intrinsic_shared_atomic_xor,
463   nir_intrinsic_shared_atomic_xor_dxil,
464   nir_intrinsic_shuffle,
465   nir_intrinsic_shuffle_down,
466   nir_intrinsic_shuffle_up,
467   nir_intrinsic_shuffle_xor,
468   nir_intrinsic_sparse_residency_code_and,
469   nir_intrinsic_ssbo_atomic_add,
470   nir_intrinsic_ssbo_atomic_add_ir3,
471   nir_intrinsic_ssbo_atomic_and,
472   nir_intrinsic_ssbo_atomic_and_ir3,
473   nir_intrinsic_ssbo_atomic_comp_swap,
474   nir_intrinsic_ssbo_atomic_comp_swap_ir3,
475   nir_intrinsic_ssbo_atomic_exchange,
476   nir_intrinsic_ssbo_atomic_exchange_ir3,
477   nir_intrinsic_ssbo_atomic_fadd,
478   nir_intrinsic_ssbo_atomic_fcomp_swap,
479   nir_intrinsic_ssbo_atomic_fmax,
480   nir_intrinsic_ssbo_atomic_fmin,
481   nir_intrinsic_ssbo_atomic_imax,
482   nir_intrinsic_ssbo_atomic_imax_ir3,
483   nir_intrinsic_ssbo_atomic_imin,
484   nir_intrinsic_ssbo_atomic_imin_ir3,
485   nir_intrinsic_ssbo_atomic_or,
486   nir_intrinsic_ssbo_atomic_or_ir3,
487   nir_intrinsic_ssbo_atomic_umax,
488   nir_intrinsic_ssbo_atomic_umax_ir3,
489   nir_intrinsic_ssbo_atomic_umin,
490   nir_intrinsic_ssbo_atomic_umin_ir3,
491   nir_intrinsic_ssbo_atomic_xor,
492   nir_intrinsic_ssbo_atomic_xor_ir3,
493   nir_intrinsic_store_buffer_amd,
494   nir_intrinsic_store_combined_output_pan,
495   nir_intrinsic_store_deref,
496   nir_intrinsic_store_deref_block_intel,
497   nir_intrinsic_store_global,
498   nir_intrinsic_store_global_block_intel,
499   nir_intrinsic_store_global_ir3,
500   nir_intrinsic_store_local_shared_r600,
501   nir_intrinsic_store_output,
502   nir_intrinsic_store_per_primitive_output,
503   nir_intrinsic_store_per_vertex_output,
504   nir_intrinsic_store_raw_output_pan,
505   nir_intrinsic_store_scratch,
506   nir_intrinsic_store_scratch_dxil,
507   nir_intrinsic_store_shared,
508   nir_intrinsic_store_shared_block_intel,
509   nir_intrinsic_store_shared_dxil,
510   nir_intrinsic_store_shared_ir3,
511   nir_intrinsic_store_shared_masked_dxil,
512   nir_intrinsic_store_ssbo,
513   nir_intrinsic_store_ssbo_block_intel,
514   nir_intrinsic_store_ssbo_ir3,
515   nir_intrinsic_store_ssbo_masked_dxil,
516   nir_intrinsic_store_tf_r600,
517   nir_intrinsic_store_tlb_sample_color_v3d,
518   nir_intrinsic_terminate,
519   nir_intrinsic_terminate_if,
520   nir_intrinsic_terminate_ray,
521   nir_intrinsic_trace_ray,
522   nir_intrinsic_trace_ray_commit_intel,
523   nir_intrinsic_trace_ray_continue_intel,
524   nir_intrinsic_trace_ray_initial_intel,
525   nir_intrinsic_vote_all,
526   nir_intrinsic_vote_any,
527   nir_intrinsic_vote_feq,
528   nir_intrinsic_vote_ieq,
529   nir_intrinsic_vulkan_resource_index,
530   nir_intrinsic_vulkan_resource_reindex,
531   nir_intrinsic_write_invocation_amd,
532
533   nir_last_intrinsic = nir_intrinsic_write_invocation_amd,
534   nir_num_intrinsics = nir_last_intrinsic + 1
535} nir_intrinsic_op;
536
537typedef enum {
538   NIR_INTRINSIC_BASE,
539   NIR_INTRINSIC_WRITE_MASK,
540   NIR_INTRINSIC_STREAM_ID,
541   NIR_INTRINSIC_UCP_ID,
542   NIR_INTRINSIC_RANGE_BASE,
543   NIR_INTRINSIC_RANGE,
544   NIR_INTRINSIC_DESC_SET,
545   NIR_INTRINSIC_BINDING,
546   NIR_INTRINSIC_COMPONENT,
547   NIR_INTRINSIC_COLUMN,
548   NIR_INTRINSIC_INTERP_MODE,
549   NIR_INTRINSIC_REDUCTION_OP,
550   NIR_INTRINSIC_CLUSTER_SIZE,
551   NIR_INTRINSIC_PARAM_IDX,
552   NIR_INTRINSIC_IMAGE_DIM,
553   NIR_INTRINSIC_IMAGE_ARRAY,
554   NIR_INTRINSIC_FORMAT,
555   NIR_INTRINSIC_ACCESS,
556   NIR_INTRINSIC_CALL_IDX,
557   NIR_INTRINSIC_STACK_SIZE,
558   NIR_INTRINSIC_ALIGN_MUL,
559   NIR_INTRINSIC_ALIGN_OFFSET,
560   NIR_INTRINSIC_DESC_TYPE,
561   NIR_INTRINSIC_SRC_TYPE,
562   NIR_INTRINSIC_DEST_TYPE,
563   NIR_INTRINSIC_SWIZZLE_MASK,
564   NIR_INTRINSIC_IS_SWIZZLED,
565   NIR_INTRINSIC_SLC_AMD,
566   NIR_INTRINSIC_DST_ACCESS,
567   NIR_INTRINSIC_SRC_ACCESS,
568   NIR_INTRINSIC_DRIVER_LOCATION,
569   NIR_INTRINSIC_MEMORY_SEMANTICS,
570   NIR_INTRINSIC_MEMORY_MODES,
571   NIR_INTRINSIC_MEMORY_SCOPE,
572   NIR_INTRINSIC_EXECUTION_SCOPE,
573   NIR_INTRINSIC_IO_SEMANTICS,
574   NIR_INTRINSIC_ROUNDING_MODE,
575   NIR_INTRINSIC_SATURATE,
576   NIR_INTRINSIC_NUM_INDEX_FLAGS,
577} nir_intrinsic_index_flag;
578
579extern const char *nir_intrinsic_index_names[NIR_INTRINSIC_NUM_INDEX_FLAGS];
580
581#endif /* _NIR_INTRINSICS_ */