1b8e80941Smrg/* Copyright (C) 2018 Red Hat 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 23b8e80941Smrg#ifndef _NIR_INTRINSICS_ 24b8e80941Smrg#define _NIR_INTRINSICS_ 25b8e80941Smrg 26b8e80941Smrg 27b8e80941Smrg 28b8e80941Smrgtypedef enum { 29b8e80941Smrg nir_intrinsic_atomic_counter_add, 30b8e80941Smrg nir_intrinsic_atomic_counter_add_deref, 31b8e80941Smrg nir_intrinsic_atomic_counter_and, 32b8e80941Smrg nir_intrinsic_atomic_counter_and_deref, 33b8e80941Smrg nir_intrinsic_atomic_counter_comp_swap, 34b8e80941Smrg nir_intrinsic_atomic_counter_comp_swap_deref, 35b8e80941Smrg nir_intrinsic_atomic_counter_exchange, 36b8e80941Smrg nir_intrinsic_atomic_counter_exchange_deref, 37b8e80941Smrg nir_intrinsic_atomic_counter_inc, 38b8e80941Smrg nir_intrinsic_atomic_counter_inc_deref, 39b8e80941Smrg nir_intrinsic_atomic_counter_max, 40b8e80941Smrg nir_intrinsic_atomic_counter_max_deref, 41b8e80941Smrg nir_intrinsic_atomic_counter_min, 42b8e80941Smrg nir_intrinsic_atomic_counter_min_deref, 43b8e80941Smrg nir_intrinsic_atomic_counter_or, 44b8e80941Smrg nir_intrinsic_atomic_counter_or_deref, 45b8e80941Smrg nir_intrinsic_atomic_counter_post_dec, 46b8e80941Smrg nir_intrinsic_atomic_counter_post_dec_deref, 47b8e80941Smrg nir_intrinsic_atomic_counter_pre_dec, 48b8e80941Smrg nir_intrinsic_atomic_counter_pre_dec_deref, 49b8e80941Smrg nir_intrinsic_atomic_counter_read, 50b8e80941Smrg nir_intrinsic_atomic_counter_read_deref, 51b8e80941Smrg nir_intrinsic_atomic_counter_xor, 52b8e80941Smrg nir_intrinsic_atomic_counter_xor_deref, 53b8e80941Smrg nir_intrinsic_ballot, 54b8e80941Smrg nir_intrinsic_ballot_bit_count_exclusive, 55b8e80941Smrg nir_intrinsic_ballot_bit_count_inclusive, 56b8e80941Smrg nir_intrinsic_ballot_bit_count_reduce, 57b8e80941Smrg nir_intrinsic_ballot_bitfield_extract, 58b8e80941Smrg nir_intrinsic_ballot_find_lsb, 59b8e80941Smrg nir_intrinsic_ballot_find_msb, 60b8e80941Smrg nir_intrinsic_barrier, 61b8e80941Smrg nir_intrinsic_begin_invocation_interlock, 62b8e80941Smrg nir_intrinsic_bindless_image_atomic_add, 63b8e80941Smrg nir_intrinsic_bindless_image_atomic_and, 64b8e80941Smrg nir_intrinsic_bindless_image_atomic_comp_swap, 65b8e80941Smrg nir_intrinsic_bindless_image_atomic_exchange, 66b8e80941Smrg nir_intrinsic_bindless_image_atomic_fadd, 67b8e80941Smrg nir_intrinsic_bindless_image_atomic_max, 68b8e80941Smrg nir_intrinsic_bindless_image_atomic_min, 69b8e80941Smrg nir_intrinsic_bindless_image_atomic_or, 70b8e80941Smrg nir_intrinsic_bindless_image_atomic_xor, 71b8e80941Smrg nir_intrinsic_bindless_image_load, 72b8e80941Smrg nir_intrinsic_bindless_image_load_raw_intel, 73b8e80941Smrg nir_intrinsic_bindless_image_samples, 74b8e80941Smrg nir_intrinsic_bindless_image_size, 75b8e80941Smrg nir_intrinsic_bindless_image_store, 76b8e80941Smrg nir_intrinsic_bindless_image_store_raw_intel, 77b8e80941Smrg nir_intrinsic_copy_deref, 78b8e80941Smrg nir_intrinsic_deref_atomic_add, 79b8e80941Smrg nir_intrinsic_deref_atomic_and, 80b8e80941Smrg nir_intrinsic_deref_atomic_comp_swap, 81b8e80941Smrg nir_intrinsic_deref_atomic_exchange, 82b8e80941Smrg nir_intrinsic_deref_atomic_fadd, 83b8e80941Smrg nir_intrinsic_deref_atomic_fcomp_swap, 84b8e80941Smrg nir_intrinsic_deref_atomic_fmax, 85b8e80941Smrg nir_intrinsic_deref_atomic_fmin, 86b8e80941Smrg nir_intrinsic_deref_atomic_imax, 87b8e80941Smrg nir_intrinsic_deref_atomic_imin, 88b8e80941Smrg nir_intrinsic_deref_atomic_or, 89b8e80941Smrg nir_intrinsic_deref_atomic_umax, 90b8e80941Smrg nir_intrinsic_deref_atomic_umin, 91b8e80941Smrg nir_intrinsic_deref_atomic_xor, 92b8e80941Smrg nir_intrinsic_deref_buffer_array_length, 93b8e80941Smrg nir_intrinsic_discard, 94b8e80941Smrg nir_intrinsic_discard_if, 95b8e80941Smrg nir_intrinsic_elect, 96b8e80941Smrg nir_intrinsic_emit_vertex, 97b8e80941Smrg nir_intrinsic_emit_vertex_with_counter, 98b8e80941Smrg nir_intrinsic_end_invocation_interlock, 99b8e80941Smrg nir_intrinsic_end_primitive, 100b8e80941Smrg nir_intrinsic_end_primitive_with_counter, 101b8e80941Smrg nir_intrinsic_exclusive_scan, 102b8e80941Smrg nir_intrinsic_first_invocation, 103b8e80941Smrg nir_intrinsic_get_buffer_size, 104b8e80941Smrg nir_intrinsic_global_atomic_add, 105b8e80941Smrg nir_intrinsic_global_atomic_and, 106b8e80941Smrg nir_intrinsic_global_atomic_comp_swap, 107b8e80941Smrg nir_intrinsic_global_atomic_exchange, 108b8e80941Smrg nir_intrinsic_global_atomic_fadd, 109b8e80941Smrg nir_intrinsic_global_atomic_fcomp_swap, 110b8e80941Smrg nir_intrinsic_global_atomic_fmax, 111b8e80941Smrg nir_intrinsic_global_atomic_fmin, 112b8e80941Smrg nir_intrinsic_global_atomic_imax, 113b8e80941Smrg nir_intrinsic_global_atomic_imin, 114b8e80941Smrg nir_intrinsic_global_atomic_or, 115b8e80941Smrg nir_intrinsic_global_atomic_umax, 116b8e80941Smrg nir_intrinsic_global_atomic_umin, 117b8e80941Smrg nir_intrinsic_global_atomic_xor, 118b8e80941Smrg nir_intrinsic_group_memory_barrier, 119b8e80941Smrg nir_intrinsic_image_atomic_add, 120b8e80941Smrg nir_intrinsic_image_atomic_and, 121b8e80941Smrg nir_intrinsic_image_atomic_comp_swap, 122b8e80941Smrg nir_intrinsic_image_atomic_exchange, 123b8e80941Smrg nir_intrinsic_image_atomic_fadd, 124b8e80941Smrg nir_intrinsic_image_atomic_max, 125b8e80941Smrg nir_intrinsic_image_atomic_min, 126b8e80941Smrg nir_intrinsic_image_atomic_or, 127b8e80941Smrg nir_intrinsic_image_atomic_xor, 128b8e80941Smrg nir_intrinsic_image_deref_atomic_add, 129b8e80941Smrg nir_intrinsic_image_deref_atomic_and, 130b8e80941Smrg nir_intrinsic_image_deref_atomic_comp_swap, 131b8e80941Smrg nir_intrinsic_image_deref_atomic_exchange, 132b8e80941Smrg nir_intrinsic_image_deref_atomic_fadd, 133b8e80941Smrg nir_intrinsic_image_deref_atomic_max, 134b8e80941Smrg nir_intrinsic_image_deref_atomic_min, 135b8e80941Smrg nir_intrinsic_image_deref_atomic_or, 136b8e80941Smrg nir_intrinsic_image_deref_atomic_xor, 137b8e80941Smrg nir_intrinsic_image_deref_load, 138b8e80941Smrg nir_intrinsic_image_deref_load_param_intel, 139b8e80941Smrg nir_intrinsic_image_deref_load_raw_intel, 140b8e80941Smrg nir_intrinsic_image_deref_samples, 141b8e80941Smrg nir_intrinsic_image_deref_size, 142b8e80941Smrg nir_intrinsic_image_deref_store, 143b8e80941Smrg nir_intrinsic_image_deref_store_raw_intel, 144b8e80941Smrg nir_intrinsic_image_load, 145b8e80941Smrg nir_intrinsic_image_load_raw_intel, 146b8e80941Smrg nir_intrinsic_image_samples, 147b8e80941Smrg nir_intrinsic_image_size, 148b8e80941Smrg nir_intrinsic_image_store, 149b8e80941Smrg nir_intrinsic_image_store_raw_intel, 150b8e80941Smrg nir_intrinsic_inclusive_scan, 151b8e80941Smrg nir_intrinsic_interp_deref_at_centroid, 152b8e80941Smrg nir_intrinsic_interp_deref_at_offset, 153b8e80941Smrg nir_intrinsic_interp_deref_at_sample, 154b8e80941Smrg nir_intrinsic_load_alpha_ref_float, 155b8e80941Smrg nir_intrinsic_load_barycentric_at_offset, 156b8e80941Smrg nir_intrinsic_load_barycentric_at_sample, 157b8e80941Smrg nir_intrinsic_load_barycentric_centroid, 158b8e80941Smrg nir_intrinsic_load_barycentric_pixel, 159b8e80941Smrg nir_intrinsic_load_barycentric_sample, 160b8e80941Smrg nir_intrinsic_load_base_instance, 161b8e80941Smrg nir_intrinsic_load_base_vertex, 162b8e80941Smrg nir_intrinsic_load_blend_const_color_a_float, 163b8e80941Smrg nir_intrinsic_load_blend_const_color_aaaa8888_unorm, 164b8e80941Smrg nir_intrinsic_load_blend_const_color_b_float, 165b8e80941Smrg nir_intrinsic_load_blend_const_color_g_float, 166b8e80941Smrg nir_intrinsic_load_blend_const_color_r_float, 167b8e80941Smrg nir_intrinsic_load_blend_const_color_rgba8888_unorm, 168b8e80941Smrg nir_intrinsic_load_constant, 169b8e80941Smrg nir_intrinsic_load_deref, 170b8e80941Smrg nir_intrinsic_load_draw_id, 171b8e80941Smrg nir_intrinsic_load_first_vertex, 172b8e80941Smrg nir_intrinsic_load_frag_coord, 173b8e80941Smrg nir_intrinsic_load_front_face, 174b8e80941Smrg nir_intrinsic_load_global, 175b8e80941Smrg nir_intrinsic_load_global_invocation_id, 176b8e80941Smrg nir_intrinsic_load_global_invocation_index, 177b8e80941Smrg nir_intrinsic_load_helper_invocation, 178b8e80941Smrg nir_intrinsic_load_input, 179b8e80941Smrg nir_intrinsic_load_instance_id, 180b8e80941Smrg nir_intrinsic_load_interpolated_input, 181b8e80941Smrg nir_intrinsic_load_invocation_id, 182b8e80941Smrg nir_intrinsic_load_is_indexed_draw, 183b8e80941Smrg nir_intrinsic_load_kernel_input, 184b8e80941Smrg nir_intrinsic_load_layer_id, 185b8e80941Smrg nir_intrinsic_load_local_group_size, 186b8e80941Smrg nir_intrinsic_load_local_invocation_id, 187b8e80941Smrg nir_intrinsic_load_local_invocation_index, 188b8e80941Smrg nir_intrinsic_load_num_subgroups, 189b8e80941Smrg nir_intrinsic_load_num_work_groups, 190b8e80941Smrg nir_intrinsic_load_output, 191b8e80941Smrg nir_intrinsic_load_param, 192b8e80941Smrg nir_intrinsic_load_patch_vertices_in, 193b8e80941Smrg nir_intrinsic_load_per_vertex_input, 194b8e80941Smrg nir_intrinsic_load_per_vertex_output, 195b8e80941Smrg nir_intrinsic_load_primitive_id, 196b8e80941Smrg nir_intrinsic_load_push_constant, 197b8e80941Smrg nir_intrinsic_load_sample_id, 198b8e80941Smrg nir_intrinsic_load_sample_id_no_per_sample, 199b8e80941Smrg nir_intrinsic_load_sample_mask_in, 200b8e80941Smrg nir_intrinsic_load_sample_pos, 201b8e80941Smrg nir_intrinsic_load_sample_pos_from_id, 202b8e80941Smrg nir_intrinsic_load_scratch, 203b8e80941Smrg nir_intrinsic_load_shared, 204b8e80941Smrg nir_intrinsic_load_size_ir3, 205b8e80941Smrg nir_intrinsic_load_ssbo, 206b8e80941Smrg nir_intrinsic_load_ssbo_ir3, 207b8e80941Smrg nir_intrinsic_load_subgroup_eq_mask, 208b8e80941Smrg nir_intrinsic_load_subgroup_ge_mask, 209b8e80941Smrg nir_intrinsic_load_subgroup_gt_mask, 210b8e80941Smrg nir_intrinsic_load_subgroup_id, 211b8e80941Smrg nir_intrinsic_load_subgroup_invocation, 212b8e80941Smrg nir_intrinsic_load_subgroup_le_mask, 213b8e80941Smrg nir_intrinsic_load_subgroup_lt_mask, 214b8e80941Smrg nir_intrinsic_load_subgroup_size, 215b8e80941Smrg nir_intrinsic_load_tess_coord, 216b8e80941Smrg nir_intrinsic_load_tess_level_inner, 217b8e80941Smrg nir_intrinsic_load_tess_level_outer, 218b8e80941Smrg nir_intrinsic_load_ubo, 219b8e80941Smrg nir_intrinsic_load_uniform, 220b8e80941Smrg nir_intrinsic_load_user_clip_plane, 221b8e80941Smrg nir_intrinsic_load_vertex_id, 222b8e80941Smrg nir_intrinsic_load_vertex_id_zero_base, 223b8e80941Smrg nir_intrinsic_load_view_index, 224b8e80941Smrg nir_intrinsic_load_viewport_offset, 225b8e80941Smrg nir_intrinsic_load_viewport_scale, 226b8e80941Smrg nir_intrinsic_load_viewport_x_scale, 227b8e80941Smrg nir_intrinsic_load_viewport_y_scale, 228b8e80941Smrg nir_intrinsic_load_viewport_z_offset, 229b8e80941Smrg nir_intrinsic_load_viewport_z_scale, 230b8e80941Smrg nir_intrinsic_load_vulkan_descriptor, 231b8e80941Smrg nir_intrinsic_load_work_dim, 232b8e80941Smrg nir_intrinsic_load_work_group_id, 233b8e80941Smrg nir_intrinsic_memory_barrier, 234b8e80941Smrg nir_intrinsic_memory_barrier_atomic_counter, 235b8e80941Smrg nir_intrinsic_memory_barrier_buffer, 236b8e80941Smrg nir_intrinsic_memory_barrier_image, 237b8e80941Smrg nir_intrinsic_memory_barrier_shared, 238b8e80941Smrg nir_intrinsic_nop, 239b8e80941Smrg nir_intrinsic_quad_broadcast, 240b8e80941Smrg nir_intrinsic_quad_swap_diagonal, 241b8e80941Smrg nir_intrinsic_quad_swap_horizontal, 242b8e80941Smrg nir_intrinsic_quad_swap_vertical, 243b8e80941Smrg nir_intrinsic_read_first_invocation, 244b8e80941Smrg nir_intrinsic_read_invocation, 245b8e80941Smrg nir_intrinsic_reduce, 246b8e80941Smrg nir_intrinsic_set_vertex_count, 247b8e80941Smrg nir_intrinsic_shader_clock, 248b8e80941Smrg nir_intrinsic_shared_atomic_add, 249b8e80941Smrg nir_intrinsic_shared_atomic_and, 250b8e80941Smrg nir_intrinsic_shared_atomic_comp_swap, 251b8e80941Smrg nir_intrinsic_shared_atomic_exchange, 252b8e80941Smrg nir_intrinsic_shared_atomic_fadd, 253b8e80941Smrg nir_intrinsic_shared_atomic_fcomp_swap, 254b8e80941Smrg nir_intrinsic_shared_atomic_fmax, 255b8e80941Smrg nir_intrinsic_shared_atomic_fmin, 256b8e80941Smrg nir_intrinsic_shared_atomic_imax, 257b8e80941Smrg nir_intrinsic_shared_atomic_imin, 258b8e80941Smrg nir_intrinsic_shared_atomic_or, 259b8e80941Smrg nir_intrinsic_shared_atomic_umax, 260b8e80941Smrg nir_intrinsic_shared_atomic_umin, 261b8e80941Smrg nir_intrinsic_shared_atomic_xor, 262b8e80941Smrg nir_intrinsic_shuffle, 263b8e80941Smrg nir_intrinsic_shuffle_down, 264b8e80941Smrg nir_intrinsic_shuffle_up, 265b8e80941Smrg nir_intrinsic_shuffle_xor, 266b8e80941Smrg nir_intrinsic_ssbo_atomic_add, 267b8e80941Smrg nir_intrinsic_ssbo_atomic_add_ir3, 268b8e80941Smrg nir_intrinsic_ssbo_atomic_and, 269b8e80941Smrg nir_intrinsic_ssbo_atomic_and_ir3, 270b8e80941Smrg nir_intrinsic_ssbo_atomic_comp_swap, 271b8e80941Smrg nir_intrinsic_ssbo_atomic_comp_swap_ir3, 272b8e80941Smrg nir_intrinsic_ssbo_atomic_exchange, 273b8e80941Smrg nir_intrinsic_ssbo_atomic_exchange_ir3, 274b8e80941Smrg nir_intrinsic_ssbo_atomic_fadd, 275b8e80941Smrg nir_intrinsic_ssbo_atomic_fcomp_swap, 276b8e80941Smrg nir_intrinsic_ssbo_atomic_fmax, 277b8e80941Smrg nir_intrinsic_ssbo_atomic_fmin, 278b8e80941Smrg nir_intrinsic_ssbo_atomic_imax, 279b8e80941Smrg nir_intrinsic_ssbo_atomic_imax_ir3, 280b8e80941Smrg nir_intrinsic_ssbo_atomic_imin, 281b8e80941Smrg nir_intrinsic_ssbo_atomic_imin_ir3, 282b8e80941Smrg nir_intrinsic_ssbo_atomic_or, 283b8e80941Smrg nir_intrinsic_ssbo_atomic_or_ir3, 284b8e80941Smrg nir_intrinsic_ssbo_atomic_umax, 285b8e80941Smrg nir_intrinsic_ssbo_atomic_umax_ir3, 286b8e80941Smrg nir_intrinsic_ssbo_atomic_umin, 287b8e80941Smrg nir_intrinsic_ssbo_atomic_umin_ir3, 288b8e80941Smrg nir_intrinsic_ssbo_atomic_xor, 289b8e80941Smrg nir_intrinsic_ssbo_atomic_xor_ir3, 290b8e80941Smrg nir_intrinsic_store_deref, 291b8e80941Smrg nir_intrinsic_store_global, 292b8e80941Smrg nir_intrinsic_store_output, 293b8e80941Smrg nir_intrinsic_store_per_vertex_output, 294b8e80941Smrg nir_intrinsic_store_scratch, 295b8e80941Smrg nir_intrinsic_store_shared, 296b8e80941Smrg nir_intrinsic_store_ssbo, 297b8e80941Smrg nir_intrinsic_store_ssbo_ir3, 298b8e80941Smrg nir_intrinsic_vote_all, 299b8e80941Smrg nir_intrinsic_vote_any, 300b8e80941Smrg nir_intrinsic_vote_feq, 301b8e80941Smrg nir_intrinsic_vote_ieq, 302b8e80941Smrg nir_intrinsic_vulkan_resource_index, 303b8e80941Smrg nir_intrinsic_vulkan_resource_reindex, 304b8e80941Smrg 305b8e80941Smrg nir_last_intrinsic = nir_intrinsic_vulkan_resource_reindex, 306b8e80941Smrg nir_num_intrinsics = nir_last_intrinsic + 1 307b8e80941Smrg} nir_intrinsic_op; 308b8e80941Smrg 309b8e80941Smrg#endif /* _NIR_INTRINSICS_ */